博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全局唯一ID生成方式之twitter/snowflake(雪花算法)
阅读量:6077 次
发布时间:2019-06-20

本文共 603 字,大约阅读时间需要 2 分钟。

hot3.png

          为了解决分布式 ID 唯一不重复性,twitter 开源了 snowflake 算法,并被众多的企业作为参照,实现自己的一套 ID 生成器。SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和工作机器ID作区分)

          先来一张 twitter 的一张算法图。

       接下来大概讲一下雪花算法,主要有以下几部分组成

        1,  首位代表符号位。0 为正,1位负,而在生成的 ID 中, 要求基本都是正数, 所以首位基本是0.

        2,41位的时间戳。用来记录当前时间与标记时间twepoch的毫秒数的差值,JAVA 应用中是长度13的 Long 型时间戳, 一共41位。计算下来大可以使用69年(T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69。在这里设置twepoch=1485882061743L ,(时间为2017-01-01 01:01:01)。

        3,5位数据中心 ID, 及5位工作机器 ID。 这里可以解决分布式 标志性问题。支持2的10次方台机器。数据中心和工作机器 ID 取值均为(0~31)

        4,  12位序列号。每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号(1L << 12)

      

      代码连接 > 

 

转载于:https://my.oschina.net/colossus/blog/1479653

你可能感兴趣的文章
我的友情链接
查看>>
centos7 中firewalld防火墙不得不说的一些事
查看>>
我的友情链接
查看>>
Java自动加载程序目录下的jar包
查看>>
[转载] 信息系统项目管理师考试技巧和总结
查看>>
ADSL密码查看器绿色版
查看>>
JavaScript变量的作用域
查看>>
互联网数据中心选择服务器托管原则
查看>>
一、vSphere 6.7 U1(一):安装ESXi 6.7U1
查看>>
使用Enumerated && EnumType映射枚举字段
查看>>
跳板机登录服务器脚本及命令制作
查看>>
浅谈设计模式2-装饰模式
查看>>
SharedPreferences的使用
查看>>
mysql数据迁移到mongoDB中,如何操作?
查看>>
Maven学习总结(六)——Maven与Eclipse整合
查看>>
Myeclipse常用快捷键
查看>>
初始依赖注入
查看>>
Myeclipse常用快捷键
查看>>
Java基础学习总结(15)——java读取properties文件总结
查看>>
HTTP协议详解
查看>>