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 指数为
超过 的项目

Snowflake 的相关资讯

还没有任何资讯

Snowflake 的相关博客

Twitter Snowflake算法详解

一、简介 Twitter Snowflake算法是用来在分布式场景下生成唯一ID的。 举个栗子:我们有10台分布式MySql服务器,我们的系统每秒...

Twitter-Snowflake:自增ID算法

简介 Twitter 早期用 MySQL 存储数据,随着用户的增长,单一的 MySQL 实例没法承受海量的数据,后来团队就研究如何产生完美的...

Twitter的分布式雪花算法 SnowFlake

原理 Twitter的雪花算法SnowFlake,使用Java语言实现。 SnowFlake算法产生的ID是一个64位的整型,结构如下(每一部分用“-”符...

分布式自增ID算法snowflake-Twitter

概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先...

Twitter的SnowFlake分布式id生成算法

二进制相关知识回顾 1、所有的数据都是以二进制的形式存储在硬盘上。对于一个字节的8位到底是什么类型 计算机是如何分辨的呢?...

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

前言   这个问题源自于,我想找一个分布式下的ID生成器。   这个最简单的方案是,数据库自增ID。为啥不用咧?有这么几点原...

Twitter-Snowflake 64位自增ID简介

在系统中,我们需要为每个资源设置一个唯一ID,单表时代,使用数据库的自增ID可以很简单的达到我们的目的,但是在分布式系统、...

Twitter的snowflake算法实现分布式ID

背景 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先...

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

在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作。在单表时代,我们可以完...

评论 (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
回复
举报
更多评论
5 评论
199 收藏
分享
返回顶部
顶部