一种流水号生成方法和装置制造方法及图纸

技术编号:27772201 阅读:14 留言:0更新日期:2021-03-23 12:52
本发明专利技术提供了一种流水号生成方法和装置,该方法包括:读取流水号文件和参数配置文件,确定初始流水号缓存至内存;根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。本发明专利技术的流水号分布式生成,不依赖于专用的流水号服务器,能够在初始状态下自动修正流水号,实现流水号顺序增长,不依赖于系统IP和时间戳,不依赖于专用的存储节点,在本节点流水号文件进行存储。

【技术实现步骤摘要】
一种流水号生成方法和装置
本专利技术涉及计算机数据处理
,尤其涉及一种流水号生成方法和装置。
技术介绍
本部分旨在为权利要求书中陈述的本专利技术的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。大型商业银行结合互联网的业务应用,银行内部系统交易量成爆炸式的增长趋势,关键几个量大的产品系统逐渐在各个关键环节出现瓶颈,如流水号机制,是每个系统每个交易都必有的公共基础机制。常见的流水号生成方案主要有3种,其中:方案1:数据库/redis/zookeeper流水号生成机制;方案2:随机数UUID的生成,无法保证趋势递增;方案3:Twitter的snowflake算法/MongoDB的objectId。方案1缺点:由统一的服务器提供流水号的生成,集群中的节点都要访问这个服务节点,系统访问量大的时候,容易在流水号服务节点出现性能瓶颈,包括网络的访问瓶颈,且难于扩展。方案2缺点:流水号随机生成、没有排序、无法保证趋势递增。方案3缺点:虽然在各个节点分布式生成,但流水号生成依赖于集群节点上的时间戳和机器IP、每台机器上如果时钟不完全同步,流水号也会出现不是全局递增的情况,并且有流水号的固定格式限制。上述的常见的流水号机制,都多多少少存在一些应用的弊端,既有性能的问题、也有流水号生成的无序性、对时间或是节点IP等问题。因此,如何提供一种新的方案,其能够解决上述技术问题是本领域亟待解决的技术难题。
技术实现思路
<br>本专利技术实施例提供一种流水号生成方法,流水号分布式生成,不依赖于专用的流水号服务器,能够自动修正流水号,实现流水号顺序增长,该方法包括:读取流水号文件和参数配置文件,确定初始流水号缓存至内存;根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。本专利技术实施例还提供一种流水号生成装置,包括:初始化模块,用于读取流水号文件和参数配置文件,确定初始流水号缓存至内存;修正模块,用于根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;流水号计算模块,用于读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;持久化同步模块,用于判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。本专利技术实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种流水号生成方法。本专利技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述一种流水号生成方法的计算机程序。本专利技术实施例提供的一种流水号生成方法和装置,首先读取流水号文件和参数配置文件,确定初始流水号缓存至内存;然后根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;接着读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;最后判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。本专利技术实施例的流水号分布式生成,不依赖于专用的流水号服务器,能够在初始状态下自动修正流水号,实现流水号顺序增长,不依赖于系统IP和时间戳,不依赖于专用的存储节点,在本节点流水号文件进行存储,内存流水号持久化至流水号文件时,采用步长机制减少对文件系统IO的方案,不需要每一个流水号都访问流水号文件,减少了大量的持久化I/O操作时间,保证系统重启之后的唯一性。解决了集中式生成流水号的性能瓶颈和效率问题,不依赖于专用的流水号服务节点,并且不依赖于任何异步的流水号的持久化管理装置。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1为本专利技术实施例一种流水号生成方法示意图。图2为本专利技术实施例一种流水号生成方法的流程图。图3为本专利技术实施例一种流水号生成方法的流水号示意图。图4为运行本专利技术实施的一种流水号生成方法的计算机装置示意图。图5为本专利技术实施例一种流水号生成装置示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本专利技术实施例做进一步详细说明。在此,本专利技术的示意性实施例及其说明用于解释本专利技术,但并不作为对本专利技术的限定。图1为本专利技术实施例一种流水号生成方法示意图,如图1所示,本专利技术实施例提供一种流水号生成方法,流水号分布式生成,不依赖于专用的流水号服务器,能够自动修正流水号,实现流水号顺序增长,该方法包括:步骤101:读取流水号文件和参数配置文件,确定初始流水号缓存至内存;步骤102:根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;步骤103:读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;步骤104:判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。本专利技术实施例提供的一种流水号生成方法,首先读取流水号文件和参数配置文件,确定初始流水号缓存至内存;然后根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;接着读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;最后判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。本专利技术实施例的流水号分布式生成,不依赖于专用的流水号服务器,能够在初始状态下自动修正流水号,实现流水号顺序增长,不依赖于系统IP和时间戳,不依赖于专用的存储节点,在本节点流水号文件进行存储,内存流水号持久化至流水号文件时,采用步长机制减少对文件系统IO的方案,不需要每一个流水号都访问流水号文件,减少了大量的持久化I/O操作时间,保证系统重启之后的唯一性。解决了集中式生成流水号的性能瓶颈和效率问题,不依赖于专用的流水号服务节点,并且不依赖于任何异步的流水号的持久化管理装置。在本专利技术实施例中,流水号,是指一次银行业务交易的唯一标识ID,可用于业务的记录和追溯,流水号不需要永久保证唯一,一般在一本文档来自技高网...

【技术保护点】
1.一种流水号生成方法,其特征在于,包括:/n读取流水号文件和参数配置文件,确定初始流水号缓存至内存;/n根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;/n读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;/n判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。/n

【技术特征摘要】
1.一种流水号生成方法,其特征在于,包括:
读取流水号文件和参数配置文件,确定初始流水号缓存至内存;
根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;
读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;
判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。


2.如权利要求1所述的方法,其特征在于,读取流水号文件和参数配置文件,确定初始流水号缓存至内存,包括:
读取参数配置文件,进行初始化操作,判断流水号文件是否存在;其中,参数配置文件,还包括:当前节点序号;
若流水号文件存在,则从流水号文件中读取初始流水号缓存至内存;
若流水号文件不存在,则生成流水号文件并赋值当前节点序号的值为初始流水号,将初始流水号缓存至内存。


3.如权利要求2所述的方法,其特征在于,根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件,包括:
判断初始流水号是否满足修正条件;
若初始流水号不满足修正条件,则根据参数配置文件对初始流水号进行修正,确定修正流水号;
将修正流水号与步长值相加确定为当前流水号,写入内存和流水号文件。


4.如权利要求3所述的方法,其特征在于,参数配置文件,还包括:集群规模值;
所述修正条件,包括:初始流水号%集群规模值=当前节点序号%集群规模值;
其中,%为取余数值。


5.如权利要求4所述的方法,其特征在于,参数配置文件,还包括:流水号最大值;
根据参数配置文件对初始流水号进行修正,确定修正流水号,包括:
根据参数配置文件,生成修正值;
其中,修正值=当前节点序号%集群规模值-初始流水号%集群规模值;
根据修正值对初始流水号进行修正,确定修正流水号;
判断修正流水号的值是否大于等于流水号最大值,若修正流水号的值大于等于流水号最大值,则将修正流水号的值改为当前节点序号的值。


6.如权利要求5所述的方法,其特征在于,根据修正值对初始流水号进行修正,确定修正流水号,包括:
判断修正值是否为正数;
若修正值为正数,则将初始流水号与修正值相加确定为修正流水号;
若修正值为负数,则将初始流水号、修正值与集群规模值相加确定为修正流水号。


7.如权利要求5所述的方法,其特征在于,读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加,包括:
以同步加锁方式调用流水号获取操作,读取内存中的当前流水号,判断当前流水号的值是否大于流水号最大值;
若前流水号的值大于流水号最大值,则将当前流水号的值赋值为当前节点序号的值;
将当前流水号与集群规模值相加确定为下一个流水号存入内存,并对流水号步长计数器累加。


8.如权利要求1所述的方法,其特征在于,还包括:持久化同步操作完成后,将流水号步长计数器清空为零,重新对下一个步长阶段进行计数。


9.一种流水号生成装置,其特征在于,包括:
初始化模块,用于读取流水号文件和参数配置文...

【专利技术属性】
技术研发人员:张兴华武岳
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:北京;11

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

1