- Published on
解决Snowflake算法CPU时钟回拨的一些思路
- Authors
- Name
- Alex
- @adams6688
在前面的文章,数据库的主键策略,里面介绍了雪花算法。雪花算法是一种接近完美的算法,但是这种算法本身无法解决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