snowflake——Twitter 开源的分布式自增 ID 算法

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可以在代码实现上有效减少锁的密度。

项目地址:https://github.com/twitter/snowflake

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓