一种分布式微服务的调用和查询方法、系统与流程

文档序号:20439212发布日期:2020-04-17 22:17阅读:199来源:国知局
一种分布式微服务的调用和查询方法、系统与流程

本发明涉及通信技术领域,具体地说是一种分布式微服务的调用和查询方法、系统。



背景技术:

在现有微服务架构中,虽然服务与服务之间职责逐渐单一化,但是在进行一个整体业务串接处理过程中还是通过硬编码的形式进行业务组合实现,形成了高度耦合设计,不能很好的体现架构设计中低耦合高内聚的设计原则。

微服务与微服务之间耦合度高,对于业务的改动一定需要改动代码,修改性弱,比较难适应需求的快速变化,且对于后期任务的追踪性不透明。

本申请所要解决的技术问题是:如何降低分布式微服务调用时候的耦合性,提高任务跟踪的便捷性。



技术实现要素:

本发明的目的在于提供一种分布式微服务的调用和查询方法、系统,该方法采用任务协调中心预先设置多个任务集,通过接收客户端发送的业务请求并匹配对应的任务集,任务协调中心通过接口调用微服务,在更改业务请求或对业务请求进行调整时,客户端无需进行微服务调用请求的代码的重新编写,可直接匹配不同的任务集或对任务集中的一项或多项任务停用即可,同时,还通过反馈给客户端任务集的id供客户端可直观查询业务执行进度和具体执行情况。

本发明的具体的技术方案为:一种分布式微服务的调用和查询方法,所述方法为:

步骤1:任务协调中心接收客户端的业务请求,并根据业务请求匹配预存在任务协调中心的任务集并将任务集的id反馈给客户端;所述任务集中规定了微服务的调用规则;

需要说明的是,所述任务集包含多个任务集任务,多个任务集任务以及任务集任务的执行规则表示调用了哪些微服务以及微服务的调用规则。

任务集有任务协调中心的任务集模型产生,不同的业务请求对应不同的任务集。

步骤2:根据任务集按照调用规则调用微服务,并接收来自于微服务的反馈结果,将多个微服务反馈的反馈结果进行整理得到任务执行结果;

步骤3:任务协调中心将任务执行结果发送给客户端;

在步骤2-3中,所述客户端根据任务集的id生成用于查询任务集的执行情况的查询指令并发送给任务协调中心,所述任务协调中心反馈给客户端查询结果。

在上述的分布式微服务的调用和查询方法中,所述调用规则包括多个微服务的调用顺序、微服务调用失败后的重试次数、微服务以同步或异步请求的调用方式。

在上述的分布式微服务的调用和查询方法中,所述查询结果包括:业务执行成功或失败、任务集中各微服务的反馈结果。

在上述的分布式微服务的调用和查询方法中,还包括步骤4:任务协调中心将任务执行结果中未获得反馈的任务停用,并更新任务集。

在上述的分布式微服务的调用和查询方法中,还包括步骤5:任务协调中心定期对各任务集进行轮训,将轮训的结果反馈给客户端并执行步骤4。

同时,本发明还公开了一种分布式微服务的调用和查询系统,包括:

客户端:用于生成业务请求、查询指令;

任务协调中心,包括如下模块:

任务集存储模块:用于存储与不同业务请求匹配的多个任务集;

任务集查询模块:用于接收客户端发送的业务请求,并从任务集存储模块获取与该业务请求匹配的任务集,将该任务集的id发送给客户端;所述查询指令根据任务集的id生成;所述任务集中规定了微服务的调用规则;

微服务调用模块:用于根据任务集查询模块获取的任务集通过接口调用微服务;

任务执行结果生成模块:用于接收微服务的反馈结果并根据多个微服务的反馈结果生成任务执行结果,并将任务执行结果反馈给客户端;

进度查询模块:用于接收客户端的查询指令,并查询多个微服务的查询任务集的执行情况,并将执行情况作为查询结果反馈给客户端。

在上述的分布式微服务的调用和查询系统中,所述任务协调中心还包括任务集更新模块:用于在任务集中将任务执行结果生成模块生成的任务执行结果中未获得反馈的任务停用,并将任务集存储模块中的任务集更新。

在上述的分布式微服务的调用和查询系统中,还包括业务应用中心,所述业务应用中心设置在客户端和任务协调中心之间,用于接收客户端发送的业务请求并验证该业务请求、将业务请求转发至任务集查询模块、接收任务执行结果生成模块、反馈的任务执行结果并转发至客户端。

在上述的分布式微服务的调用和查询系统中,所述调用规则包括多个微服务的调用顺序、微服务调用失败后的重试次数、微服务以同步或异步请求的调用方式;所述查询结果包括:业务执行成功或失败、任务集中各微服务的反馈结果。

在上述的分布式微服务的调用和查询系统中,所述任务协调中心还包括轮训模块,所述轮训模块用于定期对各任务集进行轮训,将轮训的结果反馈给客户端并任务集更新模块更新任务集。

与现有技术相比,本发明的有益效果在于:

本发明的方法采用任务协调中心预先设置多个任务集,通过接收客户端发送的业务请求并匹配对应的任务集,任务协调中心通过接口调用微服务,在更改业务请求或对业务请求进行调整时,客户端无需进行微服务调用请求的代码的重新编写,可直接匹配不同的任务集或对任务集中的一项或多项任务停用即可,同时,还通过反馈给客户端任务集的id供客户端可直观查询业务执行进度和具体执行情况。

本发明的系统通过在任务协调中心设置任务集存储模块、任务集查询模块、微服务调用模块、任务执行结果生成模块、进度查询模块,可降低分布式微服务调用时候的耦合性,提高任务跟踪的便捷性。

附图说明

图1为本发明实施例1的流程框图;

图2为本发明实施例1的并行结构的任务集示意图;

图3为本发明实施例1的串行结构的任务集示意图;

图4为本发明实施例1的并行结构的任务集的执行流程图;

图5为本发明实施例1的串行结构的任务集的执行流程图;

图6为本发明实施例1的流程示意图;

图7为本发明实施例2的结构框图。

具体实施方式

下面结合具体实施方式,对本发明的技术方案作进一步的详细说明,但不构成对本发明的任何限制。

实施例1

如图1-6所示,一种分布式微服务的调用和查询方法,其特征在于,所述方法为:

步骤1:任务协调中心接收客户端的业务请求,并根据业务请求匹配预存在任务协调中心的任务集并将任务集的id反馈给客户端;所述任务集中规定了微服务的调用规则;

业务请求是有客户端执行的,一个业务请求中包含多个任务,比如一个具体的业务请求为:电商发货请求,该请求就可能包含多个任务:调用物流微服务以生成物流单据,调用订单更新微服务以将订单更改成发货状态,调用短信通知微服务以发给客户一个订单状态变更的短信。

客户端发送给任务协调中心的业务请求为一名称或代号,任务协调中心预先存储多个不同的任务集,每个任务集都有唯一的id号,每个任务集与业务请求一一对应,所以当任务协调中心接收到业务请求时,就可以匹配到对应的任务集。

任务集以树状形式将业务中的多个任务予以分解,每个任务对应一个或多个微服务。

任务集中的各任务根据其之间的依赖关系都有不同的执行顺序和相应的执行规则,具体来说,任务集规定了微服务调用的调用规则,调用规则包括多个微服务的调用顺序、微服务调用失败后的重试次数、微服务以同步或异步请求的调用方式。

具体来说,根据任务之间的依赖关系不同,任务集中的各任务以串行、并行的方式执行,如一个任务集中多个任务之间互不依赖,则各个任务之间以并行的方式执行,在调用微服务时优选以异步请求的方式予以调取,即无需等待上一微服务的反馈,所有任务均同时调用微服务。参考图2,假设一个任务集中有并行的方式含有task1,task2,task3三个任务,那么在调用这三个任务时,以异步请求的方式同时调用。

假如一个任务集中2个或多个任务之间有依赖的关系,则依赖的两个或多个任务在调用微服务时,应当优先调用上一层级的任务的微服务,待上一层级的任务执行获得反馈后再执行下一层级的任务,调用对应的微服务。因此具有依赖关系的两个或多个微服务中上一层级的任务应当采用同步请求的方式调用。参考图3,假设一个任务集中有并行的方式含有task1,task2,task3,task4四个任务,那么在调用这四个任务时,以task1,task2,task3应当以同步请求的方式依次调用。

此外,调用规则还规定了微服务调用失败后的重试次数,并在重试次数超过预设次数后向客户端发出告警,通知运维人员及时处理。

步骤2:根据任务集按照调用规则调用微服务,并接收来自于微服务的反馈结果,将多个微服务反馈的反馈结果进行整理得到任务执行结果;

任务执行结果为任务执行完成、任务执行未完成的结果,但是并不排斥于将任务集中各任务以树状形式反馈给客户端,以使客户端能够更为详细的得知任务集的执行情况。

步骤3:任务协调中心将任务执行结果发送给客户端;

在本发明中,一个非常重要的发明点在于:

在步骤2-3中,所述客户端根据任务集的id生成用于查询任务集的执行情况的查询指令并发送给任务协调中心,所述任务协调中心反馈给客户端查询结果。

这个设计的目的在于,在很多情况下,特别是在同步请求的方式依次调用微服务时,可能存在任务执行结果反馈过慢的问题,客户端长时间无法得知任务的执行情况。

所以在本发明中,客户端可以主动的对任务协调中心针对业务请求的执行情况进行主动问询。

其具体的问询方式为:通过步骤1发送的任务集的id生成查询指令,查询指令包含该任务集的id,当任务协调中心得到该任务集id时,会将任务集的任务总体执行情况异议反馈,反馈可以分为三种结果:执行完成、执行未完成、执行中止,其中执行完成是指各任务均已完成,执行未完成是指某一项或多项任务正在执行过程中,本处所述执行包括任意的任务正在重试,执行中止是指针对同步请求的方式依次调用微服务时某一项微服务重试多次后仍无法从微服务中获得反馈的情况。

更为优选地,执行情况还包括将任务集中的各任务对应的微服务的反馈情况以树状形式展示并发送给客户端,客户端在可点击该任务集以明确获知具体哪个微服务执行出现问题。这种优选方式特别适用于客户中的运维人员,也方便客户及时通知运维人员去处理相关故障或者获取当前的各任务的执行结果。

本任务协调中心还可以通过运维人员的直接操作或者自动的将任务执行结果中未获得反馈的任务停用,并更新任务集。

运维人员直接操作的方式为:找到任务集,并对任务集中的任务停用,当停用任务集中某一项或多项任务后,该任务对应的接口也相应停用。当微服务恢复正常后,运维人员恢复任务集中该任务的执行,该相应的接口也启用。

自动执行的方式为:在一个任务集中,预先设定哪些任务为核心任务,哪些任务为非核心任务,若非核心任务的微服务无反馈,则任务协调中心在执行完本次任务集后,任务协调中心会将该任务集中与无反馈的微服务对应的任务停止,并更新任务集,同时将更新信息推送给客户端。如果是核心任务的微服务的无反馈,则会向客户端发出告警,同时也将警报通过短信、邮件或其他方式主动通知运维人员核心任务出现故障,运维人员根据该警报尽快恢复该微服务。

为了保持运行过程的可靠平稳,任务协调中心还需要定期的对任务集进行轮训,轮训的方法为:任务协调中心定期将各个任务集执行,调用任务集中所有任务对应的各个微服务,判断各个微服务是否能够正常反馈,如果不能正常反馈,则将不能正常反馈的微服务以告警的形式通知运维人员,保持各个任务集都能随时正常运行。

实施例2

参考图7,一种分布式微服务的调用和查询系统,包括:

客户端1:用于生成业务请求、查询指令;

任务协调中心2,包括如下模块:

任务集存储模块21:用于存储与不同业务请求匹配的多个任务集;

任务集查询模块22:用于接收客户端1发送的业务请求,并从任务集存储模块21获取与该业务请求匹配的任务集,将该任务集的id发送给客户端1;所述查询指令根据任务集的id生成;所述任务集中规定了微服务的调用规则;所述调用规则包括多个微服务的调用顺序、微服务调用失败后的重试次数、微服务以同步或异步请求的调用方式。

微服务调用模块23:用于根据任务集查询模块22获取的任务集通过接口调用微服务;

任务执行结果生成模块24:用于接收微服务的反馈结果并根据多个微服务的反馈结果生成任务执行结果,并将任务执行结果反馈给客户端1;

进度查询模块25:用于接收客户端1的查询指令,并查询多个微服务的查询任务集的执行情况,并将执行情况作为查询结果反馈给客户端1。所述查询结果包括:业务执行成功或失败、任务集中各微服务的反馈结果。

任务集更新模块26:用于在任务集中将任务执行结果生成模块24生成的任务执行结果中未获得反馈的任务停用,并将任务集存储模块21中的任务集更新。

轮训模块27,所述轮训模块27用于定期对各任务集进行轮训,将轮训的结果反馈给客户端1并任务集更新模块26更新任务集。

此外,本系统还包括业务应用中心3,所述业务应用中心3设置在客户端1和任务协调中心2之间,用于接收客户端1发送的业务请求并验证该业务请求、将业务请求转发至任务集查询模块22、接收任务执行结果生成模块24、反馈的任务执行结果并转发至客户端1。

本系统的运行过程为:

客户端1根据用户指令生成业务请求,业务请求和任务集存储模块21中的任务集是属于一一对应的关系,客户端1将业务请求发送至业务应用中心3,业务应用中心3会验证该业务请求中参数是否正确,由于业务请求和任务集是一一对应的关系,在业务应用中心3会存储有与任务集对应的业务请求的参数,这些参数包括对于业务请求的验证参数,比如业务请求的字符串是否符合长度要求等,即验证业务请求是否格式正确,当业务应用中心3校验通过业务请求后会将业务请求转发至任务协调中心2。

任务协调中心2的任务集查询模块22处理,任务集查询模块22从任务集存储模块21获取与该业务请求匹配的任务集,将该任务集的id发送给业务应用中心3,有业务应用中心3转发给客户端1;客户端1存储该任务集的id,同时微服务调用模块23根据任务集按照调用规则调用微服务,调用可分为同步请求调用或异步请求调用;任务执行结果生成模块24接收微服务的反馈结果,并将各个反馈结果进行整理得到任务执行结果并反馈给客户端1。

在任务执行过程中,特别是采用同步请求方式调用微服务时,可能存在反馈过慢的问题导致客户端1无法及时收到任务执行结果,这个时候客户端1可生成含任务集的id的查询指令并发送给进度查询模块25,进度查询模块25会反馈给客户端1查询结果。

任务协调中心2会定期在非繁忙时段对各任务集进行轮训,轮训的方法为:任务协调中心2定期将各个任务集执行,调用任务集中所有任务对应的各个微服务,判断各个微服务是否能够正常反馈,如果不能正常反馈,则将不能正常反馈的微服务以告警的形式通知运维人员,保持各个任务集都能随时正常运行。

以上所述的仅为本发明的较佳实施例,凡在本发明的精神和原则范围内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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