【技术实现步骤摘要】
一种流水号生成方法和装置
本专利技术涉及计算机数据处理
,尤其涉及一种流水号生成方法和装置。
技术介绍
本部分旨在为权利要求书中陈述的本专利技术的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。大型商业银行结合互联网的业务应用,银行内部系统交易量成爆炸式的增长趋势,关键几个量大的产品系统逐渐在各个关键环节出现瓶颈,如流水号机制,是每个系统每个交易都必有的公共基础机制。常见的流水号生成方案主要有3种,其中:方案1:数据库/redis/zookeeper流水号生成机制;方案2:随机数UUID的生成,无法保证趋势递增;方案3:Twitter的snowflake算法/MongoDB的objectId。方案1缺点:由统一的服务器提供流水号的生成,集群中的节点都要访问这个服务节点,系统访问量大的时候,容易在流水号服务节点出现性能瓶颈,包括网络的访问瓶颈,且难于扩展。方案2缺点:流水号随机生成、没有排序、无法保证趋势递增。方案3缺点:虽然在各个节点分布式生成,但流水号生成依赖于集群节点上的时间戳和机器IP、每台机器上如果时钟不完全同步,流水号也会出现不是全局递增的情况,并且有流水号的固定格式限制。上述的常见的流水号机制,都多多少少存在一些应用的弊端,既有性能的问题、也有流水号生成的无序性、对时间或是节点IP等问题。因此,如何提供一种新的方案,其能够解决上述技术问题是本领域亟待解决的技术难题。
技术实现思路
< ...
【技术保护点】
1.一种流水号生成方法,其特征在于,包括:/n读取流水号文件和参数配置文件,确定初始流水号缓存至内存;/n根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;/n读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;/n判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。/n
【技术特征摘要】
1.一种流水号生成方法,其特征在于,包括:
读取流水号文件和参数配置文件,确定初始流水号缓存至内存;
根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件;
读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加;
判断流水号步长计数器的值是否大于参数配置文件中的步长值,若流水号步长计数器的值大于步长值,触发持久化同步操作,将内存中的流水号写入流水号文件。
2.如权利要求1所述的方法,其特征在于,读取流水号文件和参数配置文件,确定初始流水号缓存至内存,包括:
读取参数配置文件,进行初始化操作,判断流水号文件是否存在;其中,参数配置文件,还包括:当前节点序号;
若流水号文件存在,则从流水号文件中读取初始流水号缓存至内存;
若流水号文件不存在,则生成流水号文件并赋值当前节点序号的值为初始流水号,将初始流水号缓存至内存。
3.如权利要求2所述的方法,其特征在于,根据参数配置文件对初始流水号进行修正,确定当前流水号,写入内存和流水号文件,包括:
判断初始流水号是否满足修正条件;
若初始流水号不满足修正条件,则根据参数配置文件对初始流水号进行修正,确定修正流水号;
将修正流水号与步长值相加确定为当前流水号,写入内存和流水号文件。
4.如权利要求3所述的方法,其特征在于,参数配置文件,还包括:集群规模值;
所述修正条件,包括:初始流水号%集群规模值=当前节点序号%集群规模值;
其中,%为取余数值。
5.如权利要求4所述的方法,其特征在于,参数配置文件,还包括:流水号最大值;
根据参数配置文件对初始流水号进行修正,确定修正流水号,包括:
根据参数配置文件,生成修正值;
其中,修正值=当前节点序号%集群规模值-初始流水号%集群规模值;
根据修正值对初始流水号进行修正,确定修正流水号;
判断修正流水号的值是否大于等于流水号最大值,若修正流水号的值大于等于流水号最大值,则将修正流水号的值改为当前节点序号的值。
6.如权利要求5所述的方法,其特征在于,根据修正值对初始流水号进行修正,确定修正流水号,包括:
判断修正值是否为正数;
若修正值为正数,则将初始流水号与修正值相加确定为修正流水号;
若修正值为负数,则将初始流水号、修正值与集群规模值相加确定为修正流水号。
7.如权利要求5所述的方法,其特征在于,读取内存中的当前流水号,计算下一个流水号存入内存,对流水号步长计数器累加,包括:
以同步加锁方式调用流水号获取操作,读取内存中的当前流水号,判断当前流水号的值是否大于流水号最大值;
若前流水号的值大于流水号最大值,则将当前流水号的值赋值为当前节点序号的值;
将当前流水号与集群规模值相加确定为下一个流水号存入内存,并对流水号步长计数器累加。
8.如权利要求1所述的方法,其特征在于,还包括:持久化同步操作完成后,将流水号步长计数器清空为零,重新对下一个步长阶段进行计数。
9.一种流水号生成装置,其特征在于,包括:
初始化模块,用于读取流水号文件和参数配置文...
【专利技术属性】
技术研发人员:张兴华,武岳,
申请(专利权)人:中国银行股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。