原创文章,转载请注明出处:server非业余研究http://blog.csdn.net/erlib 作者Sunface
唯一ID在系统小的时候,随便整都可以。可是系统大了后呢?这个时候假设出现了问题,ID重构就是非常大的困难,因此对于不论什么一个系统,从最初架构时就进行好唯一ID设计是非常重要的。twitter的snowflake就攻克了这种需求。实现也还是非常easy的,除去配置信息,核心代码就是毫秒级时间41位+机器ID 10位+毫秒内序列12位。
该项目地址为:https://github.com/twitter/snowflake是用Scala实现的。
python版详见开源项目https://github.com/erans/pysnowflake。
核心代码为其IdWorker这个类实现,其原理结构例如以下,我分别用一个0表示一位。用—切割开部分的作用:
10---0000000000 0000000000 0000000000 0000000000 0 --- 00000 ---00000 ---000000000000