推特公司的雪花算法
https://github.com/twitter-archive/snowflake

Java实现SnowFlake
https://github.com/callicoder/java-snowflake
https://www.callicoder.com/distributed-unique-ID-sequence-number-generator/
百度实现的SnowFlake
https://github.com/baidu/uid-generator
未知来源
https://programmerah.com/twitters-distributed-self-increasing-id-algorithm-snowflake-java-version-25580/
#
雪花算法 是用来取代UUID的
类似的有 树叶算法(Leaf)
芒果数据库的对象ID也是使用雪花算法
#
雪花算法的弊端
snowflake不依赖数据库也不依赖内存,随时可以生成id,这也是为什么它如此受欢迎,但是因为它在设计时通过时间戳来避免对内存和数据库的依赖,所以它依赖于服务器的时间。
试想,
如果服务器的时间发生了错乱或者回拨,
这就直接影响了生成的id,有很大可能生成重复的id,且一定会打破递增属性,
这也是他的一个致命缺点(不支持服务器时间回拨)
每毫秒生成id的上限受到限制,由于时间戳位是41位的毫秒级时间戳,
所以从当前起始到41bit 耗尽,
只能坚持70年程序获取操作系统时间会耗费较多时间
那么如何解决这些问题呢(后面在研究):
百度开源了UIDGenerator 算法
美团团队根据业务场景提出了基于号段思想的 Leaf-Segment 方案和基于 Snowflake 的 Leaf-Snowflake 方案
--
修改:sanfei FROM 223.104.68.*
FROM 223.104.68.*