一种保证幂等的微服务调用监管系统及方法技术方案

技术编号:24409752 阅读:36 留言:0更新日期:2020-06-06 08:40
本公开提供了一种保证幂等的微服务调用监管系统及方法,包括交易申请模块、交易调用模块、交易后续结果存取模块和交易管理模块,交易申请模块用于微服务调用前生成交易编号,交易调用模块用于处理每一次的微服务调用,交易后续结果存取模块用于处理时间较长的微服务,交易管理模块用于管理所有的微服务调用,查看每一次调用的详情,并针对调用异常的情况给出处理方法;本公开保证了微服务的严格幂等,屏蔽了在不同系统以及不同数据库之间调用时造成的数据库操作一致性问题,避免因为微服务处理时间过长导致调用端一直等待甚至出现超时的问题。

An idempotent microservice call supervision system and method

【技术实现步骤摘要】
一种保证幂等的微服务调用监管系统及方法
本公开涉及微服务调用
,特别涉及一种保证幂等的微服务调用监管系统及方法。
技术介绍
本部分的陈述仅仅是提供了与本公开相关的
技术介绍
,并不必然构成现有技术。在微服务架构下,原本单体式应用以及数据库被拆分为多个微服务应用和多个数据库,原本单体式应用内的代码逻辑调用变为了多个应用之间的微服务调用,业务数据由单一数据库保存变为分库分表。单体式应用内代码调用的调用端与提供端之间不存在网络和分库等因素,两端数据库操作的一致性得到保证,提供端不需要保证操作幂等。本公开专利技术人发现,在微服务架构下,调用两端处于不同数据库,调用端与提供端之间容易受网络等因素影响出现提供端处理结果反馈不到调用端的情况,这种情况下调用端只能重新发起调用再次获取到处理结果,才能保证两端数据库操作的一致性,这就需要提供方要保证幂等,而让微服务的开发者每一个微服务都保证幂等,无疑增加了微服务开发的难度和工作量。
技术实现思路
为了解决现有技术的不足,本公开提供了一种保证幂等的微服务调用监管系统及方法,保证了微服务的严格幂等,屏蔽了在不同系统以及不同数据库之间调用时造成的数据库操作一致性问题。为了实现上述目的,本公开采用如下技术方案:本公开第一方面提供了一种保证幂等的微服务调用监管系统。一种保证幂等的微服务调用监管系统,包括交易申请模块和交易调用模块;所述交易申请模块包括调用端交易申请模块和提供端交易申请模块,调用端发起调用申请时,通过调用端交易申请模块向提供端交易申请模块发起申请,提供端交易申请模块将生成的交易编号返回至调用端,调用端根据交易编号组装调用参数;所述交易调用模块包括调用端交易调用模块和提供端交易调用模块,调用端通过调用端交易调用模块根据调用参数发起微服务调用,提供端交易调用模块接到调用请求,进行交易信息校验;如果交易是首次发生,所述提供端交易调用模块将交易信息保存,调用微服务实现类,并保存交易结果,将交易结果通过调用端交易调用模块返回至调用端;如果交易非首次发生,所述提供端交易调用模块获取交易信息,判断交易是否已经完成,如果上次调用交易已经完成,则将交易结果通过调用端交易调用模块返回至调用端,如果交易未完成,调用微服务实现类并保存交易结果,将交易结果通过调用端交易调用模块返回至调用端。作为可能的一些实现方式,所述调用监管系统还包括交易后续结果存取模块,用于接收提供端的交易后续结果,调用端发送交易后续结果的调用请求到提供端,提供端判断后续结果是否设置,如果交易完成并且后续结果已经设置,交易后续结果存取模块将后续结果返回至调用端,调用端根据后续结果处理;如果交易未完成或者后续结果未设置,由调用端等待时机再次发起后续结果获取请求。作为可能的一些实现方式,所述调用监管系统还包括交易管理模块,用于管理所有的微服务交易,查看每一次交易的详情,并针对交易异常的情况给出解决方案。作为可能的一些实现方式,所述交易编号用于标志一次的微服务交易,一次微服务交易可以发生多次的微服务调用,每一次调用的交易编号相同。作为可能的一些实现方式,微服务调用的幂等性通过提供端交易调用模块内对交易信息的校验来保证。本公开第二方面提供了一种保证幂等的微服务调用方法。一种保证幂等的微服务调用方法,包括以下步骤:步骤601:调用端发起调用申请时,首先通过调用端的交易申请模块向提供端的交易申请模块发起申请,提供端的交易申请模块将生成的交易编号返回;步骤602:调用端根据交易编号组装调用参数;步骤603:调用端发起微服务调用;步骤604:提供端接到调用请求,提供端微服务交易调用模块进行交易信息校验,校验交易是不是首次发生,如果是首次发生则转向605步骤进行处理,如果是非首次发生,表示之前交易调用发生异常,转向609步骤进行处理;步骤605:交易首次发生,将交易信息保存,用于604步骤判断是否发生过交易;步骤606:调用微服务实现类,获取交易结果;步骤607:保存交易结果;步骤608:返回交易结果;步骤609:交易非首次发生时,获取交易信息;步骤610:判断交易是否已经完成,本步骤发生在非首次调用时,用于判断上次调用是否已经产生了交易结果,如果上次调用交易已经完成那么转向608步骤,如果交易未完成,那么转向606步骤重新进行交易处理。作为可能的一些实现方式,提供端完成业务处理以后,由提供端进行微服务交易后续结果的设置,后续结果的获取由调用端发起,具体为:步骤701:调用端发起请求获取后续结果;步骤702:提供端判断后续结果是否设置,如果交易完成并且后续结果已经设置则转向703步骤,如果交易未完成或者后续结果未设置,那么返回701步骤由调用端等待时机再次发起后续结果获取请求;步骤703:获取后续结果;步骤704:调用端根据后续结果处理。作为可能的一些实现方式,集中可视化管理所有的微服务交易,实时查看每一次交易的详情,并针对交易异常的情况给出异常解决方案。作为可能的一些实现方式,一次微服务交易可以发生多次的微服务调用,每一次调用的交易编号相同,微服务调用的幂等性通过提供端交易调用模块内对交易信息的校验来保证。与现有技术相比,本公开的有益效果是:1、本公开所述的内容通过微服务交易申请模块与微服务交易调用模块相结合,保证了微服务的严格幂等,屏蔽了在不同系统以及不同数据库之间调用时造成的数据库操作一致性问题。2、本公开通过设置微服务交易后续模块,为处理周期较长的微服务提供了避免调用方等待和调用超时的处理方式,避免因为微服务处理时间过长导致调用端一直等待甚至出现超时的问题。3、本公开通过设置微服务交易管理模块,为幂等微服务的调用提供了便捷可视化的管控,能够方便直接的查看调用情况和处理调用异常问题。附图说明图1为本公开实施例1提供的微服务调用过程以及设置获取后续结果的时序图。图2为本公开实施例1提供的微服务交易调用过程流程示意图。图3为本公开实施例1提供的微服务交易后续结果获取调用过程流程示意图。具体实施方式应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属
的普通技术人员通常理解的相同含义。需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。实施例1:本公开实施例1提供了一种保证幂等的微服务调用监管系统,如图1本文档来自技高网
...

【技术保护点】
1.一种保证幂等的微服务调用监管系统,其特征在于,包括交易申请模块和交易调用模块;/n所述交易申请模块包括调用端交易申请模块和提供端交易申请模块,调用端发起调用申请时,通过调用端交易申请模块向提供端交易申请模块发起申请,提供端交易申请模块将生成的交易编号返回至调用端,调用端根据交易编号组装调用参数;/n所述交易调用模块包括调用端交易调用模块和提供端交易调用模块,调用端通过调用端交易调用模块根据调用参数发起微服务调用,提供端交易调用模块接到调用请求,进行交易信息校验;/n如果交易是首次发生,所述提供端交易调用模块将交易信息保存,调用微服务实现类,并保存交易结果,将交易结果通过调用端交易调用模块返回至调用端;/n如果交易非首次发生,所述提供端交易调用模块获取交易信息,判断交易是否已经完成,如果上次调用交易已经完成,则将交易结果通过调用端交易调用模块返回至调用端,如果交易未完成,调用微服务实现类并保存交易结果,将交易结果通过调用端交易调用模块返回至调用端。/n

【技术特征摘要】
1.一种保证幂等的微服务调用监管系统,其特征在于,包括交易申请模块和交易调用模块;
所述交易申请模块包括调用端交易申请模块和提供端交易申请模块,调用端发起调用申请时,通过调用端交易申请模块向提供端交易申请模块发起申请,提供端交易申请模块将生成的交易编号返回至调用端,调用端根据交易编号组装调用参数;
所述交易调用模块包括调用端交易调用模块和提供端交易调用模块,调用端通过调用端交易调用模块根据调用参数发起微服务调用,提供端交易调用模块接到调用请求,进行交易信息校验;
如果交易是首次发生,所述提供端交易调用模块将交易信息保存,调用微服务实现类,并保存交易结果,将交易结果通过调用端交易调用模块返回至调用端;
如果交易非首次发生,所述提供端交易调用模块获取交易信息,判断交易是否已经完成,如果上次调用交易已经完成,则将交易结果通过调用端交易调用模块返回至调用端,如果交易未完成,调用微服务实现类并保存交易结果,将交易结果通过调用端交易调用模块返回至调用端。


2.如权利要求1所述的保证幂等的微服务调用监管系统,其特征在于,所述调用监管系统还包括交易后续结果存取模块,用于接收提供端的交易后续结果,调用端发送交易后续结果的调用请求到提供端,提供端判断后续结果是否设置,如果交易完成并且后续结果已经设置,交易后续结果存取模块将后续结果返回至调用端,调用端根据后续结果处理;如果交易未完成或者后续结果未设置,由调用端等待时机再次发起后续结果获取请求。


3.如权利要求1所述的保证幂等的微服务调用监管系统,其特征在于,所述调用监管系统还包括交易管理模块,用于管理所有的微服务交易,查看每一次交易的详情,并针对交易异常的情况给出解决方案。


4.如权利要求1所述的保证幂等的微服务调用监管系统,其特征在于,所述交易编号用于标志一次的微服务交易,一次微服务交易可以发生多次的微服务调用,每一次调用的交易编号相同。


5.如权利要求1所述的保证幂等的微服务调用监管系统,其特征在于,微服务调用的幂等性通过提供端交易调用模块内对交易信息的校验来保证。


6...

【专利技术属性】
技术研发人员:钱进于秋波张世栋尚猛郭斌赵永光宋婷婷刘萌马志成
申请(专利权)人:山大地纬软件股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1