分布式唯一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


  • 评论


    亲,登录后才可以留言!