分布式 ID 生成方案有哪些?

分库分表面试题发布于

一、UUID

  • 优点:本地生成,无网络开销,唯一。
  • 缺点:无序,索引效率低;太长。

二、数据库自增

  • 优点:简单,有序。
  • 缺点:单库瓶颈;分库后不全局唯一。

三、号段模式

  • 从数据库批量获取 ID 段(如 1-1000),在内存中使用。
  • 优点:性能高,减少数据库压力。
  • 缺点:服务重启可能断号。

四、Snowflake(雪花算法)

  • 64 位:1 符号位 + 41 时间戳 + 10 机器 ID + 12 序列号。
  • 优点:趋势递增,性能高,全局唯一。
  • 缺点:依赖时钟,时钟回拨会重复。

五、Leaf(美团)

  • 号段模式 + Snowflake 双模式。
  • 解决时钟回拨问题。

六、Redis

  • incr 生成,性能高。
  • 需保证 Redis 高可用。