发明内容
本申请提供了一种微服务接口数据聚合系统及方法,以解决的问题。
一方面,本申请提供一种微服务接口数据聚合系统,包括:配置模块、请求解析模块、请求分发模块以及聚合模块;
其中,所述配置模块被配置为:获取原始请求,以及根据所述原始请求生成请求配置项;所述请求配置项包括请求映射配置项、路由方式配置项、请求分发模式配置项以及请求聚合模式配置项;
所述请求解析模块被配置为:根据所述请求映射配置项拆解所述原始请求,生成多个子请求;
所述请求分发模块被配置为:根据所述路由方式配置项和所述请求分发模式配置项将多个所述子请求分发至多个微服务;以及,接收各微服务返回的执行结果,并将所述执行结果转发至所述聚合模块;
所述聚合模块被配置为:根据所述请求聚合模式配置项将多个执行结果进行聚合计算,生成聚合结果;以及,将所述聚合结果发送至所述配置模块。
可选的,所述配置模块通过网关设备连接用户终端,以通过所述网关设备获取所述用户终端发送的原始请求;以及通过所述网关设备向所述用户终端发送聚合结果。
可选的,所述请求配置项还包括数据聚合计算公式配置项;
所述聚合模块还被配置为,根据所述数据聚合计算公式配置项将多个执行结果聚合为一个聚合结果。
可选的,所述请求分发模式配置项包括:有序分发和无序分发;
所述配置模块被进一步配置为:判断所述原始请求是否为无序请求;
如果所述原始请求是无序请求,生成包含无序分发模式的请求分发模式配置项;
如果所述原始请求是有序请求,生成包含有序分发模式的请求分发模式配置项,以及指定子请求的分发顺序。
可选的,所述请求分发模块被进一步配置为:
如果所述原始请求是无序请求,将多个子请求并行分发至多个微服务;
如果所述原始请求是有序请求,按照所述分发顺序串行将多个子请求分发至多个微服务。
可选的,所述配置模块被进一步配置为:
判断所述原始请求是否需要拆分;
如果所述原始请求需要拆分,生成请求映射配置项;
将所述原始请求和所述请求映射配置项发送至所述请求解析模块;
如果所述原始请求无需拆分,将所述原始请求发送至所述请求分发模块。
可选的,如果所述原始请求无需拆分,所述请求分发模块被进一步配置为:
解析所述原始请求的目标微服务;
遍历微服务接口,确定目标微服务对应的接口;
将所述原始请求通过确定的接口,发送至所述目标微服务。
可选的,所述请求配置项为包含请求映射配置项、路由方式配置项、请求分发模式配置项以及请求聚合模式配置项的数据表;所述配置模块被进一步配置为:
同时向所述请求解析模块、请求分发模块以及聚合模块发送所述请求配置项。
另一方面,本申请还提供一种微服务接口数据聚合方法,包括:
获取原始请求;
根据所述原始请求生成请求配置项;所述请求配置项包括请求映射配置项、路由方式配置项、请求分发模式配置项以及请求聚合模式配置项;
根据所述请求映射配置项拆解所述原始请求,生成多个子请求;
根据所述路由方式配置项和所述请求分发模式配置项,将多个所述子请求分发至多个微服务;
接收各微服务返回的执行结果;
根据所述请求聚合模式配置项将多个执行结果进行聚合计算,生成聚合结果。
可选的,在获取原始请求后,所述方法还包括:
判断所述原始请求是否为无序请求;
如果所述原始请求是无序请求,生成包含无序分发模式的所述请求分发模式配置项;
将多个子请求并行分发至多个微服务;
如果所述原始请求是有序请求,生成包含有序分发模式的所述请求分发模式配置项,以及指定子请求的分发顺序;
按照所述分发顺序串行将多个子请求分发至多个微服务。
由以上技术方案可知,本申请提供一种微服务接口数据聚合系统及方法,所述系统包括:配置模块、请求解析模块、请求分发模块以及聚合模块。其中,配置模块被在获取原始请求后,根据所述原始请求生成请求配置项,以使请求解析模块根据请求配置项中的请求映射配置项拆解所述原始请求,生成多个子请求,以及通过请求分发模块将多个所述子请求分发至多个微服务,并接收各微服务返回的执行结果,以使聚合模块将多个执行结果进行聚合计算,生成聚合结果。所述系统可以并发获取底层数据,提高接口响应速度,并且支持自定义数据聚合过程,使得接口的变更和维护更加高效。
具体实施方式
下面将详细地对实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下实施例中描述的实施方式并不代表与本申请相一致的所有实施方式。仅是与权利要求书中所详述的、本申请的一些方面相一致的系统和方法的示例。
参见图1,为本申请一种微服务接口数据聚合系统的结构示意图。由图1可知,本申请提供的微服务接口数据聚合系统,包括:配置模块1、请求解析模块2、请求分发模块3以及聚合模块4。各模块可以相互通信传递配置文件或数据,以形成聚合系统。所形成的聚合系统可以接入微服务架构中,即同时连接多个用户终端5和多个微服务(A、B、C、D)的API。
实际应用中,用户根据自身需要在用户终端中发布请求,聚合系统会根据发布的请求先对请求进行分解,以分发至多个微服务模块进行响应,微服务模块在针对各自接收到的请求反馈请求的执行结果;聚合系统再将执行结果进行聚合运算,以统一反馈给用户终端,完成接口数据配置。
具体地,所述配置模块1被配置为:获取原始请求,以及根据所述原始请求生成请求配置项。其中,所述请求配置项是配置模块1根据原始请求作出的多种数据处理方式对应的数据项。例如,针对请求解析模块2配置的请求映射配置项;针对请求分发模块3配置的路由方式配置项和请求分发模式配置项;以及,针对聚合模块4配置的请求聚合模式配置项。
可见,本申请中配置模块1可用于配置请求映射以及路由方式;配置请求分发模式,例如:并行/串行方式,有序/无序方式等;配置数据聚合模式,例如,对执行结果数据求交集/求并集等逻辑运算,以控制请求解析模块2、请求分发模块3以及聚合模块4,完成对原始请求的分发和聚合。
所述请求解析模块2被配置为:根据所述请求映射配置项拆解所述原始请求,生成多个子请求。实际应用中,配置模块1在生成请求配置项后,可以向请求解析模块2、请求分发模块3以及聚合模块4发送对应的请求配置项。请求解析模块2在接收到请求配置项后,可以对请求配置项中关于请求分解部分的配置项进行提取,以处理原始请求。
即,如图2所示,请求解析模块2可以根据配置模块1中的请求映射配置项,拆解原始请求。实际应用中,对原始请求的拆解可底层微服务的功能限定为依据。请求解析模块2可以针对原始请求所需求的总功能,分解为多个小功能,即对应多个子请求。
由于微服务具有多个层级结构,上层微服务所实现的功能包含下级微服务,并且统一微服务所具有的功能是可以变化的,例如部分微服务会整合新功能。因此,在实际应用中,请求解析模块2还可以对拆解的请求进行二次组装,以降低接口配置数量,从而尽量快的完成接口数据对接。
所述请求分发模块3被配置为:根据所述路由方式配置项和所述请求分发模式配置项将多个所述子请求分发至多个微服务。在请求解析模块2完成对原始请求的拆解或组装后,请求分发模块3可以针对拆解获得的多个子请求分别进行分发传递,使得各子请求以相互独立的方式向微服务模块发起访问。
各微服务在接收到子请求后,可以针对子请求执行相应的接口对接,即对接微服务的API。在完成接口对接后,微服务模块可以反馈执行结果,以完成用户终端与微服务的接口对接,实现相应的功能。因此,请求分发模块3还被配置为接收各微服务返回的执行结果,并将所述执行结果转发至所述聚合模块。
所述聚合模块4被配置为:根据所述请求聚合模式配置项将多个执行结果进行聚合计算,生成聚合结果。实际应用中,针对每个子请求,微服务模块会针对接收到的子请求反馈执行结果,其中执行结果包括接口的对接方式等数据。
例如,对于一个原始请求Q,经请求解析模块2处理后,生成Q1,Q2,Q3三个子请求,再通过请求分发模块3,将子请求Q1、Q2、Q3分别分发给A、B、C三个微服务,微服务通过接收子请求,反馈对应的接口数据执行结果,如R1、R2、R3,并分别反馈给请求分发模块3。请求分发模块3再将执行结果R1、R2、R3转发给聚合模块4,以使得聚合模块4根据请求聚合模式配置项对执行结果R1、R2、R3进行聚合运算,如求交集或并集等逻辑运算,生成聚合结果R。
生成聚合结果R后,聚合模块4还可以将所述聚合结果R发送至所述配置模块1,以通过配置模块1,将聚合结果R反馈给用户终端,完成接口对接。可见,本申请提供的接口数据聚合系统,可实现每当有新的底层接口或者前端有新的业务数据构造时,不需要前置服务重新对接接口,只需通过配置方式,直接完成新的接口对接,极大的减轻了前端开发与后端开发对接时的工作量。
在本申请的部分实施例中,为了接入用户终端以及传递接口数据,所述系统还包括网关设备6。网关设备(Gateway)6可以在多个网络间提供数据转换服务,从而使多个用户终端5能够接入本申请的微服务接口数据聚合系统,完成各自的接口配置。具体地,所述配置模块1可通过网关设备6连接用户终端5,以通过所述网关设备6获取所述用户终端5发送的原始请求;以及通过所述网关设备6向所述用户终端5发送聚合结果。
在本申请的部分实施例中,所述请求配置项还包括数据聚合计算公式配置项。计算公式可以由多个预先配置的运算函数模板组合而成。例如,在聚合计算公式可以为:
R=F[f(R1)+f(R2)+f(R3)+……+f(Rn)];
式中,R为聚合结果;R1、R2、R3、……、Rn分别为多个微服务反馈的执行结果;f为对执行结果实施的数据转换运算;F为针对多个执行结果执行的逻辑运算。
所述聚合模块4还被配置为根据所述数据聚合计算公式配置项将多个执行结果聚合为一个聚合结果。实际应用中,配置模块1可以在获取到原始请求后,针对原始请求,确定与多个子请求之间的映射关系。并且,在确定映射关系后,根据映射关系确定聚合计算公式,即针对原始请求进行的分解运算,与针对多个执行结果进行的聚合运算可以为互逆运算,并将确定的计算方式分别以请求映射配置项和请求聚合模式配置项的方式分别发送给请求解析模块2和聚合模块4,从而确保聚合结果与分解方式相适应,能够被用户终端5使用,完成接口配置。
在本申请的部分实施例中,如图3所示,所述请求分发模式配置项包括:有序分发和无序分发。其中,有序分发是指多个子请求之间有先后访问的顺序,一般适用于多个微服务的输出结果之间有相互影响的情况,例如,微服务B的输入中,包含微服务A的输出结果,即微服务B需要在微服务A完成输出的情况下,才能实施具体的数据计算,因此,分发给微服务A和微服务B的子请求也要有先后顺序,即先分发给微服务A,再分发给微服务B。
无序分发是指多个子请求之间没有先后方位顺序,可适用于多个微服务输出结果之间没有相互影响的情况。因此,所述配置模块1被进一步配置为:判断所述原始请求是否为无序请求。具体的判断依据可以原始请求的分解方式以及原始请求对应所要达到的功能确定。例如,原始请求中对应要实现的功能需要串行执行,则分解的多个子请求之间具有先后顺序,因此确定原始请求为有序请求。反之,如果原始请求中对应要实现的各个功能需要并行执行,则分解的多个子请求之间没有先后顺序,可确定原始请求为无序请求。
针对不同的分发方式,配置模块1可以配置不同的请求分发模式配置项。如果所述原始请求是无序请求,生成包含无序分发模式的请求分发模式配置项。如果所述原始请求是有序请求,生成包含有序分发模式的请求分发模式配置项,以及指定子请求的分发顺序。进一步地,为了执行请求的分发,所述请求分发模块3被进一步配置为:如果所述原始请求是无序请求,将多个子请求并行分发至多个微服务;如果所述原始请求是有序请求,按照所述分发顺序串行将多个子请求分发至多个微服务。
需要说明的是,在实际应用中,对于原始请求对应的功能,可能并不局限于一种执行顺序,即在原始请求对应的多个子功能下,部分子功能需要有执行的先后顺序,部分子功能不需要有执行的先后顺序。因此,本申请提供的聚合系统可以分别针对子功能对应的子请求进行不同的数据分发方式。相应的配置模块1被配置为:生成包含有序分发模式的请求分发模式配置项,以及指定部分子请求的分发顺序。同样,请求分发模块3被配置为:提取具有分发顺序的子请求,按照指定的分发顺序,将提取的子请求串行将多个子请求分发至多个微服务;以及将其余子请求并行分发至多个微服务。
在本申请的部分实施例中,如图4所示,所述配置模块1被进一步配置为:判断所述原始请求是否需要拆分。原始请求的判断依据可以根据原始请求对应的所要实现的功能和微服务的层级关系进行确定。例如,原始请求所对应要实现的功能是一个基础功能,该基础功能通过访问一个微服务即可实现,则该原始请求无需进行拆分。如果原始请求对应一个较复杂的处理程序,对应一个复杂功能。要想实现该功能,需要访问多个微服务,则原始请求需要进行拆分。
如果所述原始请求需要拆分,生成请求映射配置项。并且,将所述原始请求和所述请求映射配置项发送至所述请求解析模块2,以便按照上述请求拆解以及分发方式,对原始请求进行处理。如果所述原始请求无需拆分,则可以跳过原始请求的拆解程序,直接将所述原始请求发送至所述请求分发模块3。
相应地,如果所述原始请求无需拆分,所述请求分发模块3被进一步配置为:解析所述原始请求的目标微服务;在配置模块1将原始请求转发给请求分发模块3后,请求分发模块3可以对原始请求进行解析,确定能够实现原始请求对应功能的微服务为目标微服务,再遍历所有微服务接口,确定目标微服务对应的接口,从而将所述原始请求通过确定的接口,发送至所述目标微服务。
在本申请的部分实施例中,所述请求配置项为包含请求映射配置项、路由方式配置项、请求分发模式配置项以及请求聚合模式配置项的数据表。实际应用中,可以在一个数据表中,包含全部请求配置项。并且,所述配置模块1被进一步配置为:同时向所述请求解析模块2、请求分发模块3以及聚合模块4发送所述请求配置项。配置模块1可以将该数据表统一向其他模块进行发送,而其他模块可以根据自身所具有的功能,在数据表中查找对应配置项。
例如,配置模块1生成的数据表包括如下内容:
其中,mappings.mapping1.uri表示原始请求路径;mappings.mapping1.method表示原始请求方式;mappings.mapping1.desc表示原始请求说明;mappings.mapping1.aggregation表示请求结果聚合方式;mappings.mapping1.routes.route1.uri表示子请求路径;mappings.mapping1.routes.route1.method表示子请求方式;mappings.mapping1.routes.route1.media表示子请求提交方式;mappings.mapping1.routes.route1.desc表示子请求说明;mappings.mapping1.routes.route1.service表示子请求对应的服务名;mappings.mapping1.routes.route1.order表示子请求的执行顺序。
可见,各模块可以通过读取上述数据表,获得对应的配置项。例如,请求分发模块3可以在数据表中读取“mappings.mapping1.routes.route1.media(子请求提交方式)”,“mappings.mapping1.routes.route1.service(子请求对应的服务名)”,“mappings.mapping1.routes.route1.order(子请求的执行顺序)”对应的配置值,以进行子请求的分发。而聚合模块4可以在数据表中读取“mappings.mapping1.aggregation(请求结果聚合方式)”,以便将执行结果进行聚合。
可见,在本实施例中,可以通过在配置文件中增加配置项的方式,实现当原始请求进入所述系统后,则根据配置项自动解析和组装成前端需要的数据。该过程不需要书写多余代码,完全由配置项决定,提高接口响应速度。
由以上技术方案可知,本申请提供的微服务接口数据聚合系统,使用可配置化的模式来完成接口对接过程。整个对接过程可以通过增加配置文件的方式,自定义请求分发,自定义数据聚合。当业务需求发生变更,底层微服务接口发生变动时,不需要进行接口层面的改动,只需修改配置文件即可,既提高容错率,又节省开发成本。
基于上述微服务接口数据聚合系统,如图5所示,本申请还提供一种微服务接口数据聚合方法,包括以下步骤:
S1:获取原始请求;
S2:根据所述原始请求生成请求配置项;所述请求配置项包括请求映射配置项、路由方式配置项、请求分发模式配置项以及请求聚合模式配置项;
S3:根据所述请求映射配置项拆解所述原始请求,生成多个子请求;
S4:根据所述路由方式配置项和所述请求分发模式配置项,将多个所述子请求分发至多个微服务;
S5:接收各微服务返回的执行结果;
S6:根据所述请求聚合模式配置项将多个执行结果进行聚合计算,生成聚合结果。
由以上步骤可知,本申请在获取原始请求后,可先根据原始请求生成请求配置项,以根据请求映射配置项拆解原始请求,生成多个子请求,再根据路由方式配置项和请求分发模式配置项,将多个子请求分发至多个微服务并分别接收各微服务返回的执行结果,最后根据请求聚合模式配置项将多个执行结果进行聚合计算,生成聚合结果,从而向发送原始请求的用户终端反馈接口配置数据,完成接口配置。
进一步地,在获取原始请求后,如图6所示,所述方法还包括:
S101:判断所述原始请求是否为无序请求;
S102:如果所述原始请求是无序请求,生成包含无序分发模式的所述请求分发模式配置项;
S103:将多个子请求并行分发至多个微服务;
S104:如果所述原始请求是有序请求,生成包含有序分发模式的所述请求分发模式配置项,以及指定子请求的分发顺序;
S105:按照所述分发顺序串行将多个子请求分发至多个微服务。
由以上步骤可知,本申请可以对原始请求是否为无序请求进行判断,从而确定各子请求的分发方式。如果原始请求是无序请求,将多个子请求并行分发至多个微服务,以1.并发获取底层数据,提高接口响应速度;如果原始请求是有序请求,按照分发顺序串行将多个子请求分发至多个微服务,以保证原始请求的接口配置准确性。
进一步地,如图7所示,在获取原始请求后,所述方法还包括:
S111:判断所述原始请求是否需要拆分;
S112:如果所述原始请求需要拆分,生成请求映射配置项;
S113:将所述原始请求和所述请求映射配置项发送至所述请求解析模块;
S114:如果所述原始请求无需拆分,将所述原始请求发送至所述请求分发模块。
由以上步骤可知,本申请在获取原始请求后可以对原始请求是否需要拆分进行判断,以根据原始请求是否需要拆分,确定相应的配置文件传输方式。如果原始请求需要拆分,则生成请求映射配置项,并且将原始请求和请求映射配置项发送至请求解析模块,将原始请求拆分成多个子请求。如果原始请求无需拆分,将原始请求直接发送至请求分发模块,从而提高请求处理效率。
进一步地,如图8所示,如果所述原始请求无需拆分,所述方法还包括:
S1141:解析所述原始请求的目标微服务;
S1142:遍历微服务接口,确定目标微服务对应的接口;
S1143:将所述原始请求通过确定的接口,发送至所述目标微服务。
由以上技术方案可知,本申请提供一种微服务接口数据聚合系统及方法,所述系统包括:配置模块、请求解析模块、请求分发模块以及聚合模块。其中,配置模块被在获取原始请求后,根据所述原始请求生成请求配置项,以使请求解析模块根据请求配置项中的请求映射配置项拆解所述原始请求,生成多个子请求,以及通过请求分发模块将多个所述子请求分发至多个微服务,并接收各微服务返回的执行结果,以使聚合模块将多个执行结果进行聚合计算,生成聚合结果。所述系统可以并发获取底层数据,提高接口响应速度,并且支持自定义数据聚合过程,使得接口的变更和维护更加高效。
本申请提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本申请总的构思下的几个示例,并不构成本申请保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本申请方案所扩展出的任何其他实施方式都属于本申请的保护范围。