首页 > 编程语言 >雪花算法ID为什么是无法排序的??

雪花算法ID为什么是无法排序的??

时间:2023-11-03 12:13:39浏览次数:53  
标签:占用 生成 毫秒 算法 序列号 排序 ID

雪花算法生成 ID 的结构

  • 雪花算法生成的 ID 是一个 64 位的二进制数,由以下几个部分组成:

*其中,各个部分的具体含义如下:

  • 时间戳:占用 41 位,记录生成 ID 的时间戳,精确到毫秒级别。
  • 机器 ID:占用 10 位,表示生成 ID 的机器的唯一标识。
  • 序列号:占用 12 位,表示在同一毫秒内生成的多个 ID 的序号。

雪花算法生成 ID 的过程

  • 获取当前时间戳,精确到毫秒级别。
  • 计算时间戳的偏移量,将其减去一个起始时间
  • 将时间戳、机器 ID 和序列号按位拼接成一个 64 位的二进制数。
  • 返回该二进制数作为生成的唯一 ID。

注意事项

  • 时间戳部分需要在全局范围内保持唯一性,因此需要确保各个节点的时钟同步。
  • 机器 ID 需要在同一个分布式系统中保持唯一性。
  • 序列号需要在同一毫秒内保持唯一性,如果同一毫秒内生成的序列号达到了最大值,则需要等到下一毫秒再进行生成。
  • 由于时间戳位占用了 41 位,可以表示的时间范围非常广泛,可以使用雪花算法生成的 ID 来满足需求中对于时间顺序、唯一性等方面的要求。

原因

  • 花算法生成的 ID 是按照时间顺序递增的,但是并不保证可以直接进行排序。雪花算法生成的 ID 是一个 64 位的整数,由以下几部分组成:
    * 1. 时间戳:占用 41 位,记录生成 ID 的时间戳,精确到毫秒级别。
    * 2. 机器 ID:占用 10 位,表示生成 ID 的机器的唯一标识。
    * 3. 序列号:占用 12 位,表示在同一毫秒内生成的多个 ID 的序号。
  • 由于时间戳的高位被占用,同时还有机器 ID 和序列号的存在,因此无法直接通过对雪花算法生成的 ID 进行排序来实现按时间顺序的排序。

标签:占用,生成,毫秒,算法,序列号,排序,ID
From: https://www.cnblogs.com/guanchaoguo/p/17807330.html

相关文章

  • 羚通视频智能分析平台可视化平台智慧矿山 煤矿算法监测管理平台
    ​羚通视频智能分析平台是一款卓越的视频算法分析平台,具备高性能、高可靠性、高可扩展性和低成本的特性,使用户能够高效地执行复杂计算任务。该平台在智慧矿山领域,结合了物联网、传感器技术和数据分析算法,提供了实时精准的矿山安全监测和预警服务,从而提高了矿山安全管理的水平,减少......
  • 串 - KMP算法
    数据结构算法中重中之重。肯定考。  针对该算法,ShoelessCai打算用几个问题来梳理清楚:1.算法返回什么?返回的是主串的位置i2.算法输入什么?主串、模式串(较短的)、Next数组(记录模式串位置)3.基本思想:如果匹配失败的时候,从失败位置,往前搜索,有多少个字符SLOTS是一致的?......
  • 归并排序--排序算法
    归并排序介绍归并排序和快速排序一样,都是基于分治思想的应用。通过递归,不断将原数列分为两个数列,然后再分别使其有序,最后通过归并将两个有序子数列合并为新的有序数列。值得注意的是,与快速排序不同,归并排序是稳定的。代码实现voidmerge_sort(inta[],intl,intr){......
  • Android WiFi工具类
    ✍️作者简介:沫小北/码农小北(专注于Android、Web、TCP/IP等技术方向)</br>......
  • 卸载IDEA重新安装
    目的 由于更换jdk,老的idea已经不能支持最新的jdk,需要需要卸载掉老的版本,重新安装新的idea.卸载 1.打开控制面板,找到卸载程序 2.找到idea,右键点击卸载 3.选择删除缓存和插件,点击卸载 4.等待完成 ......
  • C# Lambda 分组排序问题(先对数据进行时间倒序排列,然后再按照某字符分组,在每个分组内再
    问题:先对数据进行时间倒序排列,然后再按照某字符分组,在每个分组内再按照某数字或字符正序排列解答:vardata=list.OrderByDescending(i=>i.Date).ToList();vargData=data.GroupBy(g=>g.code).Select(l=>l.OrderBy(i=>i.Step));varinvData=newList<IndexVM>();......
  • JAVA技术栈的有福啦!这款IDEA插件,写完代码即可调试
    国产API调试工具Apipost推出IDEA插件,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。ApipostHelper=API调试工具+API管理工具+API搜索工具。在商店中搜索或直接点击下方链接即可下载:https://plugins.jetbrains.com......
  • IDEA插件推荐,代码写完直接调试、生成接口文档
    国产API调试工具Apipost推出IDEA插件,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。ApipostHelper=API调试工具+API管理工具+API搜索工具。在商店中搜索或直接点击下方链接即可下载:https://plugins.jetbrains.com......
  • 提升物流效率和可见性:RFID技术在物流线上的创新应用
    提升物流效率和可见性:RFID技术在物流线上的创新应用随着科技的进步,物联网和大数据的应用越来越广泛。RFID(无线射频识别技术)作为物联网的重要组成部分,已经广泛应用于物流行业中。RFID技术通过无线电信号识别特定目标,无需人工干预,大大提高了物流线的效率。一、RFID的工作原理RFID系统......
  • JAVA技术栈的有福啦!这款IDEA插件,写完代码即可调试
    国产API调试工具Apipost推出IDEA插件,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。ApipostHelper=API调试工具+API管理工具+API搜索工具。在商店中搜索或直接点击下方链接即可下载:https://plugins.jetbrains.com/p......