基于领域驱动设计的微服务系统构建方法、设备及介质与流程

文档序号:29305767发布日期:2022-03-19 16:50阅读:78来源:国知局
基于领域驱动设计的微服务系统构建方法、设备及介质与流程

1.本技术涉及互联网技术领域,尤其涉及一种基于领域驱动设计的微服务系统构建方法、设备及介质。


背景技术:

2.随着计算机技术的不断发展,微服务的应用越来越广泛,目前,领域驱动设计是微服务架构的核心和最重要的基础,而在传统的领域驱动设计工具中,在进行事件风暴、上下文划分、模型分析以及微服务拆分整个环节中,每个环节都是独立割裂的,也即,前一个环节的产出,没有自动作为下一个环节的输入,从而增加了领域驱动设计的复杂度,此外,领域驱动设计中不同环节的产出,没有与实际项目源码的实现相结合,难以指导微服务架构的实现,导致微服务系统分析和设计过程复杂。


技术实现要素:

3.本技术的主要目的在于提供一种基于领域驱动设计的微服务系统构建方法、设备及介质,旨在解决现有技术中的微服务系统分析和设计过程复杂的技术问题。
4.为实现上述目的,本技术提供一种基于领域驱动设计的微服务系统构建方法,所述基于领域驱动设计的微服务系统构建方法包括:
5.获取业务需求中的各领域事件,并识别各所述领域事件分别对应的领域对象以及对象命令;
6.对各所述领域对象进行业务划分,获得各所述领域对象对应的业务边界,并确定各所述业务边界的界限上下文;
7.基于各所述业务边界,确定微服务系统对应的各微服务单元;
8.基于各所述业务边界的界限上下文,构建各所述微服务单元对应的数据模型,以及确定各所述微服务单元之间的服务调用关系;
9.基于各所述对象命令,生成各所述微服务单元对应的接口代码。
10.本技术还提供一种基于领域驱动设计的微服务系统构建装置,所述基于领域驱动设计的微服务系统构建装置为虚拟系统,所述基于领域驱动设计的微服务系统构建装置包括:
11.识别模块,用于获取业务需求中的各领域事件,并识别各所述领域事件分别对应的领域对象以及对象命令;
12.划分模块,用于对各所述领域对象进行业务划分,获得各所述领域对象对应的业务边界,并确定各所述业务边界的界限上下文;
13.确定模块,用于基于各所述业务边界,确定微服务系统对应的各微服务单元;
14.构建模块,用于基于各所述业务边界的界限上下文,构建各所述微服务单元对应的数据模型,以及确定各所述微服务单元之间的服务调用关系;
15.生成模块,用于基于各所述对象命令,生成各所述微服务单元对应的接口代码。
16.本技术还提供一种基于领域驱动设计的微服务系统构建设备,所述基于领域驱动设计的微服务系统构建设备为实体设备,所述基于领域驱动设计的微服务系统构建设备包括:存储器、处理器以及存储在所述存储器上的基于领域驱动设计的微服务系统构建程序,所述基于领域驱动设计的微服务系统构建程序被所述处理器执行实现如上述的基于领域驱动设计的微服务系统构建方法的步骤。
17.本技术还提供一种存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质上存储基于领域驱动设计的微服务系统构建程序,所述基于领域驱动设计的微服务系统构建程序被处理器执行实现如上述的基于领域驱动设计的微服务系统构建方法的步骤。
18.本技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的基于领域驱动设计的微服务系统构建方法的步骤。
19.本技术提供了一种基于领域驱动设计的微服务系统构建方法、设备及介质,相比于现有技术采用利用领域驱动设计工具进行事件风暴、上下文划分、模型分析以及微服务拆分整个环节中,每个环节都是独立割裂的技术手段,本技术首先获取业务需求中的各领域事件,并识别各所述领域事件分别对应的领域对象以及对象命令,进而对各所述领域对象进行业务划分,获得各所述领域对象对应的业务边界,并确定各所述业务边界的界限上下文,进一步地,基于各所述业务边界,确定微服务系统对应的各微服务单元,进而基于各所述业务边界的界限上下文,构建各所述微服务单元对应的数据模型,以及确定各所述微服务单元之间的服务调用关系,进一步地,基于各所述对象命令,生成各所述微服务单元对应的接口代码,实现了基于领域对象、对象命令以及各所述业务边界的界限上下文,进行系统架构设计、接口设计等操作,打通整个领域驱动设计分析过程,降低了不同环节分析设计的复杂度,进一步地,基于领域驱动设计理念,将微服务系统分析与设计可视化,进而根据领域驱动设计不同环节的产出,分别用于指导微服务系统进行架构设计、接口设计等操作,从而更好地指导系统微服务架构的实现,实现了系统分析、设计过程一体化,克服了现有技术中利用领域驱动设计工具进行事件风暴、上下文划分、模型分析以及微服务拆分整个环节中,每个环节都是独立割裂,增加了领域驱动设计的复杂度,难以指导微服务架构的实现的技术缺陷,从而提升了利用领域驱动设计理念进行微服务系统可视化分析与设计的效果。
附图说明
20.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
21.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域默认技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
22.图1为本技术基于领域驱动设计的微服务系统构建方法第一实施例的流程示意图;
23.图2为本技术基于领域驱动设计的微服务系统构建方法第二实施例的流程示意图;
24.图3为本技术基于领域驱动设计的微服务系统构建方法第三实施例的流程示意图;
25.图4为本技术实施例中基于领域驱动设计的微服务系统构建方法涉及的硬件运行环境的基于领域驱动设计的微服务系统构建设备结构示意图。
26.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
27.应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
28.本技术实施例提供一种基于领域驱动设计的微服务系统构建方法,在本技术基于领域驱动设计的微服务系统构建方法的第一实施例中,参照图1,所述基于领域驱动设计的微服务系统构建方法包括:
29.步骤s10,获取业务需求中的各领域事件,并识别各所述领域事件分别对应的领域对象以及对象命令;
30.在本实施例中,需要说明的是,所述业务需求包括目标软件系统对应的业务范围和业务流程,所述领域对象是对于目标软件系统进行建模分析时的领域事件的数据对象,所述目标软件系统为是软件开发组织所需要基于业务需求进行开发的软件系统,进一步地,所述领域事件对应的规范命名规则为名词+动词的过去时态,例如,订单已创建。另外地,所述领域事件的名称在命名时应该尽量避免使用类似数据、信息等的名词,因为此类无实际意义名词的使用将会对后续目标业务对象的分析造成干扰。
31.获取业务需求中的各领域事件,并识别各所述领域事件分别对应的领域对象以及对象命令,具体地,根据目标软件系统中业务需求的业务范围和业务流程,提取所述目标软件系统包含的领域事件,进而根据各所述领域事件,生成各所述领域事件分别对应的领域对象以及对象命令,另外地,支持自定义领域事件的参与者,例如,订单已创建,所述领域对象为订单,所述对象命令为创建订单。
32.步骤s20,对各所述领域对象进行业务划分,获得各所述领域对象对应的业务边界,并确定各所述业务边界的界限上下文;
33.在本实施例中,需要说明的是,所述领域专家为对于目标软件系统的某些业务领域具有深入理解的专家,领域专家是一种角色,而不是一种特定职务,进一步地,所述界限上下文为领域模型中通过识别领域事件的不同阶段划分和对于领域对象进行聚合所得到的分片。
34.对各所述领域对象进行业务划分,获得各所述领域对象对应的业务边界,并确定各所述业务边界的界限上下文,具体地,通过领域专家分析各所述领域对象的关联度,进而将关联度强的领域对象划分到同一个业务边界里,也即,将具备密切关系的领域对象放在同一业务边界中,进一步地,对不同业务边界的各领域对象进行分析,确定各所述业务边界之间的界限上下文,其中,所述关联度分析包括但不限于功能相关性分析,也即,从功能的角度分析领域对象是否彼此关联和依赖,实现通过将不同功能划分开,避免出现迷糊不清的界限,从而使得业务的变化不会导致整个系统服务比较大的改动,只需要简单将领域进行移动调用,为微服务系统设计提供支撑。
35.其中,所述对各所述领域对象进行业务划分,获得各所述领域对象对应的业务边
界的步骤包括:
36.步骤s21,通过领域专家对各所述领域对象进行业务关联分析,获得各所述领域对象之间的关联度;
37.在本实施例中,通过领域专家对各所述领域对象进行业务关联分析,获得各所述领域对象之间的关联度,具体地,通过领域专家对各所述领域对象进行业务关联分析,从功能的角度分析业务活动是否彼此之间的关联和依赖,从而获得各所述领域对象之间的关联度。
38.步骤s22,基于所述关联度,对各所述领域对象进行划分,获得各所述业务边界。
39.在本实施例中,基于所述关联度,对各所述领域对象进行划分,获得各所述业务边界,具体地,基于所述关联度,对各所述领域对象进行划分归类,如果领域对象之间存在关联和依赖,可以作为归类的特征,进而将具有强关联的各领域对象聚为一类,此时,聚为一类的各领域对象作为一个业务边界,获得各所述领域对象对应的业务边界,例如,如果两个领域对象的功能需要同时存在,又或者缺少一个功能,另一个功能是不完整的,则二者功能强关联,反之则二者功能弱关联。
40.步骤s30,基于各所述业务边界,确定微服务系统对应的各微服务单元;
41.在本实施例中,需要说明的是,所述微服务单元是组成基于微服务架构的软件系统的单个组件,一般而言,基于微服务架构的软件系统由若干个相互协作的微服务单元组成,进一步地,在微服务系统设计时,一个业务边界一般作为一个微服务单元。
42.步骤s40,基于各所述业务边界的界限上下文,构建各所述微服务单元对应的数据模型,以及确定各所述微服务单元之间的服务调用关系;
43.在本实施例中,基于各所述业务边界的界限上下文,构建各所述微服务单元对应的数据模型,以及确定各所述微服务单元之间的服务调用关系,具体地,基于各所述业务边界的界限上下文,识别不同业务边界的领域对象之间的依赖关系,在各所述业务边界中通过箭头表示所述依赖关系,进一步地,基于所述依赖关系,会自动确定各所述微服务单元之间的服务调用关系,从而实现微服务系统的架构设计。
44.其中,所述基于各所述业务边界的界限上下文,确定各所述微服务单元之间的服务调用关系的步骤包括:
45.步骤s41,基于各所述业务边界的界限上下文,识别不同业务边界的领域对象之间的依赖关系;
46.在本实施例中,需要说明的是,所述依赖关系可通过箭头来表示依赖者和被依赖者的关系。
47.基于各所述业务边界的界限上下文,识别不同业务边界的领域对象之间的依赖关系,具体地,在各所述业务边界对应的界限上下文中,梳理分析各所述领域对象之间的依赖关系,从而根据依赖关系进行设计微服务架构,例如订单和商品具有依赖关系。
48.步骤s42,基于所述依赖关系,确定各所述微服务单元之间的服务调用关系。
49.在本实施例中,具体地,将不同业务边界对应的依赖关系作为各所述微服务单元之间的服务调用关系,从而实现基于业务架构完成系统架构的设计。
50.进一步地,在所述基于各所述业务边界的界限上下文,构建各所述微服务单元对应的数据模型,以及确定各所述微服务单元之间的服务调用关系的步骤之后,所述基于领
域驱动设计的微服务系统构建方法还包括:
51.步骤a10,对各所述微服务单元之间的服务调用关系进行检测,获得检测结果;
52.步骤a20,若所述检测结果存在依赖冲突,则提示警报信息。
53.在本实施例中,具体地,在自动生成各所述微服务单元之间的服务调用关系后,会进行检测所述服务调用关系是否合理,从而获得检测结果,进一步地,若检测到存在依赖冲突,则会提示警报信息以提示开发人员。
54.步骤s50,基于各所述对象命令,生成各所述微服务单元对应的接口代码。
55.在本实施例中,基于各所述对象命令,生成各所述微服务单元对应的接口代码,具体地,在所述微服务单元关联边界上下文之后,会根据所述边界上下文对应的对象命令自动完成api(application programming interface,应用程序接口)接口的设计,进而可对所述api接口进行编辑,获得各所述api接口对应的接口文档,其中,所述接口文档包括swagger接口文档、eolinker接口文档和apidoc接口文档等,进而基于所述接口文档,生成各所述微服务单元对应的接口代码,从而实现了从对象命令到微服务api接口设计,再到api接口代码的生成,全过程自动化,提高微服务设计效率。
56.其中,所述基于各所述对象命令,生成各所述微服务单元对应的接口代码的步骤包括:
57.步骤s51,创建各所述对象命令对应的服务接口,并生成各服务接口的接口文档;
58.在本实施例中,需要说明的是,所述接口文档包括swagger接口文档、eolinker和apidoc接口文档等,优先地,选择swagger接口文档,可预先部署swagger插件,添加swagger依赖。
59.创建各所述对象命令对应的服务接口,并生成各服务接口的接口文档,具体地,基于各所述对象命令,各所述对象命令自动完成api接口的设计,可对所述服务接口进行编辑,进而自动生成各服务接口的接口文档。
60.步骤s52,基于所述接口文档,生成各所述微服务单元对应的接口代码。
61.在本实施例中,具体地,基于各所述对象命令,各所述对象命令自动完成api接口的设计,可对所述服务接口进行编辑,进而自动生成各服务接口的接口文档,进而基于所述接口文档,自动生成各所述微服务单元对应的接口代码。
62.本技术实施例提供了一种基于领域驱动设计的微服务系统构建方法,相比于现有技术采用利用领域驱动设计工具进行事件风暴、上下文划分、模型分析以及微服务拆分整个环节中,每个环节都是独立割裂的技术手段,本技术实施例首先获取业务需求中的各领域事件,并识别各所述领域事件分别对应的领域对象以及对象命令,进而对各所述领域对象进行业务划分,获得各所述领域对象对应的业务边界,并确定各所述业务边界的界限上下文,进一步地,基于各所述业务边界,确定微服务系统对应的各微服务单元,进而基于各所述业务边界的界限上下文,构建各所述微服务单元对应的数据模型,以及确定各所述微服务单元之间的服务调用关系,进一步地,基于各所述对象命令,生成各所述微服务单元对应的接口代码,实现了基于领域对象、对象命令以及各所述业务边界的界限上下文,进行系统架构设计、接口设计等操作,打通整个领域驱动设计分析过程,降低了不同环节分析设计的复杂度,进一步地,基于领域驱动设计理念,将微服务系统分析与设计可视化,进而根据领域驱动设计不同环节的产出,分别用于指导微服务系统进行架构设计、接口设计等操作,
从而更好地指导系统微服务架构的实现,实现了系统分析、设计过程一体化,克服了现有技术中利用领域驱动设计工具进行事件风暴、上下文划分、模型分析以及微服务拆分整个环节中,每个环节都是独立割裂,增加了领域驱动设计的复杂度,难以指导微服务架构的实现的技术缺陷,从而提升了利用领域驱动设计理念进行微服务系统可视化分析与设计的效果。
63.进一步地,参照图2,基于本技术中第一实施例,在本技术的另一实施例中,所述基于各所述业务边界的界限上下文,构建各所述微服务单元对应的数据模型的步骤包括:
64.步骤b10,基于各所述业务边界的界限上下文,分析不同业务边界以及各所述业务边界中的各领域对象之间的实体关联关系;
65.在本实施例中,需要说明的是,所述实体关联关系包括一对多、多对多、包含等关系。
66.基于各所述业务边界的界限上下文,分析不同业务边界以及各所述业务边界中的各领域对象之间的实体关联关系,具体地,对业务边界上下文中的各领域对象进行分析,识别各所述领域对象的要素属性,梳理边界上下文内外对应各领域对象之间的关系,获得所述实体关联关系,例如,对于订单和商品,一个订单可包括多件商品,因此,订单和商品之间的实体关联关系为一对多关系。
67.步骤b20,基于各所述实体关联关系,构建各所述数据模型。
68.在本实施例中,具体地,在分析各所述实体关联关系后,可直接设计建立对应的数据模型,进而基于所述数据模型,可视化展示不同业务边界中领域对象的关系,例如,基于各所述实体关联关系,通过uml(unified model language,统一建模语言)进行建模,从而使得在后续数据库建模也可直观地根据uml模型进行设计实体主外键之间的关系。
69.进一步地,参照图3,基于本技术中第一实施例,在本技术的另一实施例中,在所述基于各所述对象命令,生成各所述微服务单元对应的接口代码的步骤之后,所述基于领域驱动设计的微服务系统构建方法还包括:
70.步骤c10,对各所述微服务单元中的各领域对象进行属性识别,获得各领域对象对应的属性信息;
71.在本实施例中,需要说明的是,系统对应的数据库至少包括一个实体,实体具有一个或多个属性,所述领域对象可确定其对应的实体,实体具有唯一性,例如,订单,具有唯一的订单id编号,进一步地,所述属性信息不是唯一的,本质上是一个集,例如,订单包括商品名称、收货地址等多个属性信息。
72.对各所述微服务单元中的各领域对象进行属性识别,获得各领域对象对应的属性信息,具体地,分析各所述微服务单元中的各领域对象的要素属性,确定各领域对象对应的属性信息。
73.步骤c20,基于各所述领域对象的实体关联关系以及属性信息,构建所述微服务系统对应的业务数据库。
74.在本实施例中,需要说明的是,所述实体关联关系包括包含、一对一、一对多以及多对多等关系。
75.基于各所述领域对象的实体关联关系以及属性信息,构建所述微服务系统对应的业务数据库,具体地,基于各所述领域对象的实体关联关系,将所述实体关联关系,确定业
务数据库实体间的主外键关系,进而基于各所述各领域对象对应的属性信息以及主外键关系,构建所述微服务系统对应的业务数据库。
76.本技术实施例提供了一种基于领域驱动设计的微服务系统构建方法,也即,对各所述微服务单元中的各领域对象进行属性识别,获得各领域对象对应的属性信息,进而基于各所述领域对象的实体关联关系以及属性信息,构建所述微服务系统对应的业务数据库,实现了根据领域驱动设计的产出,也即直接根据领域驱动设计中识别的领域对象以及实体关联关系,快速完成微服务系统中数据库的设计,提高系统设计的效率。
77.参照图4,图4是本技术实施例方案涉及的硬件运行环境的基于领域驱动设计的微服务系统构建设备结构示意图。
78.如图4所示,该基于领域驱动设计的微服务系统构建设备可以包括:处理器1001,例如cpu,存储器1005,通信总线1002。其中,通信总线1002用于实现处理器1001和存储器1005之间的连接通信。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。
79.可选地,该基于领域驱动设计的微服务系统构建设备还可以包括矩形用户接口、网络接口、相机、rf(radio frequency,射频)电路,传感器、音频电路、wifi模块等等。矩形用户接口可以包括显示屏(display)、输入子模块比如键盘(keyboard),可选矩形用户接口还可以包括标准的有线接口、无线接口。网络接口可选的可包括标准的有线接口、无线接口(如wifi接口)。
80.本领域技术人员可以理解,图4中示出的基于领域驱动设计的微服务系统构建设备结构并不构成对基于领域驱动设计的微服务系统构建设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
81.如图4所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块以及基于领域驱动设计的微服务系统构建程序。操作系统是管理和控制基于领域驱动设计的微服务系统构建设备硬件和软件资源的程序,支持基于领域驱动设计的微服务系统构建程序以及其它软件和/或程序的运行。网络通信模块用于实现存储器1005内部各组件之间的通信,以及与基于领域驱动设计的微服务系统构建装置中其它硬件和软件之间通信。
82.在图4所示的基于领域驱动设计的微服务系统构建设备中,处理器1001用于执行存储器1005中存储的基于领域驱动设计的微服务系统构建程序,实现上述任一项所述的基于领域驱动设计的微服务系统构建方法的步骤。
83.本技术基于领域驱动设计的微服务系统构建设备具体实施方式与上述基于领域驱动设计的微服务系统构建方法各实施例基本相同,在此不再赘述。
84.本技术还提供一种基于领域驱动设计的微服务系统构建装置,所述基于领域驱动设计的微服务系统构建装置包括:
85.识别模块,用于获取业务需求中的各领域事件,并识别各所述领域事件分别对应的领域对象以及对象命令;
86.划分模块,用于对各所述领域对象进行业务划分,获得各所述领域对象对应的业务边界,并确定各所述业务边界的界限上下文;
87.确定模块,用于基于各所述业务边界,确定微服务系统对应的各微服务单元;
88.构建模块,用于基于各所述业务边界的界限上下文,构建各所述微服务单元对应的数据模型,以及确定各所述微服务单元之间的服务调用关系;
89.生成模块,用于基于各所述对象命令,生成各所述微服务单元对应的接口代码。
90.可选地,所述划分模块还用于:
91.通过领域专家对各所述领域对象进行业务关联分析,获得各所述领域对象之间的关联度;
92.基于所述关联度,对各所述领域对象进行划分,获得各所述业务边界。
93.可选地,所述构建模块还用于:
94.基于各所述业务边界的界限上下文,分析不同业务边界以及各所述业务边界中的各领域对象之间的实体关联关系;
95.基于各所述实体关联关系,构建各所述数据模型。
96.可选地,所述构建模块还用于:
97.基于各所述业务边界的界限上下文,识别不同业务边界的领域对象之间的依赖关系;
98.基于所述依赖关系,确定各所述微服务单元之间的服务调用关系。
99.可选地,所述基于领域驱动设计的微服务系统构建装置模块还用于:
100.对各所述微服务单元之间的服务调用关系进行检测,获得检测结果;
101.若所述检测结果存在依赖冲突,则提示警报信息。
102.可选地,所述生成模块还用于:
103.创建各所述对象命令对应的服务接口,并生成各服务接口的接口文档;
104.基于所述接口文档,生成各所述微服务单元对应的接口代码。
105.可选地,所述基于领域驱动设计的微服务系统构建装置还用于:
106.对各所述微服务单元中的各领域对象进行属性识别,获得各领域对象对应的属性信息;
107.基于各所述领域对象的实体关联关系以及属性信息,构建所述微服务系统对应的业务数据库。
108.本技术基于领域驱动设计的微服务系统构建装置的具体实施方式与上述基于领域驱动设计的微服务系统构建方法各实施例基本相同,在此不再赘述。
109.本技术实施例提供了一种存储介质,所述存储介质为计算机可读存储介质,且所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序还可被一个或者一个以上的处理器执行以用于实现上述任一项所述的基于领域驱动设计的微服务系统构建方法的步骤。
110.本技术计算机可读存储介质具体实施方式与上述基于领域驱动设计的微服务系统构建方法各实施例基本相同,在此不再赘述。
111.本技术实施例提供了一种计算机程序产品,且所述计算机程序产品包括有一个或者一个以上计算机程序,所述一个或者一个以上计算机程序还可被一个或者一个以上的处理器执行以用于实现上述任一项所述的基于领域驱动设计的微服务系统构建方法的步骤。
112.本技术计算机程序产品具体实施方式与上述基于领域驱动设计的微服务系统构
建方法各实施例基本相同,在此不再赘述。
113.以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利处理范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1