Snowflake 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Snowflake 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 Apache
开发语言 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发
开发厂商 Twitter
地区 不详
提 交 者 步影随月
适用人群 未知
收录时间 2016-06-16

软件简介

Twitter在把存储系统从MySQL迁移到Cassandra的过程中,由于Cassandra没有顺序ID生成机制,于是自己开发了一套全局唯一ID生成服务:Snowflake。优点是:高性能,低延迟;独立的应用;按时间有序。缺点是:需要独立的开发和部署。

  • 41位的时间序列(精确到毫秒,41位的长度可以使用69年);

  • 10位的机器标识(10位的长度最多支持部署1024个节点);

  • 12位的计数顺序号(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)最高位是符号位,始终为0。

Snowflake是一个很高效很方便的GUID产生算法,一个int64_t字段就可以胜任,不像现在主流128bit的GUID算法,即使无法保证严格的ID序列性,但是对于特定的业务,比如用做游戏服务器端的GUID产生会很方便。另外,在多线程的环境下,序列号使用Atomic可以在代码实现上有效减少锁的密度。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (5)

加载中
有人用过 MySQLMaxValueIncrementer 吗 ?
2017/06/03 10:07
回复
举报
独立开发部署? #snowflake#
2016/07/04 08:45
回复
举报
研究过 #snowflake#
2016/07/04 14:27
回复
举报
还有其他好的方式吗? #snowflake#
2016/07/04 18:06
回复
举报
G.
两年前的, 而且已经停止更新了! #snowflake#
2016/07/04 19:57
回复
举报
更多评论
暂无内容
发表于开发技能专区
2016/12/17 14:02

Twitter Snowflake算法详解

一、简介 Twitter Snowflake算法是用来在分布式场景下生成唯一ID的。 举个栗子:我们有10台分布式MySql服务器,我们的系统每秒能生成10W条数据插入到这10台机器里,现在我们需要为每一条数据生成一个全局唯一的ID, 并且这些 ID 有大致的顺序。 二、算法图解 如图:最后生成的ID是一个long类型,long占64bit,符号位占1...

0
1
发表了博客
2015/10/20 15:51

修改自Twitter的Snowflake算法

分布式ID算法

0
1
发表了博客
2019/04/10 10:10

Twitter-Snowflake:自增ID算法

简介 Twitter 早期用 MySQL 存储数据,随着用户的增长,单一的 MySQL 实例没法承受海量的数据,后来团队就研究如何产生完美的自增ID,以满足两个基本的要求: 每秒能生成几十万条 ID 用于标识不同的 记录; 这些 ID 应该可以有个大致的顺序,也就是说发布时间相近的两条记录,它们的 ID也应当相近,这样才能方便各种客户...

0
0
发表于服务端专区
2018/03/14 14:07

Twitter的分布式雪花算法 SnowFlake

原理 Twitter的雪花算法SnowFlake,使用Java语言实现。 SnowFlake算法产生的ID是一个64位的整型,结构如下(每一部分用“-”符号分隔): 1位标识部分,在java中由于long的最高位是符号位,正数是0,负数是1,一般...

0
7
发表了博客
2019/10/25 13:12

分布式自增ID算法snowflake-Twitter

概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。 有些时候我们希望能使用一种简单一些的ID,并且...

0
0
发表了博客
2018/06/05 11:33

Twitter的SnowFlake分布式id生成算法

二进制相关知识回顾 1、所有的数据都是以二进制的形式存储在硬盘上。对于一个字节的8位到底是什么类型 计算机是如何分辨的呢? 其实计算机并不负责判断数据类型,数据类型是程序告诉计算机该如何解释内存块. 2、对于字符的存储,先将字符转化成其字符集的码点,(码点就是一个数字),然后把该数字转成2进制存储。所以我们...

0
0
发表了博客
2018/10/17 09:33

Twitter的雪花算法(snowflake)自增ID

前言   这个问题源自于,我想找一个分布式下的ID生成器。   这个最简单的方案是,数据库自增ID。为啥不用咧?有这么几点原因,一是,会依赖于数据库的具体实现,比如,mysql有自增,oracle没有,得用序列,mongo似乎也没有他自己有个什么ID,sqlserver貌似有自增等等,有些不稳定因素,因为ID生成是业务的核心基础。...

0
0
2018/06/05 10:33

Twitter的snowflake算法实现分布式ID

背景 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 /** * Twitter_Snowflake<br> * SnowFlake的结构如下(每部分用-分开):<br...

0
2
2017/09/11 16:39

Twitter-Snowflake 64位自增ID简介

在系统中,我们需要为每个资源设置一个唯一ID,单表时代,使用数据库的自增ID可以很简单的达到我们的目的,但是在分布式系统、多库多表的情况下,数据库自增ID就不灵了,因此,我们需要另一种算法来实现分布式环境...

0
1
发表于开发技能专区
2015/11/27 10:51

分布式自增ID解决方案-Twitter Snowflake

在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作。在单表时代,我们可以完全依赖于数据库的自增ID来唯一标识一个用户或数据对象。但是当我们对数据库进行了分库分表后,就不能依赖于每个表的自增ID来全局唯一标识这些数据了。因此,我们需要提供一个全局唯一的ID号生成...

0
10
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2019/09/23 16:24

美团技术分享:深度解密美团的分布式ID生成算法

本文来自美团技术团队“照东”的分享,原题《Leaf——美团点评分布式ID生成系统》,收录时有勘误、修订并重新排版,感谢原作者的分享。 1、引言 鉴于IM系统中聊天消息ID生成算法和生成策略的重要性(因为某种意义上来说:聊天消息ID的优劣决定了IM应用层某些功能实现的难易度),所以即时通讯网近期正在着重整理有关IM中...

1
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
5 评论
199 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部