知识卡片
Snowflake趋势ID
内容
Snowflake 用时间戳、机器标识和序列号生成 int64 ID,兼顾分布式唯一和大致有序。它适合替代单库自增,但会引入时钟回拨、机器号分配等新约束。
参考来源
- 位置:《Go语言高级开发与实战》第5章《分布式系统》(源文件:_epub-src/GoYu Yan Gao Ji Kai Fa Yu Shi Zhan_split_047.html)
- 结论依据:原文说明数据库自增 ID 在分布式会冲突、UUID 不可排序,并引出 Snowflake 生成分布式 ID,因此支撑该结论。
- 原始内容:自增id在数据库中有利于排序和索引。但是在分布式系统中如果还是利用数据库的自增id就会引起冲突,自增id非常容易被爬虫爬取数据。在分布式系统中有使用uuid作为数据唯一id的,但是uuid是一串随机字符串,所以它无法被排序。 Tw itt er设计了Snowflake算法为分布式系统生成ID。Snowflake的id是int64类型,它通过datacenterId和workerId来标识分布式系统,其组成如图5-9所示。