解决企业级分布式ID全局有序递增且唯一问题的方法、系统、终端设备及存储介质技术方案

技术编号:39062395 阅读:14 留言:0更新日期:2023-10-12 19:55
本发明专利技术提供了一种解决企业级分布式ID全局有序递增且唯一问题的方法、系统、终端设备及存储介质,涉及计算机系统领域,系统部分包括分布式id服务端以及SDK;分布式id服务端:用于提供标准时间和节点编号,具体的用于时钟回拨校验模块、节点编号内存预加载模块以及获取节点编号和标准时间模块;本发明专利技术解决目前分布式id服务无法满足支撑企业级大规模应用、保证ID全局有序递增且唯一的技术问题,使用该分布式id服务方案,可以支撑企业级大规模应用,同时能够保证ID全局有序递增且唯一。时能够保证ID全局有序递增且唯一。时能够保证ID全局有序递增且唯一。

【技术实现步骤摘要】
解决企业级分布式ID全局有序递增且唯一问题的方法、系统、终端设备及存储介质


[0001]本专利技术涉及计算机系统领域,具体而言,涉及一种解决企业级分布式ID全局有序递增且唯一问题的方法、系统、终端设备及存储介质。

技术介绍

[0002]随着数据日渐增长,主从同步负荷较大,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。
[0003]目前已有一些方案可以生成分布式id,比如基于雪花算法的百度的UIDGenerator、leaf

snowflake和leaf

segment方案可以实现单应用的分布式ID有序递增全局唯一,无法做到全局有序递增且唯一。同时现有技术无法支撑企业级大规模应用且无法保证ID全局有序递增且唯一。

技术实现思路

[0004]本专利技术实施例提供一种解决企业级分布式ID全局有序递增且唯一问题的方法、系统、终端设备及存储介质,旨在解决目前分布式id服务无法满足支撑企业级大规模应用、保证ID全局有序递增且唯一的技术问题。
[0005]一种解决企业级分布式ID全局有序递增且唯一问题的系统,包括分布式id服务端以及SDK;
[0006]分布式id服务端:用于提供标准时间和节点编号,具体的用于时钟回拨校验模块、节点编号内存预加载模块以及获取节点编号和标准时间模块;
[0007]时钟回拨校验模块,在分布式ID服务端应用启动后,在后台启动一个线程,持续间隔固定时间获取存储时间,然后和内存中上一次获取到的存储时间进行比较判断是否回拨;
[0008]节点编号内存预加载模块,节点编号在存储中分为两个部分,一个部分存放未使用的节点编号,另一个部分存放已分配给SDK应用的已使用的节点编号;节点编号内存预加载模块为定时任务,负责持续间隔固定时间检测内存中节点编号队列的长度,当长度低于阈值时,则从存储中未使用节点编号部分中加载未加载未使用状态的节点编号到内存队列,同时将存储中未使用节点编号的部分中标记为已加载未使用状态;
[0009]获取节点编号和标准时间模块,该模块优先从内存队列获取节点编号,当内存队列为空时,则降级从存储获取;同时从存储mysql获取基准时间;并根据标准时间和内存中的回拨时间,计算获取标准时间;
[0010]SDK:接入分布式id服务端的应用需要集成SDK,在应用启动时从服务端获取节点编号和标准时间,SDK内根据标准时间和节点编号基于雪花算法生成分布式ID,在生成分布
式ID时SDK与分布式ID服务端没有交互。
[0011]进一步的:一种解决企业级分布式ID全局有序递增且唯一问题的方法,。
[0012]进一步的:终端设备可以包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当终端设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行时执行如前述实施例中所述的深度学习模型训练方法的步骤。
[0013]进一步的:一种存储介质,该存储有计算机程序,所述计算机程序被处理器运行时执行上述的方法的步骤。
[0014]本专利技术的有益效果:本专利技术解决目前分布式id服务无法满足支撑企业级大规模应用、保证ID全局有序递增且唯一的技术问题,使用该分布式id服务方案,可以支撑企业级大规模应用,同时能够保证ID全局有序递增且唯一。
附图说明
[0015]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0016]图1示出了本专利技术方法的组成示意图;
[0017]图2示出了本专利技术系统的流程示意图;
[0018]图3示出了本专利技术终端设备的组成示意图;
具体实施方式
[0019]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,应当理解,本专利技术中附图仅起到说明和描述的目的,并不用于限定本专利技术的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本专利技术中使用的流程图示出了根据本专利技术的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本
技术实现思路
的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
[0020]另外,本专利技术所描述的实施例仅仅是本专利技术的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本专利技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本专利技术的实施例的详细描述并非旨在限制要求保护的本专利技术的范围,而是仅仅表示本专利技术的选定实施例。基于本专利技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0021]需要说明的是,本专利技术实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。还应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。在本专利技术的描述中,还需要说明的是,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0022]参阅图2,本案所描述的系统,具体的本案中分布式ID服务分为两部分:
[0023]1、分布式id服务端:用于提供标准时间和节点编号;
[0024]2、SDK:接入分布式id服务端的应用需要集成SDK,在应用启动时从服务端获取节点编号和标准时间,SDK内根据标准时间和节点编号基于雪花算法生成分布式ID,在生成分布式ID时SDK与分布式ID服务端没有交互。
[0025]关于SDK获取分布式ID的流程如下:
[0026]1、应用(SDK)启动时,SDK会向分布式ID服务发送请求获取节点编号和标准时间t0;
[0027]2、计算SDK发送获取节点编号和标准时间请求的耗时,然后除以2得到的值t1,我们默认为发送请求的单向耗时;
[0028]3、SDK根据本应用当前时间计算与分布式ID服务标准时间的标准时间差,计算方式为:标准时间差=t0

(当前SDK应用时间

t1),得到值t2;
[0029]4、计算SDK应用本地的回拨值,计算方式为:上次生成ID时的SDK应用时间

当前SDK应用时间,得到回拨值t3,当t3>0时,则发生回拨,用当前回拨值t3+历本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种解决企业级分布式ID全局有序递增且唯一问题的系统,其特征在于,包括分布式id服务端以及SDK;分布式id服务端:用于提供标准时间和节点编号,具体的用于时钟回拨校验模块、节点编号内存预加载模块以及获取节点编号和标准时间模块;时钟回拨校验模块,在分布式ID服务端应用启动后,在后台启动一个线程,持续间隔固定时间获取存储时间,然后和内存中上一次获取到的存储时间进行比较判断是否回拨;节点编号内存预加载模块,节点编号在存储中分为两个部分,一个部分存放未使用的节点编号,另一个部分存放已分配给SDK应用的已使用的节点编号;节点编号内存预加载模块为定时任务,负责持续间隔固定时间检测内存中节点编号队列的长度,当长度低于阈值时,则从存储中未使用节点编号部分中加载未加载未使用状态的节点编号到内存队列,同时将存储中未使用节点编号的部分中标记为已加载未使用状态;获取节点编号和标准时间模块,该模块优先从内存队列获取节点编号,当内存队列为空时,则降级从存储获取;同时从存储mysql获取基准时间;并根据标准时间和内存中的回拨时间,计算获取标准时间;SDK:根据标准时间和节点编号基于雪花算法生成分布式ID。2.一种解决企业级分布式ID全局有序递增且唯一问题的方法,其特征在于,具体包括以下步骤:步骤S01、SDK启动时,SDK会向分布式ID服务发送请求获取节点编号和标准时间t0;步骤S02、计算SDK发送获取节点编号和标准时间请求的耗时,然后除以2得到的值t1,我们默认为发送请求的单向耗时;步骤S03、SDK根据本应用当前时间计算与分布式ID服务标准时间的标准时间差,计算方式为:标准时间差=t0

(当前SDK应用时间

t1),得到值t2;步骤S04、计算SDK应用本地的回拨值,计算方式为:上次生成ID时的SDK应用时间

当前SDK应用时间,得到回拨值t3,当t3>0时,则发生回拨,用当前回拨值t3+历史回拨值做为新...

【专利技术属性】
技术研发人员:赵琨孙炎森徐晓剑滕其武张战锋姜涛李兴荆梦雨
申请(专利权)人:中信银行股份有限公司
类型:发明
国别省市:

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

1