自增ID算法snowflake(雪花)

Posted 理论家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自增ID算法snowflake(雪花)相关的知识,希望对你有一定的参考价值。

    在数据库主键设计上,比较常见的方法是采用自增ID(1开始,每次加1)和生成GUID。生成GUID的方式虽然简单,但是由于采用的是无意义的字符串,推测会在数据量增大时造成访问过慢,在基础互联网的系统设计中都不推荐采用。自增ID的方法虽然比较适合大数据量的场景,当时由于自增ID是按照顺序增加的,数据记录都是可以根据ID号进行推测出来,对于一些数据敏感的场景,不建议采用

    最近在一篇文章中看到P2P网站处理订单流水号的思路还不错。该平台设计时希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。Twitter 的 Snowflake 算法解决了这种需求。在流水号服务中采用了这种算法。

   snowflake算法的好处有两点:一是纯数字,二是整体上来说是按时间顺序的。

Scala版详见开源项目https://github.com/twitter/snowflake
Python版详见开源项目https://github.com/erans/pysnowflake
C#版详见开源项目https://github.com/ccollie/snowflake-net

 

以上是关于自增ID算法snowflake(雪花)的主要内容,如果未能解决你的问题,请参考以下文章

雪花算法Twitter的分布式自增ID算法snowflake (Java版)

Twitter的分布式自增ID算法snowflake (Java版)

分布式唯一id生成器-snowflake雪花算法

ID生成算法-雪花算法(SnowFlake)及代码实现

雪花算法原理解析

雪花算法(SnowFlake)