基于企业微服务的分布式柔性事务处理方法和装置与流程

文档序号:34065682发布日期:2023-05-06 15:06阅读:29来源:国知局
基于企业微服务的分布式柔性事务处理方法和装置与流程

本技术涉及计算机信息,具体而言,涉及一种基于企业微服务的分布式柔性事务处理方法和装置。


背景技术:

1、在基于微服务架构的企业软件系统中,通常会涉及分布式事务的业务处理场景。分布式事务是指完成某一个业务功能需要跨分布式部署的多个微服务和多个数据库。分布式刚性事务是指要求分布式事务像每个数据库的本地事务一样的数据强一致性,而分布式柔性事务不要求分布式事务像每个数据库的本地事务一样的数据强一致性,而是要求各数据库之间数据的最终一致性。在企业微服务架构中实现分布式柔性事务的处理的一种方案是采用saga模型,saga模型把一个分布式事务拆分为多个本地事务,每个本地事务都有相应的执行模块和补偿模块,当任意一个本地事务出错时,可以通过调用相关的补偿模块回滚之前的事务处理,达到事务数据的最终一致性。saga模型支持协同式的事务协调和编排式的事务协调,协同式的事务协调是把事务的执行顺序分布在各微服务,各微服务通过事件交换实现事务协调,编排式的事务协调是由中心化的事务编排器负责协调各微服务执行本地事务。由于协同式的saga模型对于长事务(即包含的本地事务较多)的应用场景下性能较为低下,编排式的saga模型更适用长事务的应用场景。

2、然而,基于微服务架构的企业软件系统中可能涉及多种不同业务流程的软件应用,这些软件应用通常可以共享一组企业微服务,因此,在基于传统的编排式saga模型采用中心化的事务编排器负责协调处理这些软件应用中跨多个微服务的分布式柔性事务时,在高并发的长事务的应用场景下,一旦中心化的事务编排器出现故障或者性能瓶颈,将会导致整个分布式柔性事务的执行出现数据异常,从而导致各微服务的数据库之间出现数据最终不一致的问题。因此,亟需一种改进的技术方案来解决上述问题。


技术实现思路

1、有鉴于此,本技术提出一种基于企业微服务的分布式柔性事务处理方法和装置,用于提高基于微服务架构的企业软件系统中执行分布式柔性事务的容错性能,从而确保各微服务的数据库之间的数据最终一致性。

2、第一方面,本技术提出一种基于企业微服务的分布式柔性事务处理方法,包括:

3、识别客户端的业务请求类型是第一业务请求还是第二业务请求,以将所述第一业务请求提交给第一前台编排服务,将所述第二业务请求提交给第二前台编排服务;

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、基于所述第一节点和第二节点的系统资源占用率自适应调节所述第一正向补偿操作、第二正向补偿操作和第三正向补偿操作的最大重试次数,和/或基于所述第一节点和第二节点的系统资源占用率在所述第一节点和第二节点之间自适应调度所述分布式定时任务。

29、在一些实施方式中,所述方法还包括:

30、在所述第一全局事务和第二全局事务的执行过程中,对调用各个微服务的数据写操作接口写入的数据设置事务锁标记;

31、当所述第一全局事务和第二全局事务的执行成功之后,所述第一前台编排服务和第二前台编排服务向各个微服务广播消息通知,使得所述各个微服务根据所述消息通知将所述事务锁标记清除。

32、第二方面,本技术还提出一种基于企业微服务的分布式柔性事务处理方法,包括:

33、识别来自客户端的多个业务请求,所述多个业务请求对应多个业务请求类型,将所述多个业务请求分别提交给与所述多个业务请求类型分别对应的多个前台编排服务;

34、所述多个前台编排服务根据所述多个业务请求分别创建对多个微服务的数据写操作接口的多个调用逻辑,所述多个调用逻辑各不相同,并将所述多个调用逻辑分别通知事务中台服务的多个实例;

35、所述事务中台服务的多个实例分别基于所述多个调用逻辑在共享的全局事务表中分别创建多个全局事务,并通知所述多个前台编排服务分别执行所述多个全局事务;

36、实时捕捉所述多个前台编排服务分别执行所述多个全局事务产生的至少一个第一异常事件,并根据所述至少一个第一异常事件触发所述事务中台服务的对应实例分别执行与至少一个异常全局事务对应的第一补偿流程。

37、第三方面,本技术还提出一种基于企业微服务的分布式柔性事务处理装置,包括:

38、请求识别单元,用于识别客户端的业务请求类型是第一业务请求还是第二业务请求,以将所述第一业务请求提交给第一前台编排服务,将所述第二业务请求提交给第二前台编排服务;

39、前台编排单元,用于所述第一前台编排服务根据所述第一业务请求创建对多个微服务的数据写操作接口的第一调用逻辑,所述第二前台编排服务根据所述第二业务请求创建对所述多个微服务的数据写操作接口的第二调用逻辑,并将所述第一调用逻辑和第二调用逻辑通知事务中台服务;

40、事务创建单元,用于所述事务中台服务基于所述第一调用逻辑和第二调用逻辑在全局事务表中创建第一全局事务和第二全局事务,并通知所述第一前台编排服务和第二前台编排服务分别执行所述第一全局事务和第二全局事务;

41、异常处理单元,用于实时捕捉所述第一前台编排服务执行所述第一全局事务产生的第一异常事件和所述第二前台编排服务执行所述第二全局事务中产生的第二异常事件,并根据所述第一异常事件和第二异常事件触发所述事务中台服务分别执行与所述第一全局事务和第二全局事务对应的第一补偿流程和第二补偿流程。

42、第四方面,本技术还提出一种基于企业微服务的分布式柔性事务处理装置,包括:

43、请求识别单元,用于识别来自客户端的多个业务请求,所述多个业务请求对应多个业务请求类型,将所述多个业务请求分别提交给与所述多个业务请求类型分别对应的多个前台编排服务;

44、前台编排单元,用于所述多个前台编排服务根据所述多个业务请求分别创建对多个微服务的数据写操作接口的多个调用逻辑,所述多个调用逻辑各不相同,并将所述多个调用逻辑分别通知事务中台服务的多个实例;

45、事务创建单元,用于所述事务中台服务的多个实例分别基于所述多个调用逻辑在共享的全局事务表中分别创建多个全局事务,并通知所述多个前台编排服务分别执行所述多个全局事务;

46、异常处理单元,用于实时捕捉所述多个前台编排服务分别执行所述多个全局事务产生的至少一个第一异常事件,并根据所述至少一个第一异常事件触发所述事务中台服务的对应实例分别执行与至少一个异常全局事务对应的第一补偿流程。

47、本技术至少可以达到如下有益效果:

48、本技术通过识别客户端的业务请求类型,分别将第一业务请求提交给第一前台编排服务,将第二业务请求提交给第二前台编排服务,所述第一前台编排服务根据所述第一业务请求创建对多个微服务的数据写操作接口的第一调用逻辑,所述第二前台编排服务根据所述第二业务请求创建对所述多个微服务的数据写操作接口的不同于所述第一调用逻辑的第二调用逻辑,然后由事务中台服务基于所述第一调用逻辑和第二调用逻辑在全局事务表中创建第一全局事务和第二全局事务,并通知所述第一前台编排服务和第二前台编排服务分别执行所述第一全局事务和第二全局事务,同时实时捕捉所述第一前台编排服务执行所述第一全局事务产生的第一异常事件和所述第二前台编排服务执行所述第二全局事务中产生的第二异常事件,并根据所述第一异常事件和第二异常事件触发所述事务中台服务分别执行与所述第一全局事务和第二全局事务对应的第一补偿流程和第二补偿流程。从而,针对基于微服务架构的企业软件系统,在高并发的长事务的应用场景下,即使个别的前台编排服务出现故障或性能瓶颈,也不会影响其他前台编排服务执行相应的分布式柔性事务,同时结合独立部署的事务中台服务管理本地持久化的全局事务数据和处理异常事务,提高了基于微服务架构的企业软件系统中执行分布式柔性事务的容错性能,从而确保各微服务的数据库之间的数据最终一致性。

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