面试题:在分布式系统,你能想出来几种生成唯一ID的方案?( 九 )

  • 如果系统中没有Redis , 还需要引入新的组件 , 增加系统复杂度 。

  • 需要编码和配置的工作量比较大 。

5. Twitter的snowflake算法

snowflake是Twitter开源的分布式ID生成算法 , 结果是一个long型的ID 。 其核心思想是:使用41bit作为毫秒数 , 10bit作为机器的ID(5个bit是数据中心 , 5个bit的机器ID) , 12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID) , 最后还有一个符号位 , 永远是0 。

具体实现的代码可以参看https://github.com/twitter/snowflake 。

C#代码如下:

推荐阅读