技术新讯 > 计算推算,计数设备的制造及其应用技术 > 基于雪花算法的分布式ID生成优化方法、系统、介质及设备与流程  >  正文

基于雪花算法的分布式ID生成优化方法、系统、介质及设备与流程

  • 国知局
  • 2024-07-31 23:01:58

本发明涉及分布式系统唯一id生成,具体地说是一种基于雪花算法的分布式id生成优化方法、系统、介质及设备。

背景技术:

1、在当前的大数据时代,分布式系统广泛应用于互联网、云计算、物联网和人工智能等领域。在这些系统中,生成唯一且有序的标识符对于数据管理、索引和跟踪等任务至关重要。

2、传统的id生成方法面临一些挑战。例如,在分布式环境下,存在着多台机器同时生成id的并发问题,混乱的时间戳可能导致id冲突。此外,不同机器上生成的id格式可能不一致,这给数据交换和系统协同开发带来了困难。

3、为了解决这些问题,雪花算法应运而生。雪花算法是一种常用的分布式id生成算法,通过使用64位整数作为唯一标识符,具备足够的容量来保证在多台机器或分布式环境中生成不重复的id。然而,雪花算法本身也存在一些缺陷。

4、故如何针对雪花算法存在的id长度限制、机器时钟不同及发生回拨等缺陷进行优化,提升实际生产环境下的使用体验是目前亟待解决的技术问题。

技术实现思路

1、本发明的技术任务是提供一种基于雪花算法的分布式id生成优化方法、系统、介质及设备,来解决如何针对雪花算法存在的id长度限制、机器时钟不同及发生回拨等缺陷进行优化,提升实际生产环境下的使用体验的问题。

2、本发明的技术任务是按以下方式实现的,一种基于雪花算法的分布式id生成优化方法,该方法具体如下:

3、初始化配置:配置和分配数据中心id和机器标识id,保证唯一性和区分不同机器和数据中心;

4、生成id,具体如下:

5、获取当前时间戳:使用高精度时钟源获取当前时间戳,确保时间戳的准确性;

6、判断时间回拨:与之前生成的时间戳进行比较:

7、若发生事件回拨,则等待或使用补偿方式处理;

8、生成序列号:在同一毫秒内生成唯一的序列号,保证在同一毫秒内生成的id之间的唯一性;

9、组装id:将数据中心id、机器标识id、时间戳和序列号按照顺序组装成64为整数id。

10、作为优选,时钟同步服务采用网络时间协议(ntp),确保分布式系统中的机器时钟保持准确且同步。

11、更优地,时间回拨时,情况如下:

12、若时钟回拨幅度小于设定阈值,则休眠矫正;

13、若时钟回拨幅度大于设定阈值或出现多次回拨,则获取缓存id对外提供服务。

14、更优地,休眠矫正具体如下:

15、当服务请求获取分布式唯一id时,若发生时间回拨且回拨时长在允许范围内(例如回拨时长小于500ms),则让请求线程睡眠回拨时长等待恢复正常;若线程睡眠等待回拨时长时间段内又发生了时间回拨,不可能一直等待矫正,直接抛出异常中断该次请求。

16、更优地,获取缓存id具体如下:

17、在服务正常运行情况下,缓存设定时间内的未使用序列号id,当发生时间回拨时,从缓存中取序列号自增作为唯一id返回给请求端;当时钟恢复正常后,不再从缓存中取序列号使用,转变为正常获取流程。

18、作为优选,生成id时,采用预热方式,即通过预生成设定数量的id,再启动服务时加载到内存中,确保id序列的不间断和唯一性。

19、作为优选,id的存储方式采用将id拆分为多个字段再存储。

20、一种基于雪花算法的分布式id生成优化系统,该系统用于实现如上述的基于雪花算法的分布式id生成优化方法;该系统包括:

21、初始化配置模块,用于配置和分配数据中心id和机器标识id,保证唯一性和区分不同机器和数据中心;

22、id生成模块,用于生成id;

23、其中id生成模块包括:

24、当前时间戳获取子模块,用于使用高精度时钟源获取当前时间戳,确保时间戳的准确性;

25、时间回拨判断子模块,用于与之前生成的时间戳进行比较:

26、若发生事件回拨,则等待或使用补偿方式处理;

27、序列号生成子模块,用于在同一毫秒内生成唯一的序列号,保证在同一毫秒内生成的id之间的唯一性;

28、id组装子模块,用于将数据中心id、机器标识id、时间戳和序列号按照顺序组装成64为整数id。

29、一种电子设备,包括:存储器和至少一个处理器;

30、其中,所述存储器存储计算机执行指令;

31、所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上述的基于雪花算法的分布式id生成优化方法。

32、一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如上述的基于雪花算法的分布式id生成优化方法。

33、本发明的基于雪花算法的分布式id生成优化方法、系统、介质及设备具有以下优点:

34、(一)本发明改善了传统雪花算法在分布式id生成中容易出现的机器时钟问题等缺陷,提高了id生成的效率、稳定性和可靠性,适用于各类分布式系统;

35、(二)本发明解决了id长度限制、机器时钟问题、定义标准格式和解决冷启动问题,实现了更高效、稳定和可靠的分布式id生成方式;

36、(三)本发明可以提高分布式系统的性能,通过缩短id长度、改善时钟同步准确性和预生成id等措施,分布式系统在存储、传输和计算方面会有明显的提升,有助于降低系统维护和运维成本,提高了分布式系统的稳定性和数据一致性;

37、(四)本发明优化了雪花算法原有的机器时钟、冷启动等问题,减少了系统故障和id重复的风险,可以有效降低系统运维和维护的成本;

38、(五)对于短时的时间回拨通过对请求线程的睡眠操作来等待时间的矫正,对于时长稍长的时间回拨通过缓存未使用id的方式等待时间矫正;

39、(六)本发明通过预生成部分id在服务启动时加载至内存的方式,解决了分布式系统新部署、扩容或重新启动时出现的冷启动问题;

40、(七)本发明通过对生成id的拆分存储操作,解决了实际生产中出现的由于id长度过长出现的长度限制问题;

41、(八)本发明基于雪花算法,通过网络时间协议、休眠矫正和缓存id等技术,减少了系统故障和id重复的风险,可以有效降低系统运维和维护的成本,提升实际服务的使用体验。

技术特征:

1.一种基于雪花算法的分布式id生成优化方法,其特征在于,该方法具体如下:

2.根据权利要求1所述的基于雪花算法的分布式id生成优化方法,其特征在于,时钟同步服务采用网络时间协议,确保分布式系统中的机器时钟保持准确且同步。

3.根据权利要求1或2所述的基于雪花算法的分布式id生成优化方法,其特征在于,时间回拨时,情况如下:

4.根据权利要求3所述的基于雪花算法的分布式id生成优化方法,其特征在于,休眠矫正具体如下:

5.根据权利要求3所述的基于雪花算法的分布式id生成优化方法,其特征在于,获取缓存id具体如下:

6.根据权利要求1所述的基于雪花算法的分布式id生成优化方法,其特征在于,生成id时,采用预热方式,即通过预生成设定数量的id,再启动服务时加载到内存中,确保id序列的不间断和唯一性。

7.根据权利要求1所述的基于雪花算法的分布式id生成优化方法,其特征在于,id的存储方式采用将id拆分为多个字段再存储。

8.一种基于雪花算法的分布式id生成优化系统,其特征在于,该系统用于实现如权利要求1-7中任一项所述的基于雪花算法的分布式id生成优化方法;该系统包括:

9.一种电子设备,其特征在于,包括:存储器和至少一个处理器;

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如权利要求1至7中任一所述的基于雪花算法的分布式id生成优化方法。

技术总结本发明公开了基于雪花算法的分布式ID生成优化方法、系统、介质及设备,属于分布式系统唯一ID生成技术领域,本发明要解决的技术问题为如何针对雪花算法存在的ID长度限制、机器时钟不同及发生回拨等缺陷进行优化,提升实际生产环境下的使用体验,采用的技术方案为:初始化配置:配置和分配数据中心ID和机器标识ID,保证唯一性和区分不同机器和数据中心;生成ID,具体如下:获取当前时间戳:使用高精度时钟源获取当前时间戳;判断时间回拨:与之前生成的时间戳进行比较:若发生事件回拨,则等待或使用补偿方式处理;生成序列号:在同一毫秒内生成唯一的序列号;组装ID:将数据中心ID、机器标识ID、时间戳和序列号按照顺序组装成64为整数ID。技术研发人员:张任之,陈尧,张目飞,李腾飞,王文宇受保护的技术使用者:浪潮云信息技术股份公司技术研发日:技术公布日:2024/7/29

本文地址:https://www.jishuxx.com/zhuanli/20240730/195694.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。