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

技术编号:37184559 阅读:9 留言:0更新日期:2023-04-20 22:48
本发明专利技术公开了一种基于交易链路的分布式流水号生成方法、装置及存储介质,包括:业务系统收到业务请求后,首先获取全局业务号GlobalBusinessNo及子交易号SubTxNo;根据系统调用类型,确定应使用的子交易号生成及变动规则函数类型;使用所述子交易号生成及变动规则函数更新子交易号SubTxNo;所述全局业务号GlobalBusinessNo与更新后的所述子交易号SubTxNo组合为更新后的流水号,并存储在输出的日志中。本发明专利技术能够不依赖特定资源,且高并发、高效率地生成流水号,生成的流水号能够通过自带信息自动记录调用关系,高效率定位各个交易节点,提高对交易链路监控分析效率。提高对交易链路监控分析效率。提高对交易链路监控分析效率。

【技术实现步骤摘要】
基于交易链路的分布式流水号生成方法、装置及存储介质


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

技术介绍

[0002]相关术语解释:
[0003]流水号:在软件应用系统中,通常需要生成唯一的流水号作为每笔业务或者交易数据的唯一标识,便于记录、检索、分析和审计。其最基本的要求是一定范围内确保唯一不重复,可由一组号码组成,也可由多组号码共同组成。
[0004]全局业务号GlobalBusinessNo:在实际应用系统中,每一笔业务需要由多个系统或模块共同协作处理完成。为了在多个系统或模块中定位和跟踪某笔业务,需要生成一个的编号即全局业务号来标识该笔业务,该笔业务流转到任一节点,全局业务号均保持不变,且应保证其全局各系统或模块范围内唯一不重复。
[0005]子交易号SubTxNo:因全局业务号流转过程中保持不变,为了区分识别跟踪该笔业务在各个系统或模块的流转情况,在该笔业务经过每一个系统或模块时,为其分配一个序号作为子交易号用来标记该处理节点。子交易号要求在一笔业务流经的链路节点范围内确保唯一且有序。
[0006]全局业务号GlobalBusinessNo、子交易号SubTxNo两者共同组成分布式流水号(简称流水号)。
[0007]目前,生成流水号方法大致包括两类:集中式生成方式及分布式生成方式,但通常存在以下缺陷:
[0008](1)集中式生成方式是应用系统中各模块借助一个集中式资源来生成并保证流水号唯一不重复,需要依赖某个特定资源,比如数据库Sequence对象或者全局流水号服务器,若集中式资源发生故障则会导致应用系统整体不可用,存在并发性能低、可靠性低及不适用于与分布式系统等不足;
[0009](2)分布式生成方式虽无需借助集中式资源,应用系统中各个模块分别生成流水号,通过合理的设计来确保生成的流水号全局唯一不重复,但现阶段通过分布式机制生成的流水号通常无法携带业务信息,比如基于雪花算法或其改进方案(CN111930765A)生成的流水号无法携带日期等,不便于业务人员根据流水号快速定位业务;
[0010](3)业务流转多个节点时,无法通过流水号的自带信息自动记录调用顺序及层级关系,也无法根据流水号定位各个交易节点,交易链路监控分析效率较低。
[0011]因此,我们需要开发出一种基于交易链路的分布式流水号生成方法及装置,能够不依赖特定资源,且高并发、高效率地生成流水号,生成的流水号能够通过自带信息自动记录调用关系,高效率定位各个交易节点,提高对交易链路监控分析效率。

技术实现思路

[0012]本专利技术的目的在于提供一种基于交易链路的分布式流水号生成方法、装置及存储介质,以解决上述
技术介绍
中提到的现有的过于依赖特定资源、并发性能低、无法通过流水号自带信息自动记录调用关系,定位各个交易节点等问题。
[0013]为实现上述目的,本专利技术采用以下技术方案:
[0014]根据本专利技术的一个方面,提供一种基于交易链路的分布式流水号生成方法,所述方法包括:
[0015]业务系统收到业务请求后,首先获取全局业务号GlobalBusinessNo及子交易号SubTxNo;
[0016]根据系统调用类型,确定应使用的子交易号生成及变动规则函数类型;
[0017]使用所述子交易号生成及变动规则函数更新子交易号SubTxNo;
[0018]所述全局业务号GlobalBusinessNo与更新后的所述子交易号SubTxNo拼装为更新后的流水号,并存储在输出的日志中。
[0019]根据本专利技术的另一个方面,提供一种基于交易链路的分布式流水号生成装置,其特征在于,包括:
[0020]获取模块:用于系统收到业务请求后,首先获取全局业务号GlobalBusinessNo及子交易号SubTxNo;
[0021]调用模块:用于根据系统调用类型,确定应使用的子交易号生成及变动规则函数类型;
[0022]子交易号更新模块:用于使用所述子交易号生成及变动规则函数更新子交易号SubTxNo;
[0023]流水号输出模块:用于将所述全局业务号GlobalBusinessNo与更新后的所述子交易号SubTxNo拼装为更新后的流水号,并存储在输出的日志中。
[0024]基于前述方案,上述系统调用类型包括横向维度与纵向维度:
[0025]若业务流转经过新的节点,调用层级增加,则所述系统调用类型为横向维度;
[0026]若在同一节点内,对外调用次数增加,则所述系统调用类型为纵向维度。
[0027]基于前述方案,上述子交易号生成及变动规则函数包括横向维度函数getSubTxNoX()及纵向维度函数getSubTxNoY();所述系统调用类型为横向维度时,使用getSubTxNoX()函数,所述系统调用类型为纵向维度时,使用getSubTxNoY()函数。
[0028]通过横向、纵向两个维度生成交易链路内子交易号,能够全面的记录业务流转所经过的各个节点,便于需要时追踪定位。
[0029]基于前述方案,上述getSubTxNoX()函数的定义:
[0030]如果,传入参数原子交易号original_SubTxNo为空值,则生成交易链路纵横点编号初始值:首位为1,其余位为0;
[0031]否则,从原子交易号original_SubTxNo取出交易链路纵横点编号,从交易链路纵横点编号中从左至右找出第一个“0值”位,对该位值赋值为1;
[0032]将调用方系统标识、调用方系统运行实例编号、新得到的交易链路纵横点编号拼装得到新子交易号;
[0033]将所述新子交易号作为结果返回。
[0034]基于前述方案,上述getSubTxNoY()函数的定义:
[0035]如果,传入参数原子交易号original_SubTxNo为空值,则生成交易链路纵横点编号初始值:首位为1,其余位为0;
[0036]否则,从原子交易号original_SubTxNo取出交易链路纵横点编号,从交易链路纵横点编号中从左至右找出最后一个“非0值”位,取出该位的值并依次选用“1
‑9‑
A

Z

a

z”赋值该位;
[0037]将调用方系统标识、调用方系统运行实例编号、新得到的交易链路纵横点编号拼装得到新子交易号;
[0038]将所述新子交易号作为结果返回。
[0039]通过横向、纵向维度调用函数生成交易链路纵横点编号,效率高、不重复且通过其能够直观的确定业务发生调用的层级及某个节点对外调用的次数。
[0040]基于前述方案,上述业务系统收到业务请求后,若所述业务系统为始端系统,所述始端系统首先获取所述全局业务号GlobalBusinessNo,并通过getSubTxNoX()函数获取子交易号SubTxNo初始值。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于交易链路的分布式流水号生成方法,其特征在于,所述方法包括:业务系统收到业务请求后,首先获取全局业务号GlobalBusinessNo及子交易号SubTxNo;根据系统调用类型,确定应使用的子交易号生成及变动规则函数类型;使用所述子交易号生成及变动规则函数更新子交易号SubTxNo;所述全局业务号GlobalBusinessNo与更新后的所述子交易号SubTxNo拼装为更新后的流水号,并存储在输出的日志中。2.根据权利要求1所述的一种基于交易链路的分布式流水号生成方法,其特征在于,所述系统调用类型包括横向维度与纵向维度:若业务流转经过新的节点,调用层级增加,则所述系统调用类型为横向维度;若在同一节点内,对外调用次数增加,则所述系统调用类型为纵向维度。3.根据权利要求1所述的一种基于交易链路的分布式流水号生成方法,其特征在于,所述子交易号生成及变动规则函数包括横向维度函数getSubTxNoX()及纵向维度函数getSubTxNoY();所述系统调用类型为横向维度时,使用getSubTxNoX()函数,所述系统调用类型为纵向维度时,使用getSubTxNoY()函数。4.根据权利要求3所述的一种基于交易链路的分布式流水号生成方法,其特征在于,所述getSubTxNoX()函数的定义:如果,传入参数原子交易号original_SubTxNo为空值,则生成交易链路纵横点编号初始值:首位为1,其余位为0;否则,从原子交易号original_SubTxNo取出交易链路纵横点编号,从交易链路纵横点编号中从左至右找出第一个“0值”位,对该位值赋值为1;将调用方系统标识、调用方系统运行实例编号、新得到的交易链路纵横点编号拼装得到新子交易号;将所述新子交易号作为结果返回。5.根据权利要求3所述的一种基于交易链路的分布式流水号生成方法,其特征在于,所述getSubTxNoY()函数的定义:如果,传入参数原子交易号original_SubTxNo为空值,则生成交易链路纵横点编号初始值:首位为1,其余位为0;否则,从原子交易号original_SubTxNo取出交易链路纵横点编号,从交易链路纵横点编号中从左至右找出最后一个“非0值”位,取出该位的值并依次选用“1
‑9‑
A

Z

a

z”赋值该...

【专利技术属性】
技术研发人员:张瑜平春煜何蕾
申请(专利权)人:深圳市雁联计算系统有限公司
类型:发明
国别省市:

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

1