基于分布式系统的标识生成方法、系统、设备及介质技术方案

技术编号:27006784 阅读:16 留言:0更新日期:2021-01-08 17:10
本申请提供一种基于分布式系统的标识生成方法、系统、设备及介质,该方法包括:获取一个或多个标识生成请求,所述标识生成请求包括业务KEY值;检测当前缓存内剩余的标识数量是否满足标识生成请求的要求;当所述缓存内剩余的标识数量满足标识生成请求的要求时,则返回所述标识给请求方;当所述缓存内剩余的标识数量不满足标识生成请求的要求时,则调用Redis INCR指令生成标识返回至缓存以满足所述标识生成请求;利用所述Redis INCR获取序列的最大值,反向计算起始值依次递增或递减生成标识,所述标识的生成数量根据所述缓存内剩余的标识数量与标识生成请求的要求确定。本申请提高了标识生成的效率;依次产生的序列ID避免了ID重复现象,有利于于后续扩容。

【技术实现步骤摘要】
基于分布式系统的标识生成方法、系统、设备及介质
本申请涉及计算机领域,特别是涉及一种基于分布式系统的标识生成方法、系统、设备及介质。
技术介绍
在互联网和软件开发的一些场景中,所有的数据对象都需要一个唯一标识(Identification,ID),用来生成该ID的服务被称为ID生成器(或者发号器)。ID生成器的包括为数据对象或者其他服务发放全局唯一的ID。数据对象被分配了ID之后才能被存储和使用。现有的ID生成器基于数据库的自增序列或者UUID(通用唯一识别码)来保证数据的唯一性。然而,当数据达到一定量级后,系统将升级为分布式集群架构,一方面,如果继续采用自增序列的方式,会限制数据库节点扩容,影响ID的唯一性;另一方面,如果采用UUID方式由于其生成的ID都是无序的字符串,导致查询存储效率差,可读性差,无法保证趋势递增,也无法体现业务顺序;而如果采用Twitter开源的snowflake算法,由于其强依赖于机器时钟,当工作设备出现时钟回拨情况时,生成ID的时间戳也会随之回退,如果仍按照回退后的时间戳生成ID,则可能会出现ID重复问题;同时,多节点同一时间产生的ID差值较大,导致无法正常排序,容易造成ID资源的极大浪费。
技术实现思路
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种基于分布式系统的标识生成方法、系统、设备及介质,用于解决现有技术中标识生成容易引起的ID重复以及扩展不易的问题。为实现上述目的及其他相关目的,本申请提供一种基于分布式系统的标识生成方法,包括:获取一个或多个标识生成请求,其中,所述标识生成请求包括业务KEY值;检测当前缓存内剩余的标识数量是否满足标识生成请求的要求;当所述缓存内剩余的标识数量满足标识生成请求的要求时,则返回所述标识给请求方;当所述缓存内剩余的标识数量不满足标识生成请求的要求时,则调用RedisINCR指令生成标识返回至缓存以满足所述标识生成请求;其中,利用所述RedisINCR获取序列的最大值,反向计算起始值依次递增或递减生成标识,所述标识的生成数量根据所述缓存内剩余的标识数量与标识生成请求的要求确定。在本申请的另一目的在于提供一种基于分布式系统的标识生成系统,包括:获取模块,用于获取一个或多个标识生成请求,其中,所述标识生成请求包括业务KEY值;检测模块,用于检测当前缓存内剩余的标识数量是否满足标识生成请求的要求;第一标识生成模块,用于当所述缓存内剩余的标识数量满足标识生成请求的要求时,则返回所述标识给请求方;第二标识生成模块,用于当所述缓存内剩余的标识数量不满足标识生成请求的要求时,则调用RedisINCR指令生成标识返回至缓存以满足所述标识生成请求;其中,利用所述RedisINCR获取序列的最大值,反向计算起始值依次递增或递减生成标识,所述标识的生成数量根据所述缓存内剩余的标识数量与标识生成请求的要求确定。在本申请的另一目的在于提供一种电子设备,包括:一个或多个处理装置;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置执行所述基于分布式系统的标识生成方法。在本申请的还一目的在于提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于使所述计算机执行所述基于分布式系统的标识生成方法。如上所述,本申请的基于分布式系统的标识生成方法、系统、设备及介质,具有以下有益效果:本申请利用缓存提前响应标识生成请求,根据标识生成请求的要求采取不同的标识生成响应方式,一方面,提高了标识生成的效率;另一方面,依次产生的序列ID避免了ID重复现象,有利于于后续扩容;另外,能够生成满足分布式架构体系的纯数字序列ID,实现了高并发场景下快速批量生成ID的能力,跨节点的同业务多副本场景下,仍可保证ID的时序性。附图说明图1显示为本申请提供的一种基于分布式系统的标识生成方法一实施例流程图;图2显示为本申请提供的一种基于分布式系统的标识生成方法另一实施例流程图;图3显示为本申请提供的一种基于分布式系统的标识生成系统原理框架图;图4显示为本申请提供的一种基于分布式系统的标识生成系统结构框图;图5显示为本申请一实施例提供的一种电子设备的结构示意图。具体实施方式以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,遂图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。请参阅图1,为本申请提供的一种基于分布式系统的标识生成方法流程图,包括:步骤S1,获取一个或多个标识生成请求,其中,所述标识生成请求包括业务KEY值;其中,根据业务KEY值的类型不同生成格式不同的ID序列号,例如,KEY值可根据表单名确定,其中,按照所述业务KEY值不同可生成纯数字ID序列号或带业务日期信息的ID序列号;同时,通过标识生成请求可形成单个ID序列号和批量ID序列号的获取接口。例如,当为纯数字的ID序列号其可取值范围为1~263-1,该序列号为非固定长度,有利于后续扩容;而当带业务日期信息的ID序列号时,可采用原始KEY+日期(yyyyMMdd)+定长数字序列的固定长度。步骤S21,检测当前缓存内剩余的标识数量是否满足标识生成请求的要求;步骤S22,当所述缓存内剩余的标识数量满足标识生成请求的要求时,则返回所述标识给请求方;步骤S23,当所述缓存内剩余的标识数量不满足标识生成请求的要求时,则调用RedisINCR指令生成标识返回至缓存以满足所述标识生成请求;其中,利用所述RedisINCR获取序列的最大值,反向计算起始值依次递增或递减生成标识,所述标识的生成数量根据所述缓存内剩余的标识数量与标识生成请求的要求确定。其中,有序的标识按照时间轴依次存储在存储系统中,进而存储在存储系统(例如redis)中的标识是有序且单调递增的,业务系统从所述存储系统中获取标识,避免了由于物理机上的时间不一致造成前一个请求获取的ID反解出的时间晚于后一个请求获取的ID反解出的时间,从而避免ID不完全有序。具体地,计算所述标识生成请求的要求数量与缓存内剩余的标识数量之间的差值;将所述缓存内剩余的标识移动至返回结果,清空缓存;所述标识的生成数量为所述缓存的最大缓存量与所述标识生成请求的要求数量与缓存内剩余的标识数量之间的差值之和;在调用方不使用KEY获取ID的情本文档来自技高网...

【技术保护点】
1.一种基于分布式系统的标识生成方法,其特征在于,所述方法包括以下步骤:/n获取一个或多个标识生成请求,其中,所述标识生成请求包括业务KEY值;/n检测当前缓存内剩余的标识数量是否满足标识生成请求的要求;/n当所述缓存内剩余的标识数量满足标识生成请求的要求时,则返回所述标识给请求方;/n当所述缓存内剩余的标识数量不满足标识生成请求的要求时,则调用Redis INCR指令生成标识返回至缓存以满足所述标识生成请求;其中,利用所述Redis INCR获取序列的最大值,反向计算起始值依次递增或递减生成标识,所述标识的生成数量根据所述缓存内剩余的标识数量与标识生成请求的要求确定。/n

【技术特征摘要】
1.一种基于分布式系统的标识生成方法,其特征在于,所述方法包括以下步骤:
获取一个或多个标识生成请求,其中,所述标识生成请求包括业务KEY值;
检测当前缓存内剩余的标识数量是否满足标识生成请求的要求;
当所述缓存内剩余的标识数量满足标识生成请求的要求时,则返回所述标识给请求方;
当所述缓存内剩余的标识数量不满足标识生成请求的要求时,则调用RedisINCR指令生成标识返回至缓存以满足所述标识生成请求;其中,利用所述RedisINCR获取序列的最大值,反向计算起始值依次递增或递减生成标识,所述标识的生成数量根据所述缓存内剩余的标识数量与标识生成请求的要求确定。


2.根据权利要求1所述的基于分布式系统的标识生成方法,其特征在于,还包括:根据业务KEY值的类型不同生成格式不同的ID序列号,其中,按照所述业务KEY值不同可生成纯数字ID序列号或带业务日期信息的ID序列号。


3.根据权利要求1或2所述的基于分布式系统的标识生成方法,其特征在于,所述标识的生成数量根据所述缓存内剩余的标识数量与标识生成请求的要求确定的步骤,包括:
计算所述标识生成请求的要求数量与缓存内剩余的标识数量之间的差值;
将所述缓存内剩余的标识移动至返回结果,清空缓存;
所述标识的生成数量为所述缓存的最大缓存量与所述标识生成请求的要求数量与缓存内剩余的标识数量之间的差值之和。


4.根据权利要求1或2所述的基于分布式系统的标识生成方法,其特征在于,还包括:当检测到所述标识生成请求中不存在业务KEY值时,采用默认的业务KEY值从缓存中提取相应的ID序列号。


5.根据权利要求1所述的基于分布式系统的标识生成方法,其特征在于,所述标识的非固定长度,且当所述ID序列号不满足预设固定长度时,在其前方采用零补足长度。


6.根据权利要求1所述的基于分布式系统的标识生成方法,其特征在于,还包括:
利用主用数据库与备用数据...

【专利技术属性】
技术研发人员:唐明东
申请(专利权)人:重庆紫光华山智安科技有限公司
类型:发明
国别省市:重庆;50

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

1