基于交易链路的分布式流水号生成方法、装置及存储介质与流程

文档序号:33754843发布日期:2023-04-18 14:48阅读:320来源:国知局
基于交易链路的分布式流水号生成方法、装置及存储介质与流程

本发明涉及计算机数据处理领域,具体为基于交易链路的分布式流水号生成方法、装置及存储介质。


背景技术:

1、相关术语解释:

2、流水号:在软件应用系统中,通常需要生成唯一的流水号作为每笔业务或者交易数据的唯一标识,便于记录、检索、分析和审计。其最基本的要求是一定范围内确保唯一不重复,可由一组号码组成,也可由多组号码共同组成。

3、全局业务号globalbusinessno:在实际应用系统中,每一笔业务需要由多个系统或模块共同协作处理完成。为了在多个系统或模块中定位和跟踪某笔业务,需要生成一个的编号即全局业务号来标识该笔业务,该笔业务流转到任一节点,全局业务号均保持不变,且应保证其全局各系统或模块范围内唯一不重复。

4、子交易号subtxno:因全局业务号流转过程中保持不变,为了区分识别跟踪该笔业务在各个系统或模块的流转情况,在该笔业务经过每一个系统或模块时,为其分配一个序号作为子交易号用来标记该处理节点。子交易号要求在一笔业务流经的链路节点范围内确保唯一且有序。

5、全局业务号globalbusinessno、子交易号subtxno两者共同组成分布式流水号(简称流水号)。

6、目前,生成流水号方法大致包括两类:集中式生成方式及分布式生成方式,但通常存在以下缺陷:

7、(1)集中式生成方式是应用系统中各模块借助一个集中式资源来生成并保证流水号唯一不重复,需要依赖某个特定资源,比如数据库sequence对象或者全局流水号服务器,若集中式资源发生故障则会导致应用系统整体不可用,存在并发性能低、可靠性低及不适用于与分布式系统等不足;

8、(2)分布式生成方式虽无需借助集中式资源,应用系统中各个模块分别生成流水号,通过合理的设计来确保生成的流水号全局唯一不重复,但现阶段通过分布式机制生成的流水号通常无法携带业务信息,比如基于雪花算法或其改进方案(cn111930765a)生成的流水号无法携带日期等,不便于业务人员根据流水号快速定位业务;

9、(3)业务流转多个节点时,无法通过流水号的自带信息自动记录调用顺序及层级关系,也无法根据流水号定位各个交易节点,交易链路监控分析效率较低。

10、因此,我们需要开发出一种基于交易链路的分布式流水号生成方法及装置,能够不依赖特定资源,且高并发、高效率地生成流水号,生成的流水号能够通过自带信息自动记录调用关系,高效率定位各个交易节点,提高对交易链路监控分析效率。


技术实现思路

1、本发明的目的在于提供一种基于交易链路的分布式流水号生成方法、装置及存储介质,以解决上述背景技术中提到的现有的过于依赖特定资源、并发性能低、无法通过流水号自带信息自动记录调用关系,定位各个交易节点等问题。

2、为实现上述目的,本发明采用以下技术方案:

3、根据本发明的一个方面,提供一种基于交易链路的分布式流水号生成方法,所述方法包括:

4、业务系统收到业务请求后,首先获取全局业务号globalbusinessno及子交易号subtxno;

5、根据系统调用类型,确定应使用的子交易号生成及变动规则函数类型;

6、使用所述子交易号生成及变动规则函数更新子交易号subtxno;

7、所述全局业务号globalbusinessno与更新后的所述子交易号subtxno拼装为更新后的流水号,并存储在输出的日志中。

8、根据本发明的另一个方面,提供一种基于交易链路的分布式流水号生成装置,其特征在于,包括:

9、获取模块:用于系统收到业务请求后,首先获取全局业务号globalbusinessno及子交易号subtxno;

10、调用模块:用于根据系统调用类型,确定应使用的子交易号生成及变动规则函数类型;

11、子交易号更新模块:用于使用所述子交易号生成及变动规则函数更新子交易号subtxno;

12、流水号输出模块:用于将所述全局业务号globalbusinessno与更新后的所述子交易号subtxno拼装为更新后的流水号,并存储在输出的日志中。

13、基于前述方案,上述系统调用类型包括横向维度与纵向维度:

14、若业务流转经过新的节点,调用层级增加,则所述系统调用类型为横向维度;

15、若在同一节点内,对外调用次数增加,则所述系统调用类型为纵向维度。

16、基于前述方案,上述子交易号生成及变动规则函数包括横向维度函数getsubtxnox()及纵向维度函数getsubtxnoy();所述系统调用类型为横向维度时,使用getsubtxnox()函数,所述系统调用类型为纵向维度时,使用getsubtxnoy()函数。

17、通过横向、纵向两个维度生成交易链路内子交易号,能够全面的记录业务流转所经过的各个节点,便于需要时追踪定位。

18、基于前述方案,上述getsubtxnox()函数的定义:

19、如果,传入参数原子交易号original_subtxno为空值,则生成交易链路纵横点编号初始值:首位为1,其余位为0;

20、否则,从原子交易号original_subtxno取出交易链路纵横点编号,从交易链路纵横点编号中从左至右找出第一个“0值”位,对该位值赋值为1;

21、将调用方系统标识、调用方系统运行实例编号、新得到的交易链路纵横点编号拼装得到新子交易号;

22、将所述新子交易号作为结果返回。

23、基于前述方案,上述getsubtxnoy()函数的定义:

24、如果,传入参数原子交易号original_subtxno为空值,则生成交易链路纵横点编号初始值:首位为1,其余位为0;

25、否则,从原子交易号original_subtxno取出交易链路纵横点编号,从交易链路纵横点编号中从左至右找出最后一个“非0值”位,取出该位的值并依次选用“1-9-a-z-a-z”赋值该位;

26、将调用方系统标识、调用方系统运行实例编号、新得到的交易链路纵横点编号拼装得到新子交易号;

27、将所述新子交易号作为结果返回。

28、通过横向、纵向维度调用函数生成交易链路纵横点编号,效率高、不重复且通过其能够直观的确定业务发生调用的层级及某个节点对外调用的次数。

29、基于前述方案,上述业务系统收到业务请求后,若所述业务系统为始端系统,所述始端系统首先获取所述全局业务号globalbusinessno,并通过getsubtxnox()函数获取子交易号subtxno初始值。

30、基于前述方案,上述全局业务号globalbusinessno包括时间戳,始端系统标识、始端系统运行实例编号以及序列号;

31、所述时间戳为业务发起的时间;

32、所述始端系统标识为提前为每个系统分配定义的系统编号;

33、所述始端系统运行实例编号为始端系统内部的服务或微服务实例编号,在一个系统内部具有唯一性,包括idc数据中心或机房编号、服务或微服务代号及每个服务或微服务的实例序号;

34、所述序列号为每个运行实例自身的序列号生成器生成的序号,其单向递增、达最大值后归零。

35、全局业务号涵盖时间信息、业务发起的始端系统信息等,在交易链路上的各个节点均保持不变,通过其能够准确确定在某一链路发生的所有业务。

36、基于前述方案,上述子交易号subtxno包括调用方系统标识、调用方系统运行实例编号及交易链路纵横点编号;

37、所述调用方系统标识为提前为每个调用方系统分配定义系统编号;

38、所述调用方系统运行实例编号为调用方系统内部的服务或微服务实例编号,在一个系统内部具有唯一性,包括idc数据中心或机房编号、服务或微服务代号及每个服务或微服务的实例序号;

39、所述交易链路纵横点编号为横向、纵向两个维度的调用链路标记。

40、基于前述方案,上述子交易号subtxno在交易链路上具有唯一性。

41、具体地,系统调用类型为纵向维度时,子交易号中的调用方系统标识、调用方系统运行实例编号保持不变,交易链路纵横点编号通过getsubtxnoy()函数更新,记录调用次数增加;系统调用类型为纵向维度时,通过getsubtxnox()函数,获取当前节点的调用方系统标识、调用方系统运行实例编号、更新交易链路纵横点编号,记录调用层级增多。全局业务号与子交易号一静一动,相互结合,在实现交易链路追踪业务流转节点的同时,也能对交易链路及链路上的各个分支进行唯一标识。

42、本发明实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行代码;所述计算机可执行代码被执行后,能够实现前述一个或多个技术方案提供的流水号生成方法。

43、由上述技术方案可知,本发明与现有技术相比至少具备以下优点和积极效果:

44、(1)本发明采用分布式的方法生成流水号,不依赖于特定集中化资源的生成机制,生成效率及并发性高。

45、(2)本发明的流水号中自身携带重要的业务与技术信息,通过流水号即可直观、快速地定位信息(如发生时间、所属系统、所属服务和实例节点等),监控人员无需借助其他辅助信息,只通过流水号即可直观获取某项业务的发生时间、所属链路、所属系统、所属实例节点及发生调用的次数等有效信息,获取有效信息的效率提高。

46、(3)本发明的流水号包括全局业务号及子交易号两部分,全局业务号全流程共用,一直持续到业务处理链路结束,子交易号兼备系统信息、横向维度调用计数及纵向维度调用计数,以占位符的方式表述,并沿着交易链路向后传递,保证该交易链路上任一节点的子交易号具有唯一性,两者一静一动,相互结合,在实现交易链路追踪业务流转节点的同时,也能对交易链路及链路上的各个分支进行唯一标识,在实际应用中,流水号信息自动记录调用关系,无需依赖其他信息,即可根据流水号定位各个交易节点,直观的追踪及定位业务的流转情况,有效提高对交易链路监控分析效率。

47、本发明应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

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