一种微服务架构下数据初始化方法及系统与流程

文档序号:23068684发布日期:2020-11-25 18:47阅读:247来源:国知局
一种微服务架构下数据初始化方法及系统与流程

本发明属于软件技术开发领域,特别是涉及一种微服务架构下数据初始化系统以及一种微服务架构下数据初始化方法。



背景技术:

本发明主要基于两个方面的背景,一是现今微服务形式的软件架构的流行;二是大部分软件架构都有数据库中数据的初始化需求。

目前,大部分软件架构都具有数据库中数据的初始化需求,需要按照预先设计的结构将预置的一些数据写入数据库,比如默认角色,默认用户,菜单结构以及其他方面的业务或者系统数据。另一方面,由于微服务不同于以往的软件架构,会使用多个数据库进行数据的存储,并且微服务的优势之一就是服务之间相互解耦,这种解耦我们希望在数据初始化方面也是解耦的。

目前没有流行的微服务体系下数据库初始化的解决方案,目前常见的解决方式一种是每个服务都编写sql脚本在安装时候完成这项任务,这种方式的缺陷在于微服务的部署过程中sql执行顺序的不确定性导致跨服务数据依赖的初始化变得很棘手;另一种方式是整个系统编写一个或者多个统一的sql脚本在安装时候按照顺序执行,这种方式的缺陷在于这样在数据库初始化脚本的编写上不是解耦的,并且所有服务的开发团队来共同维护这些脚本,增加沟通和开发成本。因此针对以上问题,提供一种微服务架构下数据初始化方法及系统以解决以上问题具有重要意义。



技术实现要素:

本发明提供了一种微服务架构下数据初始化方法及系统,能实现跨服务数据复杂的相互依赖的场景下也能高效的完成初始化并且编写的数据可以分散于各自的服务而不需要一起编写和执行。除此之外本方案还提供通用的初始数据接口以兼容多种数据来源。

为解决上述技术问题,本发明是通过以下技术方案实现的:

本发明的一种微服务架构下数据初始化系统,包括:

管理服务、sdk、提供数据或者处理数据的其他微服务体系下的服务组成;

其中,所述管理服务是本系统的核心,负责与sdk连接收集需要进行初始化的数据,解析这些初始化数据的依赖关系,下发满足依赖的数据初始化指令到sdk,存储指令执行结果;

其中,所述sdk是管理服务与提供数据或者处理数据的其他微服务体系下的服务之间沟通的桥梁,由提供数据或者处理数据的其他微服务体系下的服务在开发时集成并且具有数据库或者其他数据存储位置的访问能力,负责在提供数据或者处理数据的其他微服务体系下的服务启动时收集并且汇报需要初始化的数据到管理服务,并且在从管理服务器的时候初始化指令到达时进行执行和汇报执行结果;

提供数据或者处理数据的其他微服务体系下的服务需要在开发时集成sdk,并且根据业务需求需要从任意可访问的数据来源收集和转换数据为管理服务可识别的格式并且通过sdk上报到管理服务。

一种微服务架构下数据初始化方法,包括初始化数据提供服务、管理服务以及初始化数据处理服务;

所述初始化数据提供服务以及初始化数据处理服务均是嵌入了sdk的提供数据或者处理数据的其它微服务体系下的服务,根据业务需求,可以配置为只是初始数据提供服务,只是初始数据处理服务,既是初始数据提供服务也是初始数据处理服务;

所述初始化数据采用种子数据提供服务,包括如下步骤:

p1、手工添加的种子数据以xml(extensiblemarkuplanguage,可扩展标记语言)的形式提供;

p2、通过服务自身代码自动生成的数据,如接口权限数据;

p3、可扩展的数据提供形式,由服务实现sdk中的接口,接口内执行返回数据;

所述管理服务采用监听新的服务实例的启动时执行,包括如下步骤:

s1、种子数据提供服务实例启动后,从种子数据提供服务中拉取所有的种子数据;

s2、将种子数据,按来源服务拆分数据,拆分后的数据按内容生成hash校验码,使用来源服务,hash校验码做惟一性校验,如果校验与旧版本不一致,则存储到数据库中,存储此数据的表名为:service_seeddata,字段有:

0)数据uuidid;

1)来源服务source_service;

2)md5码checksum;

3)拆分后的数据data_json;

s3、将分割后的种子数据按照记录拆分,更新到data_external表中,表结构如下:

0)记录uuidid;

1)关联数据iddata_id;

2)外部引用idexternal_id;

3)目标服务target_service;

3)实际数据data_json;

4)处理状态process_status等待依赖,处理完成,等待删除;

s4、进行n次数据处理直到处理数据标记为0,步骤如下:

1)查询出未处理完成的记录,按照目标服务分组;

2)处理每条记录的引用如果已经满足则替换引用为真实数据,未满足则先跳过,每个引用的替换使处理数据标记+1;

3)按照目标服务的分组发送请求让每个服务处理这些数据,并且回写这些数据(回写到实际数据字段,保持未满足的引用),如果已经是满足引用的则为处理完成,否则为等待依赖;

所述初始化数据处理服务包括如下步骤:

提供种子数据处理接口,插入数据,更新数据或者删除数据并且返回处理结果。

本发明相对于现有技术包括有以下有益效果:

本发明系统可以在微服务体系下完成具有复杂相互以来关系的初始化数据的初始化,能够使任意的服务启动顺序和依赖顺序均保证最终数据成功初始化。并且可以根据管理服务记录显示出所有数据的依赖和初始化执行状态。本系统提供灵活的sdk,可以确保满足大部分服务对初始化数据的需要。本服务数据是由各个微服务收集上报的,可以满足服务直接初始化数据的解耦。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的一种微服务架构下数据初始化系统的结构示意图;

图2为本发明初始数据提供服务的流程步骤图;

图3为本发明管理服务的流程步骤图;

图4为本发明初始数据处理服务的流程步骤图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1所示,本发明的一种微服务架构下数据初始化系统,包括:

管理服务、sdk(softwaredevelopmentkit,软件开发工具包)、提供数据或者处理数据的其他微服务体系下的服务(图中用户服务和订单服务为两个例子)组成;

其中,管理服务是本系统的核心,负责与sdk连接收集需要进行初始化的数据,解析这些初始化数据的依赖关系,下发满足依赖的数据初始化指令到sdk,存储指令执行结果;

其中,sdk是管理服务与提供数据或者处理数据的其他微服务体系下的服务之间沟通的桥梁,由提供数据或者处理数据的其他微服务体系下的服务在开发时集成并且具有数据库或者其他数据存储位置的访问能力,负责在提供数据或者处理数据的其他微服务体系下的服务启动时收集并且汇报需要初始化的数据到管理服务,并且在从管理服务器的时候初始化指令到达时进行执行和汇报执行结果;

提供数据或者处理数据的其他微服务体系下的服务需要在开发时集成sdk,并且根据业务需求需要从任意可访问的数据来源收集和转换数据为管理服务可识别的格式并且通过sdk上报到管理服务。

如图2-4所示,一种微服务架构下数据初始化方法,包括初始化数据提供服务、管理服务以及初始化数据处理服务;

初始化数据提供服务以及初始化数据处理服务均是嵌入了sdk(softwaredevelopmentkit,软件开发工具包)的提供数据或者处理数据的其它微服务体系下的服务,根据业务需求,可以配置为只是初始数据提供服务,只是初始数据处理服务,既是初始数据提供服务也是初始数据处理服务;

初始化数据采用种子数据提供服务,包括如下步骤:

p1、手工添加的种子数据以xml(extensiblemarkuplanguage,可扩展标记语言)的形式提供;

p2、通过服务自身代码自动生成的数据,如接口权限数据;

p3、可扩展的数据提供形式,由服务实现sdk中的接口,接口内执行返回数据;

管理服务采用监听新的服务实例的启动时执行,包括如下步骤:

s1、种子数据提供服务实例启动后,从种子数据提供服务中拉取所有的种子数据;

s2、将种子数据,按来源服务拆分数据,拆分后的数据按内容生成hash(散列)校验码,使用来源服务,hash校验码做惟一性校验,如果校验与旧版本不一致,则存储到数据库中,存储此数据的表名为:service_seeddata,字段有:

0)数据uuidid;

1)来源服务source_service;

2)md5码checksum;

3)拆分后的数据data_json;

s3、将分割后的种子数据按照记录拆分,更新到data_external表中,表结构如下:

0)记录uuidid;

1)关联数据iddata_id;

2)外部引用idexternal_id;

3)目标服务target_service;

3)实际数据data_json;

4)处理状态process_status等待依赖,处理完成,等待删除;

s4、进行n次数据处理直到处理数据标记为0,步骤如下:

1)查询出未处理完成的记录,按照目标服务分组;

2)处理每条记录的引用如果已经满足则替换引用为真实数据,未满足则先跳过,每个引用的替换使处理数据标记+1;

3)按照目标服务的分组发送请求让每个服务处理这些数据,并且回写这些数据(回写到实际数据字段,保持未满足的引用),如果已经是满足引用的则为处理完成,否则为等待依赖;

初始化数据处理服务包括如下步骤:

提供种子数据处理接口,插入数据,更新数据或者删除数据并且返回处理结果。

本发明包括但不限于以下有益效果:

本发明系统可以在微服务体系下完成具有复杂相互以来关系的初始化数据的初始化,能够使任意的服务启动顺序和依赖顺序均保证最终数据成功初始化。并且可以根据管理服务记录显示出所有数据的依赖和初始化执行状态。本系统提供灵活的sdk,可以确保满足大部分服务对初始化数据的需要。本服务数据是由各个微服务收集上报的,可以满足服务直接初始化数据的解耦。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1