banner
Hi my new friend!

分布式id

Scroll down
  • 什么是雪花算法?
    雪花算法是Twitter开源的一种高效的分布式id生成算法.其id主要有以下几个部分组成:
    固定的1位,
    表示时间戳的41位,
    表示机器的10位,
    区分同毫秒内的的id.(同毫秒内自增)

  • 雪花算法的优点:

  1. 生成的id具有递增特点,对B-Tree的存储结构友好(避免页分裂)
  2. 不依赖第三方系统, 以服务的方式部署,可实现高性能,高可用性
  3. 可根据具体情况配置bit数
  • 雪花算法的缺点:
    强依赖机器时钟, 如果发生时钟重拨,则会导致生成id不唯一.

  • 为啥么会发生时钟重拨:

  1. 可能人工修改了系统时间
  2. 多机器同步系统时间后,当有机器存在误差时,可能出现时钟重拨.
  • 如何解决时钟重拨问题带来的影响?
  1. 对于每个要新上的节点,需要有检测异常的能力(通过线上定时持久化系统时间,上线时比对即可;以及上线时同其他机器平均值比对与阈值对比),发现时钟回拨了就不要上线

    通过1,我们只用解决线上机器发生了时钟重拨的问题

  2. 当重拨时间微小时,可以考虑等待原时间再开始生成id
  3. 当重播时间误差大时,要么直接抛错误,要么利用扩展位发生时钟重拨后将扩展位加一
  4. 机器检测到自身时钟回拨后,进行上报,摘除自身节点.然后重新上新节点
其他文章