分布式唯一ID:雪花ID Snowflake .Net版
2021-01-07 23:29
阅读:498
好了,回归本人自己介绍:时钟回拨
雪花ID严重依赖系统当前时间,当系统时间被人为反后调整时,算法会出问题,可能会出重复ID.Snowflake原算法是在检测到系统时间被回调后直接抛异常.本代码在时钟回拨后,会将生成的ID时间戳停留在最后一次时间戳上(每当序列溢出时会往前走一毫秒),等待系统时间追上后即可以避过时钟回拨问题.
这种处理方式的优点是时钟回拨后不会异常,能一直生成出雪花ID,但缺点是雪花ID中的时间戳不是系统的当前时间,会是回拨前的最后记录的一次时间戳,但相差也不大.不知道有没有什么生产系统会对这个时间戳要求非常严格,无法使用这种补救方式的?
当然停掉系统后的时钟回拨是无法处理的,这种还是会有可能出现重复ID的.
介绍完毕,下面直接上源码吧,,本源码除了生成雪花ID外,还提供解析雪花ID的方法.
源码git地址: https://gitee.com/itsm/learning_example/tree/master/snowflake-雪花Id
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:分布式唯一ID:雪花ID Snowflake .Net版
文章链接:http://soscw.com/index.php/essay/40810.html
文章标题:分布式唯一ID:雪花ID Snowflake .Net版
文章链接:http://soscw.com/index.php/essay/40810.html
评论
亲,登录后才可以留言!