zoukankan      html  css  js  c++  java
  • 【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生成策略

  • 相关阅读:
    JavaScript中出现这个statement expected
    java: 非法字符: 'ufeff' 需要class, interface或enum
    码云如何配置公钥
    Git命令
    配置git签名
    Scanner练习总结
    怎么将项目在Eclipse中生成doc文档
    java文件使用命令生成doc文档
    包机制总结
    变量和运算符总结
  • 原文地址:https://www.cnblogs.com/codderYouzg/p/13617675.html
Copyright © 2011-2022 走看看