Published on

解决Snowflake算法CPU时钟回拨的一些思路

Authors

在前面的文章,数据库的主键策略,里面介绍了雪花算法。雪花算法是一种接近完美的算法,但是这种算法本身无法解决CPU时钟回拨的问题。如果所在的服务器发生了CPU时钟回拨,是有可能造成ID的重叠。

一个最简单的办法就是我们禁止CPU时钟的回拨,如果是Linux服务器,可以将NTP的stepback设置为0,但是不建议关闭NTP的时钟同步。

还有我们可以考虑从代码层面解决。

最简单粗暴的办法就是,如果发生CPU时钟回拨就直接抛出异常。这也是我看到的大多数开源的解决方案。

https://blog.csdn.net/jiangqian6481/article/details/102888944

https://zhuanlan.zhihu.com/p/77737855

https://juejin.im/post/6844903686271926279

https://developer.aliyun.com/article/741254

https://cloud.tencent.com/developer/article/1074907

https://www.cnblogs.com/jpfss/p/11506960.html

https://www.v2ex.com/t/430285

https://www.ctolib.com/topics-143347.html