雪花算法处理时钟回拨能否直接把当前时间设为上一次时间戳?
目前遇到时钟回拨是直接抛出异常,我知道还有一种方式是两个时间判断相差多少,相差不多就sleep一段时间,现在考虑碰到这种场景直接把当前时间戳" title="当前时间戳">当前时间戳设为上一次时间戳处理是否可行,后面的逻辑不变,初步看代码逻辑应该是可行,不会出现重复,副作用只是这个id的时间戳部分与实际生成时间不同。
回答:
时间戳设为上一次时间戳, 那上一次时间戳如果有生成过id的话不是重复了. 别人sleep一段时间是能保证不重复的. 你这我觉得不行.
回答:
之前看到的一个解决方案是,在【机房id_节点id】处空置出几位,来作为:时钟回拨标识位。
比如空置出3
位,则有2^3-1
7次的回拨容忍。
或者当前节点出现回拨,抛出异常,使调用者去其他节点获取。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
以上是 雪花算法处理时钟回拨能否直接把当前时间设为上一次时间戳? 的全部内容, 来源链接: utcz.com/p/945037.html