发明内容
为解决上述技术问题,本申请提供一种基于微服务组件的业务模块的构建方法以及一种业务模块的调用方法,以便更加简便地构建和调用由多个微服务组件所装配而成的业务模块。
第一方面,提供一种基于微服务组件的业务模块的构建方法,包括:
获取至少两个微服务组件的表示信息,以及所述至少两个微服务组件之间的顺序关系;
分别显示第一参数类集合和第二参数类集合;所述第一参数类集合为第一微服务组件的输出参数的所有参数类的集合,所述第二参数类集合为第二微服务组件的输入参数的所有参数类的集合;
分别确定用户选定的第一参数类和第二参数类,所述第一参数类为第一参数类集合中的一个参数类;所述第二参数类为第二参数类集合中的一个参数类;
建立所述第一参数类与第二参数类之间的映射关系;
生成业务模块,所述业务模块包括所述至少两个微服务组件的表示信息、所述顺序关系和所述映射关系。
结合第一方面,在第一方面第一种可能的实现方式中,建立所述第一参数类与第二参数类之间的映射关系的步骤,包括:
为所述第一参数类和所述第二参数类分别标记相同或相应的映射编码。
结合第一方面的第一种实现方式,在第一方面第二种可能的实现方式中,获取至少两个微服务组件的表示信息的步骤,包括:
获取用户输入的第一检索字段;
将所述第一检索字段与已发布的微服务组件的表示信息、参数信息或对应的标签进行匹配;
显示检索结果集合,所述检索结果集合包括与所述第一检索字段相匹配的微服务组件的表示信息;
获取用户从检索结果集合中选定的微服务组件的表示信息。
结合第一方面及上述可能的实现方式,在第一方面第三种可能的实现方式中,获取至少两个微服务组件的表示信息,以及所述至少两个微服务组件之间的顺序关系的步骤,具体包括:
利用vue-draggable前端插件获取至少两个微服务组件的表示信息;
利用Jsplum前端流程控制插件获取所述至少两个微服务组件之间的顺序关系。
第二方面,提供一种基于微服务组件的业务模块的调用方法,包括:
获取业务模块,所述业务模块利用第一方面的任一种所述的构建方法所构建得到;
根据所述业务模块中的至少两个微服务组件的表示信息、顺序关系以及映射关系,调用所述至少两个微服务组件进行计算,得到返回结果。
结合第二方面,在第二方面第一种可能的实现方式中,根据所述业务模块中的至少两个微服务组件的表示信息、顺序关系以及映射关系,调用所述至少两个微服务组件进行计算的步骤,包括:
根据所述顺序关系确定第一微服务组件的表示信息;
根据所述第一微服务组件的表示信息,调用第一微服务组件进行计算,得到第一输出数据,所述第一输出数据包括第一微服务组件的输出参数的所有参数类,以及与所述参数类对应的参数值;
根据所述顺序关系确定第二微服务组件的表示信息;
根据所述映射关系,从所述第一输出数据中获取第二输入数据,所述第二输入数据包括第二微服务组件的输入参数的所有参数类,以及与所述参数类对应的参数值;
根据所述第二微服务组件的表示信息,调用第二微服务组件,以使所述第二微服务组件利用所述第二输入数据进行计算,得到第二输出数据,所述第二输出数据包括第二微服务组件的输出参数的所有参数类,以及与所述参数类对应的参数值。
第三方面,提供一种基于微服务组件的业务模块的构建装置,包括:
第一获取单元,用于获取至少两个微服务组件的表示信息,以及所述至少两个微服务组件之间的顺序关系;
显示单元,用于分别显示第一参数类集合和第二参数类集合,其中,所述第一参数类集合为第一微服务组件的输出参数的所有参数类的集合,所述第二参数类集合为第二微服务组件的输入参数的所有参数类的集合;
第一处理单元,用于分别确定用户选定的第一参数类和第二参数类;建立所述第一参数类与第二参数类之间的映射关系;以及,生成业务模块;其中,所述第一参数类为第一参数类集合中的一个参数类;所述第二参数类为第二参数类集合中的一个参数类;所述业务模块包括所述至少两个微服务组件的表示信息、所述顺序关系和所述映射关系。
第四方面,提供一种基于微服务组件的业务模块的调用装置,包括:
第二获取单元,用于获取业务模块,所述业务模块利用第三方面所述的构建装置所构建得到;
第二处理单元,用于根据所述业务模块中的至少两个微服务组件的表示信息、顺序关系以及映射关系,调用所述至少两个微服务组件进行计算,得到返回结果。
第五方面,提供一种基于微服务组件的云平台,包括:第三方面所述的构建装置,以及第四方面所述的调用装置。
结合第五方面,在第五方面第一种可能的实现方式中,该云平台还包括:
微服务注册中心,用于存储至少两个微服务组件,以及所述至少两个微服务组件各自对应的表示信息、参数信息和/或标签。
通过上述技术方案的方法,用户只需要选定需要调用的微服务组件,调整好他们之间的顺序关系,以及选定微服务组件之间需要建立映射的参数类即可完成微服务组件的装配工作,构建出一个业务模块。也就是说,这个过程中微服务组件的消费者仅仅需要与计算机进行少量的有限的交互,故而大大简化了构建基于多个微服务组件的业务模块的过程,缩短了业务模块的开发周期,提高了业务模块构建及交付速度。并且,即便是不具有编码能力的业务人员,也可以完成这项工作,减小了业务模块开发的人力成本。
其次,由于业务模块中包含的是微服务组件的表示信息、顺序关系以及映射关系,当业务需求发生改变需要修改某个微服务组件时,只需要修改与该微服务组件的名称、顺序关系和/或映射关系即可,即仅仅需要在业务逻辑层面上进行修改即可,而不需要修改底层的代码,不需要进行单元测试、测试工程师测试、将代码模块发布到生产环境中等步骤,故而避免了这些步骤过程中会产生的耗费人力、时间,以及影响生产用软件系统的稳定性等问题。
再者,在利用业务模块来调用多个微服务组件时,根据业务模块中的微服务组件的表示信息、顺序关系以及映射关系来逐个调用微服务组件,使得多个微服务组件之间并不具有直接的依赖关系,而是通过调用装置间接地依赖,从而达到解耦的目的。
具体实施方式
微服务组件通常存储在公有云平台上,微服务组件的消费者,也就是开发人员如果需要调用微服务组件,通常会在本地计算机上编写代码来调用微服务组件。发明人在实现该技术方案的过程中,发现它至少存在以下几个缺陷。
第一,业务模块的构建方法过于复杂。当需要调用多个微服务组件来组成一个业务模块的时候,一方面,开发人员需要编写代码,通过各个微服务组件的API来分别调用共有云平台上的多个微服务组件;另一方面,由于多个微服务组件之间的输出数据和输入数据通常都不完全一致,上一个微服务组件中的输出数据并不能直接用来作为下一个微服务组件的输入数据,因此需要开发人员通过编写代码,来对上一个微服务组件的输出数据进行转换,使之能够作为下一个微服务组件的输入数据。这样调用多个微服务组件来形成业务模块的过程过于复杂,需要开发人员与计算机进行大量交互,即编写大量的代码,而不具有编码能力的业务人员则无法完成这项工作。
第二,开发周期过长、开发成本过高。采用上述调用多个微服务组件来构建业务模块的方法,在开发人员编写完代码之后,还需要做单元测试,再将交给测试工程师进行测试,测试通过后才能上生产环境,整个过程非常耗费时间和人力,导致开发周期过长、开发成本过高。
第三,不便于修改,对生产环境的稳定性存在影响。在前述的业务模块中,调用微服务组件的代码、进行数据转换的代码等构成一个大的代码模块,多个微服务组件被紧紧地耦合在一起。一旦该业务模块不能满足业务需求而需要进行修改时,首先需要开发人员通过修改代码来适配新的微服务组件,然后再重新进行单元测试、测试工程师测试,最后将通过测试的新的代码模块发布到生产环境(主要指生产用软件系统)中,又会耗费大量的时间和人力。另外,这对于整个生产环境可能产生影响,例如,如果新的代码模块测试不充分,当其发布到生产环境中去运行时,有可能会出现错误,进而导致整个生产环境停止运行。这还可能导致需要重新部署生产环境代码,对执行业务模块的软件系统的稳定性造成影响。
为此,本申请提供了一种基于微服务组件的业务模块的构建方法,以及调用方法,避免在构建业务模块和调用的过程中编写代码,简化与计算机的交互过程,便于业务人员直接根据业务逻辑来装配微服务组件,构建业务模块。
具体地,在第一个实施例中,提供一种基于微服务组件的业务模块的构建方法,请参考图1,包括以下S100至S500的步骤。
S100:获取至少两个微服务组件的表示信息,以及所述至少两个微服务组件之间的顺序关系。
在S100的步骤中,一个微服务组件的表示信息用于表示一个微服务组件,以使其区别于其他的微服务组件,例如,微服务组件的表示信息可以是微服务组件的名称、代号、功能描述等。举例来说,一个微服务组件的名称为“通过车牌号查询车辆信息”,另一个微服务组件的名称为“通过身份证号查询居民户籍信息”。
微服务组件之间的顺序关系,指的是当需要依次调用两个或两个以上的微服务组件时,每一个微服务组件与在其之前调用的微服务组件,或者与在其之后调用的微服务组件之间,所具有的先后顺序关系。例如,一共需要依次调用3个微服务组件(1号组件、2号组件及3号组件),第一个调用的是2号组件,第二个调用的是1号组件,第三个调用的是3号组件,则2号组件与1号组件之间具有直接的先后顺序关系,1号组件与3号组件之间具有直接的先后顺序关系。
此步骤中,可以采用vue-draggable前端插件来实现对微服务组件的表示信息进行拖动的功能,将微服务组件的表示信息拖动到可视化的工作区,以使构建装置获取该微服务组件的表示信息。可以采用Jsplum前端流程控制插件来实现在可视化的工作区中对微服务组件的表示信息进行组合,以使构建装置获取到微服务组件之间的顺序关系。例如,在可视化界面上,每一个节点就可以代表了一个微服务组件,节点的名称可以是微服务组件的名称或代号等,节点之间的连接关系,就表示了微服务组件之间的顺序关系。这样,业务人员就可以在可视化的界面上直接将节点拖动到工作区、连接工作区中的节点等动作来使构建装置获取微服务组件的表示信息,以及多个微服务组件之间的顺序关系。
可选地,在一种实现方式中,获取至少两个微服务组件的表示信息的步骤,请参考图2,可以包括:
S101:获取用户输入的第一检索字段;
S102:将所述第一检索字段与已发布的微服务组件的表示信息、参数信息或对应的标签进行匹配;
S103:显示检索结果集合,所述检索结果集合包括与所述第一检索字段相匹配的微服务组件的表示信息;
S104:获取用户从检索结果集合中选定的微服务组件的表示信息。
已发布的微服务组件的表示信息包括微服务组件的名称、代号、功能描述等;参数信息包括微服务组件的输入参数的参数类、输出参数的参数类,以及参数类的含义等;对应的标签表征微服务组件的应用领域等信息,例如“公安领域”、“交通领域”等。在微服务组件提供者将一个微服务组件上传到微服务注册中心时,需要微服务组件提供者将这些信息也录入注册中心。
在第一检索字段与微服务组件的表示信息、参数信息或对应的标签进行匹配的时候,其中任一项匹配,就可以认为该微服务组件与第一检索字段相匹配,然后获取该微服务组件的表示信息。
举例来说,已发布的微服务组件部分如表1所示。
表1已发布的微服务组件局部示例
用户输入第一检索字段“车牌”,将该第一检索字段与已发布的微服务组件的表示信息或参数信息进行匹配,显示检索结果集合[通过车牌号查询车辆信息,违章罚款缴纳记录查询],即微服务组件1和微服务组件5。用户根据业务需求,选定微服务组件1,即“通过车牌号查询车辆信息”,业务模块构建装置获取用户选定的微服务组件的表示信息。重复上述的方法,可以获取多个微服务组件的表示信息,这些微服务组件都是为了实现业务功能而需要调用的组件。
S200:分别显示第一参数类集合和第二参数类集合。
所述第一参数类集合为第一微服务组件的输出参数的所有参数类的集合,所述第二参数类集合为第二微服务组件的输入参数的所有参数类的集合。每一个微服务组件在发布的时候,都会给微服务组件的消费者(例如开发人员)提供其输入参数和输出参数,其中包括了输入参数的所有参数类以及输出参数的所有参数类。例如,对于名称为“通过车牌号查询车辆信息”的微服务组件1,其输入参数和输出参数如下表2所示。
表2微服务组件1输入参数和输出参数示例
在S200的步骤中,对于在S100步骤中获取到的至少两个微服务组件的顺序关系,针对其中两个具有直接的先后顺序关系的微服务组件,将在先的微服务组件称为第一微服务组件,在后的微服务组件称为第二微服务组件,以便于区分。
第一参数类集合为第一微服务组件的输出参数的所有参数类的集合,以表1的例子为例,则第一参数类集合为[Brands,Color,Name,Id_Number]。将这一参数类集合显示出来,以便开发人员可以从中选择用于建立映射关系的第一参数类。
第二参数类集合为第二微服务组件的输入参数的所有参数类的集合,以名称为“通过身份证号查询居民户籍信息”的微服务组件2为第二微服务组件来举例,其输入参数和输出参数如下表3所示,则第二参数类集合为[Id]。将这一参数类集合显示出来,以便开发人员可以从中选择用于建立映射关系的第二参数类。
表3微服务组件2输入参数和输出参数示例
S300:分别确定用户选定的第一参数类和第二参数类。
在S300的步骤中,第一参数类为第一参数类集合中的一个参数类。以前述的第一参数类集合[Brands,Color,Name,Id_Number]为例,第一参数类可以是“Brands”、“Id_Number”、“Color”或“Name”。第二参数类为第二参数类集合中的一个参数类,以前述的第二参数类集合[Id]为例,第二参数类只能是“Id”。用户可以根据第二微服务组件的输入参数来选定此处的第一参数类。例如,第二微服务组件需要以身份证号来作为其中一项输入数据,而第一参数类集合中“Id_Number”这一个参数类所表示的就是身份证号,那么用户会将“Id_Number”选定为第一参数类,将第二参数类集合中的“Id”选定为第二参数类。
需要说明的是,上述分别显示第一参数类集合和第二参数类集合,以及分别确定用户选定的第一参数类和第二参数类,可以是依次分别显示和确定,例如先显示第一参数类集合,确定第一参数类,然后显示第二参数类集合,确定第二参数类;也可以是同时显示或者同时确定,例如在同一个显示屏幕中同时显示第一参数类集合和第二参数类集合,然后再用户输入选定的第一参数类和第二参数类以后,计算机同时确定第一参数类和第二参数类。本申请对此不做限定。
S400:建立所述第一参数类与第二参数类之间的映射关系。
建立第一参数类和第二参数类之间的映射关系,具体来说,可以通过分别为第一参数类和第二参数类标记相同的或者相应的映射编码来实现,这个映射编码是唯一的并且不可被修改。沿用前述的例子,假设第一参数类为“Id_Number”,第二参数类为“Id”,则为二者分别标记唯一的映射编码。例如,为“Id_Number”和“Id”均标记映射编码102578;又例如,为“Id_Number”标记映射编码102578A,为“Id”标记与之对应的映射编码102578B。
通过标记相同或相应的映射编码的方式,在映射关系建立以后,即便后续微服务组件的提供者对微服务组件进行升级,修改了第一参数类或者第二参数类的名称,也不会影响第一参数类与第二参数类之间的映射关系。
当第二微服务组件的输入参数的参数类超过一个时,可以重复S300和S400的步骤,来分别为其中的每一个参数类,确定用户从第一参数类集合中选定的参数类,来建立映射关系。例如,第二参数类集合为[Id,Full_Name],“Id_Number”和“Id”已经建立了映射关系,还需要为“Full_Name”也建立映射关系。为此,先确定用户从第一参数类集合中选定的第五参数类“Name”,确定用户从第二参数类集合中选定的第六参数类“Full_Name”,然后为二者建立映射关系。
当需要构建的业务模块中仅包括两个微服务组件时,只需要建立这两个微服务组件之间输出参数的参数类与输入参数的参数类之间的映射关系即可。当需要构建的业务模块中包括的微服务组件超过两个时,则具有直接先后顺序关系的微服务组件,两两之间都需要建立前述的映射关系。建立映射关系的步骤与前述S200至S400的步骤类似。
例如,在前述的第二微服务组件之后紧接着需要调用第三微服务组件。先显示第三参数类集合,所述第三参数类集合为第二微服务组件的输出参数的所有参数类的集合;然后确定用户选定的第三参数类,所述第三参数类为第三参数类集合中的其中一个。显示第四参数类集合,所述第四参数类集合为第三微服务组件的输入参数的所有参数类的集合;然后确定用户选定的第四参数类,所述第四参数类为第四参数类集合中的其中一个。建立第三参数类和第四参数类之间的映射关系。如果第三微服务组件的输入参数有多个参数类,即第四参数类集合中有多个参数类,则逐一将他们与第三参数类集合中的参数类建立映射关系。通过这样的方式,就可以将三个微服务组件串联装配起来。
延续前述微服务组件1和微服务组件2的例子,如果微服务组件2之后紧接着需要调用的是名称为“通过户籍所在地查询家庭成员”的微服务组件3(即第三微服务组件),其输入输出参数如表4所示。显示表3的中输出参数的所有参数类,即第三参数集合[Name,Sex,Age,Register_Place],确定用户选定的第三参数类“Register_Place”;显示表4中的输入参数的所有参数类,即第四参数类集合[Permanent_Residence],确定用户选定的第四参数类“Permanent_Residence”。将“Register_Place”与“Permanent_Residence”建立映射关系。
表4微服务组件3输入参数和输出参数示例
通过这样的方式,就可以构建一个基于微服务组件1、2和3的业务模块,利用该业务模块来调用各个微服务组件,就可以实现通过车牌号查询到车主的家庭成员的业务功能。
还例如,在前述的第二微服务组件之后紧接着需要调用第四微服务组件,第四微服务组件可以是名称为“统计年龄段”的微服务组件4,向微服务组件1输入1000条车牌号数据,即参数类“Ip”的参数值,则每一条车牌号数据经过微服务组件1以及第二微服务组件2,都可以查询到一条对应的车主的年龄数据,即参数类“Age”的参数值。然后将这1000条年龄数据的数据组作为微服务组件4的输入数据,经过微服务组件4的统计计算,可以得到处于不同的年龄段的车主人数。其中,第二微服务组件的输出参数的参数类与第四微服务组件的输入参数的参数类之间建立映射关系的方法与前述的方法类似。
S500:生成业务模块,所述业务模块包括所述至少两个微服务组件的表示信息、所述顺序关系和所述映射关系。
在S500的步骤中,将至少两个微服务组件的表示信息、至少两个微服务组件之间的顺序关系,以及前述步骤中所建立的一个或者多个映射关系,一起存储起来,生成一个业务模块。可以为这个业务模块进行命名,例如,前述的微服务组件2、微服务组件3、微服务组件4,三者一起可以实现通过车牌号查询车主家庭成员的功能,因此可以将该业务模块命名为“通过车牌号查询车主家庭成员”。另外,还可以为该业务模块添加业务描述字段,例如“用于通过车辆的车牌号,查询到车主的家庭成员,包括父母、配偶以及子女”。以便业务模块的用户可以通过业务模块的名称或者业务描述字段来了解业务模块的功能,选定合适的业务模块。
在上述技术方案中,业务模块的构建装置在获取了多个微服务组件的表示信息和顺序关系以后,向微服务组件的消费者(例如开发人员、业务人员等)显示第一微服务组件的输出参数的所有参数类,即第一参数类集合,以及第二微服务组件的输入参数的所有参数类,即第二参数类集合。然后用户在第一参数类集合中选定第一参数类,构建装置确定第一参数类;用户在第二参数类集合中选定第二参数类,构建装置确定第二参数类。再建立第一参数类和第二参数类之间的映射关系。最后,将这多个微服务组件的表示信息、顺序关系以及各自的映射关系存储起来,生成一个业务模块。
通过这样的方法,用户只需要选定需要调用的微服务组件,调整好他们之间的顺序关系,以及选定微服务组件之间需要建立映射的参数类即可完成微服务组件的装配工作,构建出一个业务模块。也就是说,这个过程中微服务组件的消费者仅仅需要与计算机进行少量的有限的交互,故而大大简化了构建基于多个微服务组件的业务模块的过程,缩短了业务模块的开发周期,提高了业务模块构建及交付速度。并且,即便是不具有编码能力的业务人员,也可以完成这项工作,减小了业务模块开发的人力成本。
其次,由于业务模块中包含的是微服务组件的表示信息、顺序关系以及映射关系,当业务需求发生改变需要修改某个微服务组件时,只需要修改与该微服务组件的名称、顺序关系和/或映射关系即可,即仅仅需要在业务逻辑层面上进行修改即可,而不需要修改底层的代码,不需要进行单元测试、测试工程师测试、将代码模块发布到生产环境中等步骤,故而避免了这些步骤过程中会产生的耗费人力、时间,以及影响生产用软件系统的稳定性等问题。
再者,在利用业务模块来调用多个微服务组件时,根据业务模块中的微服务组件的表示信息、顺序关系以及映射关系来逐个调用微服务组件,使得多个微服务组件之间并不具有直接的依赖关系,而是通过调用装置间接地依赖,从而达到解耦的目的。
在第二个实施例中,请参考图3,提供一种基于微服务组件的业务模块的调用方法,包括:
S600:获取业务模块;
S700:根据所述业务模块中的至少两个微服务组件的表示信息、顺序关系以及映射关系,调用所述至少两个微服务组件进行计算,得到返回结果。
在S600的步骤中,业务模块指的是利用第一个实施例中的任一种方法所构建的业务模块,具体可参考第一个实施例,此处不再赘述。当业务模块发布在平台上以后,可以以菜单的形式展示给最终用户,以便最终用户从中选定所需的业务模块。
在S700的步骤中,业务模块中包含多个微服务组件的表示信息,首先根据顺序关系确定首个微服务组件的表示信息,然后根据微服务组件的表示信息去调用对应的微服务组件来进行计算,再根据首个微服务组件与第二个微服务组件之间的映射关系来将首个微服务组件的输出数据转换为第二个微服务组件的输入数据,然后调用第二个微服务组件进行计算。如此依照顺序关系逐个调用微服务组件,最后得到返回结果。返回结果一般是顺序关系中最后一个微服务组件的输出参数的所有参数类以及对应的参数值。
可选地,在一种实现方式中,请参考图4,根据所述业务模块中的至少两个微服务组件的表示信息、顺序关系以及映射关系,调用所述至少两个微服务组件进行计算的步骤,可以包括S701至S705的步骤。
S701:根据所述顺序关系确定第一微服务组件的表示信息。
S702:根据第一微服务组件的表示信息,调用第一微服务组件进行计算,得到第一输出数据。其中,所述第一输出数据包括第一微服务组件的输出参数的所有参数类,以及与所述参数类对应的参数值;
S703:根据所述顺序关系确定第二微服务组件的表示信息。
S704:根据所述映射关系,从所述第一输出数据中获取第二输入数据,所述第二输入数据包括第二微服务组件的输入参数的所有参数类,以及与所述参数类对应的参数值。
S705:根据第二微服务组件的表示信息,调用第二微服务组件,以使所述第二微服务组件利用所述第二输入数据进行计算,得到第二输出数据。其中,所述第二输出数据包括第二微服务组件的输出参数的所有参数类,以及与所述参数类对应的参数值。
上述S701至S705的步骤仅仅示出了调用第一微服务组件和第二微服务组件的过程,如果第一微服务组件之前还需要调用其他微服务组件,或者第二微服务组件之后还需要调用其他微服务组件,其调用方式与上述的方法类似。
通过这样的方式,调用装置获取业务模块,并自动地根据业务模块中的信息来按顺序调用微服务组件,并返回最终的计算结果,在这个过程中,多个微服务组件之间并不具有直接的依赖关系,而是通过调用装置间接地依赖,从而达到解耦的目的。
以第一个实施例中所构建的业务模块“通过车牌号查询车主家庭成员”为例,该业务模块中包括表1的微服务组件1、微服务组件2和微服务组件3的名称;三者的顺序关系为:微服务组件1→微服务组件2→微服务组件3。
映射关系包括:
微服务组件1的输出参数的参数类“Id_Number”与微服务组件2的输入参数的参数类“Id”;
微服务组件2的输出参数的参数类“Register_Place”与微服务组件3的输入参数的参数类“Permanent_Residence”。
根据顺序关系,可以确定首个微服务组件为微服务组件1,其名称即为第一微服务组件的表示信息。根据微服务组件1的名称去微服务注册中心调用微服务组件1,以“京1234”为参数类“Ip”的参数值,计算得到第一输出数据,包括:“Brands”的参数值“大众”,“Color”的参数值“黑色”,“Name”的参数值“赵三三”,“Id_Number”的参数值“110105197712211234”。然后根据顺序关系确定下一个需要调用的微服务组件为微服务组件2,其名称即为第二微服务组件的表示信息。根据映射关系可以知道“Id_Number”和“Id”之间具有映射关系,故而根据微服务组件2的名称去微服务注册中心调用微服务组件2,以“110105197712211234”作为“Id”的参数值(即第二输入数据),计算得到第二输出数据,包括:“Name”的参数值“赵三三”,“Sex”的参数值“男”,“Age”的参数值“39”,“Register_Place”的参数值“北京市朝阳区XX街道XX社区XX号楼XX室”。
再以微服务组件2为第一微服务组件,以微服务组件3为第二微服务组件,重复上述的S703至S705的调用过程,就可以得到微服务组件3的输出结果,例如包括“Name1”的参数值“赵大大”,“Name2”的参数值“钱一一”,“Name3”参数值“赵三三”。
请参考图5至图7,在第三个实施例中,首先提供一种基于微服务组件的业务模块的构建装置,包括:
第一获取单元1,用于获取至少两个微服务组件的表示信息,以及所述至少两个微服务组件之间的顺序关系;
显示单元2,用于分别显示第一参数类集合和第二参数类集合,其中,所述第一参数类集合为第一微服务组件的输出参数的所有参数类的集合,所述第二参数类集合为第二微服务组件的输入参数的所有参数类的集合;
第一处理单元3,用于分别确定用户选定的第一参数类和第二参数类;建立所述第一参数类与第二参数类之间的映射关系;以及,生成业务模块;其中,所述第一参数类为第一参数类集合中的一个参数类;所述第二参数类为第二参数类集合中的一个参数类;所述业务模块包括所述至少两个微服务组件的表示信息、所述顺序关系和所述映射关系。
可选地,第一处理单元3还可以用于为所述第一参数类和所述第二参数类分别标记相同或相应的映射编码。
可选地,第一获取单元1还可以用于获取用户输入的第一检索字段;将所述第一检索字段与已发布的微服务组件的表示信息、参数信息或对应的标签进行匹配;显示检索结果集合,所述检索结果集合包括与所述第一检索字段相匹配的微服务组件的表示信息;以及,获取用户从检索结果集合中选定的微服务组件的表示信息。
可选地,所述获取单元1还可以用于利用vue-draggable前端插件获取至少两个微服务组件的表示信息;以及,利用Jsplum前端流程控制插件获取所述至少两个微服务组件之间的顺序关系。
另外,本实施例还提供一种基于微服务组件的业务模块的调用装置,包括:
第二获取单元4,用于获取业务模块,所述业务模块前述的构建装置所构建得到;
第二处理单元5,用于根据所述业务模块中的至少两个微服务组件的表示信息、顺序关系以及映射关系,调用所述至少两个微服务组件进行计算,得到返回结果。
可选地,所述第二处理单元5还可以用于根据所述顺序关系确定第一微服务组件的表示信息;根据所述第一微服务组件的表示信息,调用第一微服务组件进行计算,得到第一输出数据;根据所述顺序关系确定第二微服务组件的表示信息;根据所述映射关系,从所述第一输出数据中获取第二输入数据;以及,根据所述第二微服务组件的表示信息,调用第二微服务组件,以使所述第二微服务组件利用所述第二输入数据进行计算,得到第二输出数据,其中,所述第一输出数据包括第一微服务组件的输出参数的所有参数类,以及与所述参数类对应的参数值,所述第二输入数据包括第二微服务组件的输入参数的所有参数类,以及与所述参数类对应的参数值,所述第二输出数据包括第二微服务组件的输出参数的所有参数类,以及与所述参数类对应的参数值。
上述的构建装置、调用装置是第一个实施例和第二个实施例中构建方法和调用方法所对应的装置,具有与构建方法和调用方法相应的有益效果,此处不再赘述。
此外,本实施例还提供一种基于微服务组件的云平台,包括了前述的构建装置和调用装置。
可选地,该云平台还可以包括微服务注册中心,所述微服务注册中心用于存储至少两个微服务组件,以及所述至少两个微服务组件各自对应的表示信息、参数信息和/或标签。
如果共享的微服务组件是被共享在共有云平台上,那么本申请中云平台上的调用装置根据业务模块通过外网去调用其他平台上的各个微服务组件。
而当本申请的云平台本身就包括微服务注册中心之后,就可以直接通过该云平台上的微服务注册中心来同一存储、管理各个微服务组件,该平台就既可以在私有云环境下部署,也可以在公有云环境下部署,而不需要依赖其他公有云平台上的微服务组件。这使得本申请的云平台更适合用在公安领域等应用场景中。
本说明书中各个实施例之间相同相似的部分互相参见即可。以上所述的本发明实施方式并不构成对本发明保护范围的限定。