【Mybatis-Plus框架学习】雪花算法 剖析

Youzg LOGO

介绍:

snowflake是 Twitter公司 开源的 分布式ID生成 算法

2020年8月4日,《苏州高新区·2020胡润全球独角兽榜》发布,雪花算法排名第17位


那么,本人来通过 一张图 基本展示下 雪花算法原理

原理:

原理


相信有同学不理解上图的内容,
那么,本人来 解释 下上图的内容:

解释:

  • 最高位是符号位,始终为0,不可用。
  • 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。
    时间位还有一个很重要的作用是可以根据时间进行排序。
    注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截) 后得到的值,
    这里的 开始时间戳,一般是我们的 id生成器开始使用的时间
    由我们程序来指定的(如下下面程序SnowFlake类的START_STMP属性)
    41位 的时间截,可以使用69年,
    $$ 年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69 $$
  • 10位的机器标识
    (5bit是 数据中心,5bit是 机器ID)
    10位的长度最多支持部署1024个节点。
  • 12位的计数序列号,序列号即一系列的自增id,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持 每个节点每毫秒 产生4096个ID序号

加起来刚好64位,为一个Long型。这个算法很简洁,但依旧是一个很好的ID生成策略

posted @ 2020-09-05 11:50  在下右转,有何贵干  阅读(1534)  评论(0编辑  收藏  举报