1.本发明涉及微服务技术领域,尤其涉及一种构建组合服务的方法及装置。
背景技术:2.在单体应用的微服务化改造过程中,需要将应用的服务拆分成更细粒度的微服务。一个实现复杂功能的单体应用的服务可能是多个微服务的组合,因此开发人员在进行一个服务的开发和设计过程,就是在定义多个微服务执行顺序的过程。在运行时,服务的集成处理栈会根据预定义的微服务执行顺序进行微服务的加载以及相关环境参数的准备。
3.但是在现有技术中,常用微服务编排框架(如netflix conductor、zeebe等)不具备可视化的微服务编排设计的功能,无法实现通过界面定义服务编排模型。开发人员只能通过手写xml或json模板文件来实现微服务编排的定义。导致开发不具备灵活性,需要手写大量代码。对于复杂服务的后续修改、维护成本高。
技术实现要素:4.本发明实施例提供一种构建组合服务的方法及装置,用于实现可视化的编排微服务,降低微服务的开发难度,提升组合服务开发的灵活性。
5.第一方面,本发明实施例提供一种构建组合服务的方法,包括:
6.设置组合服务中的各微服务及各微服务之间的执行顺序;
7.确定所述组合服务中各微服务之间的编排图元;所述编排图元用于指示微服务之间的执行关系;
8.设置所述编排图元的输入参数和输出参数,并调用所述组合服务的输入参数,确定各微服务的输入参数和输出参数,从而得到所述组合服务。
9.上述技术方案中,通过组合服务的输入参数编排图元建立各微服务图元之间的执行关系,从而生成组合服务,实现可视化的编排微服务;通过编排图元的输入参数、输出参数和组合服务的输入参数,确定各微服务的输入参数和输出参数,不再需要手写微服务代码,降低了微服务的开发难度,提升了组合服务开发的灵活性。
10.可选的,设置所述编排图元的输入参数和输出参数,并调用所述组合服务的输入参数,确定各微服务的输入参数和输出参数,包括:
11.针对任一微服务,根据所述编排图元的输入参数和输出参数确定与所述微服务具有间接依赖关系和直接依赖关系的其他微服务;
12.将所述其他微服务的输入参数、输出参数和所述组合服务的输入参数作为所述微服务的输入参数;
13.根据所述微服务的输入参数执行所述微服务,得到所述微服务的输出参数。
14.上述技术方案中,针对任一微服务,通过组合服务的输入参数和与该微服务具有依赖关系的其他微服务的输入参数与输出参数作为该微服务的输入参数,进而建立各微服务之间的执行关系,从而生成组合服务,实现可视化的编排微服务,不再需要手写微服务代
码,降低了微服务的开发难度,提升了组合服务开发的灵活性。
15.可选的,所述微服务的类型包括实现业务功能类型、整合类型和组合类型;
16.所述整合类型的微服务是编辑后得到的;
17.所述组合类型的微服务是由多个微服务组合得到的。
18.上述技术方案中,整合类型的微服务是由用户自定义编辑得到的,提升了微服务的灵活性;组合类型的微服务是由多个微服务组合得到的,提高了微服务的可复用性,降低了微服务相互调用的复杂度。
19.可选的,所述编排图元的类型包括赋值类型、检查报错类型、异常类型、开始和结束类型、分支类型、条件类型和循环类型。
20.上述技术方案中,所述编排图元包括多种类型,以针对不同的业务场景对微服务进行编排,提升了对微服务编排的全面性。
21.可选的,得到所述组合服务,包括:
22.基于所述各微服务之间的执行顺序确定最后执行的微服务;
23.将所述最后执行的微服务的输出参数作为所述组合服务的输出参数,从而得到所述组合服务。
24.可选的,在得到所述组合服务之后,还包括:
25.显示所述组合服务的输入参数和输出参数;
26.根据编辑指令对所述组合服务的输入参数和输出参数进行编辑。
27.上述技术方案中,可以通过编辑指令对组合服务的输入参数和输出参数进行自定义编辑,以此提升组合服务的灵活性。
28.可选的,微服务、编排图元和组合服务以xml文件形式进行记录。
29.第二方面,本发明实施例提供一种构建组合服务的装置,包括:
30.设置模块,用于设置组合服务中的各微服务及各微服务之间的执行顺序;
31.处理模块,用于确定所述组合服务中各微服务之间的编排图元;所述编排图元用于指示微服务之间的处理关系;
32.设置所述编排图元的输入参数和输出参数,并调用所述组合服务的输入参数,确定各微服务的输入参数和输出参数,从而得到所述组合服务。
33.可选的,所述处理模块具体用于:
34.针对任一微服务,根据所述编排图元的输入参数和输出参数确定与所述微服务具有间接依赖关系和直接依赖关系的其他微服务;
35.将所述其他微服务的输入参数、输出参数和所述组合服务的输入参数作为所述微服务的输入参数;
36.根据所述微服务的输入参数执行所述微服务,得到所述微服务的输出参数。
37.可选的,所述微服务的类型包括实现业务功能类型、整合类型和组合类型;
38.所述整合类型的微服务是编辑后得到的;
39.所述组合类型的微服务是由多个微服务组合得到的。
40.可选的,所述编排图元的类型包括赋值类型、检查报错类型、异常类型、开始和结束类型、分支类型、条件类型和循环类型。
41.可选的,所述处理模块具体用于:
42.基于所述各微服务之间的执行顺序确定最后执行的微服务;
43.将所述最后执行的微服务的输出参数作为所述组合服务的输出参数,从而得到所述组合服务。
44.可选的,所述处理模块还用于:
45.在得到所述组合服务之后,显示所述组合服务的输入参数和输出参数;
46.根据编辑指令对所述组合服务的输入参数和输出参数进行编辑。
47.可选的,微服务、编排图元和组合服务以xml文件形式进行记录。
48.第三方面,本发明实施例还提供一种计算机设备,包括:
49.存储器,用于存储程序指令;
50.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述构建组合服务的方法。
51.第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述构建组合服务的方法。
附图说明
52.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
53.图1为本发明实施例提供的一种系统架构示意图;
54.图2为本发明实施例提供的一种构建组合服务的方法的流程示意图;
55.图3为本发明实施例提供的一种编排图元的示意图;
56.图4为本发明实施例提供的一种组合服务的示意图;
57.图5为本发明实施例提供的一种微服务的示意图;
58.图6为本发明实施例提供的一种编辑界面的示意图;
59.图7为本发明实施例提供的一种构建组合服务的装置的结构示意图。
具体实施方式
60.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
61.图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括服务器100,该服务器100可以包括处理器110、通信接口120和存储器130。
62.其中,通信接口120用于在微服务执行过程中获取所需要的数据。
63.处理器110是服务器100的控制中心,利用各种接口和路线连接整个服务器100的各个部分,通过运行或执行存储在存储器130内的软件程序/或模块,以及调用存储在存储器130内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以包括一个
或多个处理单元。
64.存储器130可用于存储软件程序以及模块,处理器110通过运行存储在存储器130的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据业务处理所创建的数据等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
65.需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
66.基于上述描述,图2示例性的示出了本发明实施例提供的一种构建组合服务的方法的流程示意图,该流程可由构建组合服务的装置执行。
67.如图2所示,该流程具体包括:
68.步骤210,设置组合服务中的各微服务及各微服务之间的执行顺序。
69.本发明实施例中,各微服务及各微服务之间的执行顺序用于组合成组合服务,组合服务的所实现的业务功能是由开发人员定义的。
70.步骤220,确定所述组合服务中各微服务之间的编排图元。
71.本发明实施例中,编排图元用于指示微服务之间的执行关系;编排图元包括多种类型,以实现各微服务之间不同的执行关系;如并行、串行等。
72.步骤230,设置所述编排图元的输入参数和输出参数,并调用所述组合服务的输入参数,确定各微服务的输入参数和输出参数,从而得到所述组合服务。
73.本发明实施例中,任一微服务的输入参数是根据预设的组合服务的输入参数得到的,从而不再需要手写微服务代码,降低微服务的开发难度。
74.在步骤210中,组合服务是由开发人员预先定义的,预先定义包括所要实现的业务功能以及所要实现的业务功能所需的各微服务;举例来说,定义组合服务a所要实现的业务功能为转账功能,为了实现转账功能,需要通过微服务m1、微服务m2和微服务m3组成组合服务,其中,微服务m1用于调用客户信息,微服务m2用于执行转账,微服务m3用于确定转账结果;因此各微服务之间的执行顺序为m1
→
m2
→
m3。
75.进一步地,微服务的类型包括实现业务功能类型、整合类型和组合类型;其中,整合类型的微服务是编辑后得到的;组合类型的微服务是由多个微服务组合得到的。
76.基于上述描述进行举例,如微服务m2用于执行转账,因此微服务m2是属于实现业务功能类型的微服务。再如微服务m3,微服务m3是由开发人员手动编写的本地javabean,如数组赋值等;又如微服务m1用于调用客户信息,其中微服务m1是由微服务h1和h2组合成的,微服务h1用于调用性别为男的客户信息,微服务h2用于调用年龄在18岁以上的客户信息。
77.在步骤220中,编排图元的类型包括赋值类型、检查报错类型、异常类型、开始和结束类型、分支类型、条件类型和循环类型。
78.图3为本发明实施例示例性示出的一种编排图元的示意图,如图3所示,各类型的编排图元是基于gmf(graphical modeling framework,图形化建模框架)进行现实的,图元工具栏中包括但不限于的编排图元分别为“连接线”、“开始”、“结束”、“检查报错”、“赋值”、“条件开始”、“条件结束”、“循坏开始”、“循环结束”、“分支开始”、“分支结束”、“异常”和“子流程”。
79.其中,“连接线”用于设置各微服务之间的执行顺序,“开始”图元用于表征组合服务执行的开始,“结束”图元用于表征组合服务执行的结束,“检查报错”图元用于实现在组合服务执行过程中满足预设报错条件时进行报错,“赋值”图元用于实现对微服务的输入参数或输出参数的赋值,“条件开始”图元用于实现根据条件确定执行下一微服务,“条件结束”图元用于指示条件确定结束,“循坏开始”图元用于实现循环微服务逻辑,“循环结束”图元用于指示循环微服务逻辑结束,“分支开始”图元用于实现根据条件确定执行下一微服务,“分支结束”图元用于指示条件确定结束,“异常”图元用于实现无条件抛出异常。
80.需要说明的是,分支类型的编排图元与条件类型的编排图元区别在于:分支类型的编排图元是在至少两个微服务中确定待执行的下一微服务,条件类型的编排图元是仅在两个微服务中确定待执行的下一微服务;图3中“子流程”用于隐藏各编排图元和微服务的参数,用于简洁的显示组合服务。
81.在步骤230中,在一种可实施的方式中,各微服务的输入参数和输出参数是由开发人员自定义编辑的。
82.在本发明实施例中,针对任一微服务,根据编排图元的输入参数和输出参数确定与微服务具有间接依赖关系和直接依赖关系的其他微服务;将其他微服务的输入参数、输出参数和组合服务的输入参数作为微服务的输入参数;根据微服务的输入参数执行微服务,得到微服务的输出参数。
83.基于上述描述进行举例,图4示例性的示出了一种组合服务的示意图,如图4所示,组合服务a包括开始图元、结束图元、条件开始图元、条件结束图元、微服务m1、微服务m1`、微服务m2和微服务m3。
84.进一步地,条件开始图元用于判断数据库a1是否可用,若执行微服务m1,否则执行微服务m1`,然后执行微服务m2,最后执行微服务m3;其中,微服务m1用于在数据库a1调用客户信息,微服务m1`用于在数据库a2调用客户信息,微服务m2用于对客户信息对应的客户进行转账,微服务m3用于确定转账结果。
85.针对微服务m1,根据组合服务a中的各编排图元(包括开始图元、结束图元、条件开始图元和条件结束)确定微服务m1不存在与微服务m1具有间接依赖关系和直接依赖关系的其他微服务,因此将预设的组合服务a的输入参数作为微服务m1的输入参数;
86.针对微服务m1`,根据组合服务a中的各编排图元确定微服务m1不存在与微服务m1`具有间接依赖关系和直接依赖关系的其他微服务,因此将预设的组合服务a的输入参数作为微服务m1`的输入参数;
87.针对微服务m2,根据组合服务a中的各编排图元确定微服务m2存在与微服务m2具有直接依赖关系(微服务m1和微服务m1`)的其他微服务,因此将微服务m1和微服务m1`的输入参数、输出参数以及预设的组合服务a的输入参数作为微服务m2的输入参数;
88.针对微服务m3,根据组合服务a中的各编排图元确定微服务m3存在与微服务m3具有间接依赖关系(微服务m1和微服务m1`)和直接依赖关系(微服务m2)的其他微服务,因此将微服务m1和微服务m1`的输入参数、输出参数、微服务m2的输入参数、微服务m2的输出参数以及预设的组合服务a的输入参数作为微服务m3的输入参数,以此实现组合服务a的业务流程。
89.在确定组合服务中各微服务的输入参数和输出参数之后,确定组合服务的输出参
数,具体的,基于各微服务之间的执行顺序确定最后执行的微服务;将最后执行的微服务的输出参数作为所述组合服务的输出参数,从而得到组合服务。
90.基于上述图4进行举例,确定微服务m3为最后执行的微服务,因此将微服务m3的输出参数作为组合服务a的输出参数,从而实现构建组合服务a。
91.在本发明实施例中,各微服务可以是预先定义的,也可以是开发人员实时定义编写的;其中,各微服务显示在gmf框架中,图5示例性的示出了一种微服务的示意图,如图5所示,服务库中包括三中类型的微服务,“整合层本地方法”为整合类型的微服务,“组合子流程”为组合类型的微服务,“服务”为实现业务功能类型的微服务,具体包括建立计量信息服务(a10513001)等,在此不做微服务的具体限定。
92.需要说明的是,对微服务和组合服务的定义包括数据结构的定义,如数据结构为具有业务含义的元数据类型(如客户账号、可用余额等)。
93.开发人员可以在gmf框架中拖拽编排图元和/或微服务,并添加至组合服务中;其中,gmf框架可以在eclipse界面中进行可视化展示和编辑。
94.进一步地,图6为本发明实施例示例性示出的一种编辑界面的示意图,如图6所示,图6的左侧为表征组合服务的流程图画布;中间为编排图元的图元工具栏;右侧为各微服务的服务库视图,包含了可供调用的微服务。图元工具栏中的各编排图元和服务库视图中的微服务可被拖拽到流程图画布上,并进行编辑设置。
95.需要说明的是,在gmf框架中包括显示编排图元、微服务和组合服务具体参数信息区,用于显示组合服务的输入参数和输出参数;根据编辑指令对组合服务的输入参数和输出参数进行编辑。
96.其中,编辑指令可以为双击操作、单击操作等,在此不做具体限定。
97.在对编排图元、微服务和组合服务进行编辑之后,将微服务、编排图元和组合服务以xml文件形式进行记录。
98.综上所述,本发明实施例基于可视化模型(gnf)对各微服务进行编排,将描述微服务的编排定义的基本要素抽象出来,将微服务编排的开发转变为流程图模型,简化了微服务编排的开发流程。通过直观描述微服务的调用关系,直观描述微服务的调用链路,以便于在组合服务异常时定位排查存在问题的微服务。
99.基于相同的技术构思,图7示例性的示出了本发明实施例提供的一种构建组合服务的装置的结构示意图,该装置可以执行构建组合服务的方法的流程。
100.如图7所示,该装置具体包括:
101.设置模块710,用于设置组合服务中的各微服务及各微服务之间的执行顺序;
102.处理模块720,用于确定所述组合服务中各微服务之间的编排图元;所述编排图元用于指示微服务之间的处理关系;
103.设置所述编排图元的输入参数和输出参数,并调用所述组合服务的输入参数,确定各微服务的输入参数和输出参数,从而得到所述组合服务。
104.可选的,所述处理模块720具体用于:
105.针对任一微服务,根据所述编排图元的输入参数和输出参数确定与所述微服务具有间接依赖关系和直接依赖关系的其他微服务;
106.将所述其他微服务的输入参数、输出参数和所述组合服务的输入参数作为所述微
服务的输入参数;
107.根据所述微服务的输入参数执行所述微服务,得到所述微服务的输出参数。
108.可选的,所述微服务的类型包括实现业务功能类型、整合类型和组合类型;
109.所述整合类型的微服务是编辑后得到的;
110.所述组合类型的微服务是由多个微服务组合得到的。
111.可选的,所述编排图元的类型包括赋值类型、检查报错类型、异常类型、开始和结束类型、分支类型、条件类型和循环类型。
112.可选的,所述处理模块720具体用于:
113.基于所述各微服务之间的执行顺序确定最后执行的微服务;
114.将所述最后执行的微服务的输出参数作为所述组合服务的输出参数,从而得到所述组合服务。
115.可选的,所述处理模块720还用于:
116.在得到所述组合服务之后,显示所述组合服务的输入参数和输出参数;
117.根据编辑指令对所述组合服务的输入参数和输出参数进行编辑。
118.可选的,微服务、编排图元和组合服务以xml文件形式进行记录。
119.基于相同的技术构思,本发明实施例还提供一种计算机设备,包括:
120.存储器,用于存储程序指令;
121.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述构建组合服务的方法。
122.基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述构建组合服务的方法。
123.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
124.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
125.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
126.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
127.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。