owflake时钟回拨问题解决方案精要.pdfVIP

  • 0
  • 0
  • 约2.06千字
  • 约 2页
  • 2026-10-12 发布于北京
  • 举报

《017_Snowflake生产方案:时钟回拨问题解决思路(3)》

思想:64个bit位,最1个bit是0,41位放时间戳(到毫秒单位,最多使用69

年),10位放机器标识(最多把snowflake程序部署在1024台机器上),12位放序号(每毫

秒,每台机器,可以顺序生成4096个ID)

ID里必须包含时间戳,可是有个问题,那是依赖机器时间的,机器是有一个时钟回拨问题

的,就是可能机器时间会往回拨,比如说假设你要是在做时钟同步,让每台服务器都跟一个

时钟服务器进行时钟同步,那么就可能会出现时钟回拨,

此时肯呢个会出现重复时间,重复时间,就绝对有可能会出现重复ID

这实际上也是snowflake方案最大的生产问题

第一种办法,就是关闭时钟同步,避免产生时钟同步问题,不过这个不太现实,因为强依赖

时间的系统,一般都得做时钟同步,避免时间严重错误,在虚拟机上部署一些东西,玩儿虚

拟机,休眠,再次恢复往往虚拟机里的时间和宿主机的时间是不同步的

导致一些大数据的分布式系统会掉,节点之间通信会依赖时间戳进行比对,心跳过慢,

就会导致节点挂掉

第二种办法,记录下来上一次生成ID的时间,如果发现本次生成ID的时候,时间戳小于上

次的时间戳,说明时钟回拨

文档评论(0)

1亿VIP精品文档

相关文档