雪花算法处理时钟回拨能否直接把当前时间设为上一次时间戳?

目前遇到时钟回拨是直接抛出异常,我知道还有一种方式是两个时间判断相差多少,相差不多就sleep一段时间,现在考虑碰到这种场景直接把当前时间戳" title="当前时间戳">当前时间戳设为上一次时间戳处理是否可行,后面的逻辑不变,初步看代码逻辑应该是可行,不会出现重复,副作用只是这个id的时间戳部分与实际生成时间不同。


回答:

时间戳设为上一次时间戳, 那上一次时间戳如果有生成过id的话不是重复了. 别人sleep一段时间是能保证不重复的. 你这我觉得不行.


回答:

之前看到的一个解决方案是,在【机房id_节点id】处空置出几位,来作为:时钟回拨标识位。

比如空置出3位,则有2^3-1 7次的回拨容忍。

或者当前节点出现回拨,抛出异常,使调用者去其他节点获取。


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

以上是 雪花算法处理时钟回拨能否直接把当前时间设为上一次时间戳? 的全部内容, 来源链接: utcz.com/p/945037.html

回到顶部