Snowflake是一项网络服务,可通过一些简单的保证大规模生成唯一的ID号。其优点是:高性能,低延迟;独立的应用;按时间有序。缺点是:需要独立的开发和部署。
41位的时间序列(精确到毫秒,41位的长度可以使用69年);
10位的机器标识(10位的长度最多支持部署1024个节点);
12位的计数顺序号(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)最高位是符号位,始终为0。
Snowflake是一个很高效很方便的GUID产生算法,一个int64_t字段就可以胜任,不像现在主流128bit的GUID算法,即使无法保证严格的ID序列性,但是对于特定的业务,比如用做游戏服务器端的GUID产生会很方便。另外,在多线程的环境下,序列号使用Atomic可以在代码实现上有效减少锁的密度。
目前,Snowflake初始版本已退役。
评论