【技术实现步骤摘要】
分布式全局序列号实现方法及序列分发器
本专利技术涉及分布式架构
,尤其涉及一种分布式全局序列号实现方法及序列分发器。
技术介绍
本部分旨在为权利要求书中陈述的本专利技术实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。分布式架构下,唯一序列号如何生成的问题是设计一个系统中的各项应用程序,尤其是数据库使用分库分表的时候经常会遇见的问题。当数据库分成若干个分表后,如何让每个分表中的每条表数据快速拿到一个唯一的序列号,是需要考虑的问题。目前主流的解决方案有雪花算法、redis全局缓存等,雪花算法需要结合需要序列号的应用程序进行开发和部署,redis全局缓存需要引入redis组件,结合应用程序和redis组件进行开发,两种方案的编码和配置的工作量都很大。
技术实现思路
本专利技术实施例提供一种分布式全局序列号实现方法,用以提供一种编码和配置工作量少的全局序列号实现方案,同时降低全局序列号对于应用程序的侵入性,该方法应用于分布式系统中的至少一个序列分发器,所述分布式系统还 ...
【技术保护点】
1.一种分布式全局序列号实现方法,其特征在于,应用于分布式系统中的至少一个序列分发器,所述分布式系统还包括数据库和序列客户端,所述序列分发器分别与数据库连接和序列客户端连接,所述方法包括:/n当序列分发器不是初次从数据库中获取序列,按照最后一次分发完成的序列的ID,从数据库中获取相同ID的序列的序列属性和序列当前值,所述序列属性包括序列最大值、最小值、步长、缓存数量和是否支持循环;/n根据所述序列属性和序列当前值生成序列号;/n当接收到序列客户端的分发序列号请求时,向序列客户端分发生成的序列号。/n
【技术特征摘要】
1.一种分布式全局序列号实现方法,其特征在于,应用于分布式系统中的至少一个序列分发器,所述分布式系统还包括数据库和序列客户端,所述序列分发器分别与数据库连接和序列客户端连接,所述方法包括:
当序列分发器不是初次从数据库中获取序列,按照最后一次分发完成的序列的ID,从数据库中获取相同ID的序列的序列属性和序列当前值,所述序列属性包括序列最大值、最小值、步长、缓存数量和是否支持循环;
根据所述序列属性和序列当前值生成序列号;
当接收到序列客户端的分发序列号请求时,向序列客户端分发生成的序列号。
2.根据权利要求1所述的方法,其特征在于,当序列当前值不等于序列最大值时,根据所述序列属性和序列当前值生成序列号段,包括:
如果缓存数量不等于0,则将序列的当前值作为初始值,按照步长生成小于等于缓存数量的序列号;
如果缓存数量等于0,则将序列当前值作为初始值,将序列当前值扩大指定倍数,得到第一倍数值;如果第一倍数值小于等于序列最大值,则按照步长从初始值开始生成序列号,直至生成的序列号中最大值小于等于第一倍数值;如果第一倍数值大于序列最大值,则按照步长从初始值开始生成序列号,直至生成的序列号中最大值小于等于序列最大值。
3.根据权利要求2所述的方法,其特征在于,按照步长生成小于等于缓存数量的序列号,包括:
当从序列当前值到序列最大值生成的序列号的数量大于等于缓存数量时,从序列当前值开始按照步长生成序列号,直至生成序列号的数量等于缓存数量;
当从序列当前值到序列最大值生成的序列号的数量小于缓存数量时,如果序列支持循环,则从序列最小值开始生成序列号,直至生成序列号的总数量等于缓存数量;如果序列不支持循环,则按照步长生成从序列当前值到序列最大值之前的所有序列号。
4.根据权利要求1所述的方法,其特征在于,当序列当前值等于序列最大值时,根据所述序列属性和序列当前值生成序列号段,包括:
如果序列支持循环且缓存数量不等于0,则将序列的最小值作为初始值,按照步长生成与缓存数量相等数量的序列号;
如果序列支持循环且缓存数量等于0,则将序列最小值作为初始值,将序列初始值扩大指定倍数,得到第二倍数值,按照步长从初始值开始生成序列号,直至生成的序列号中最大值小于等于第二倍数值;
如果序列不支持循环,则从数据库中获取新的ID的序列的序列属性和序列当前值,根据序列属性和序列当前值生成...
【专利技术属性】
技术研发人员:钱峰,
申请(专利权)人:中国银行股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。