文档章节

全局唯一ID生成方式之twitter/snowflake(雪花算法)

Raymond
 Raymond
发布于 2017/07/22 10:30
字数 358
阅读 1K
收藏 1

精选30+云产品,助力企业轻松上云!>>>

          为了解决分布式 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://gitee.com/nforgo/moth-sequence

 

上一篇: Redis 集群搭建
Raymond
粉丝 0
博文 11
码字总数 3228
作品 0
浦东
程序员
私信 提问
加载中
请先登录后再评论。

暂无文章

opencv学习笔记2:图像处理基础

学习笔记 来源于淘宝的一个视频,记录下学习笔记。 图像由像素组成: 任何一个图,有很多点构成,每一个点,我们管它叫像素。 如图,左边图和右边图时同一个事物。不同点是左边点比较大,右边...

osc_4b2ephd0
5分钟前
0
0
搭配MySQL与MySQL搭配使用的最佳排序规则是什么? [关闭] - What is the best collation to use for MySQL with PHP? [closed]

问题: I'm wondering if there is a "best" choice for collation in MySQL for a general website where you aren't 100% sure of what will be entered? 我想知道对于一般网站而言,MySQL......

技术盛宴
6分钟前
0
0
NNIE-lite 为算法工程师而生

《NNIE-lite》   趟过NNIE的小伙伴可能都知道,NNIE是有很多坑的,而且是纯C的环境,除非你有几年C的开发经验,否则阅读起来不是那么容易的,而作为算法工程师,我相信更多人和我一样擅长P...

osc_jpwyxabk
6分钟前
0
0
ECCV 2020 Oral | 可逆图像缩放:完美恢复降采样后的高清图片

     本文介绍的是ECCV 2020 Oral论文《Invertible Image Rescaling》,论文作者来自北大、微软亚洲研究院和多伦多大学。   作者 | 郑书新   编辑 | 丛 末      论文地址:https...

osc_qheq8wav
7分钟前
0
0
投稿、接收双Double,史上最火ECCV你中了么?

     作者 | 蒋宝尚   编辑 | 丛 末   经历了程序主席一度失联,线上线下两难抉择的ECCV 2020终于迎来了放榜。据官方邮件介绍,这届会议 共收到5025份有效投稿,共接收1361篇,录取率...

osc_ssnt89cw
8分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部