分布式ID生成方案总结整理( 二 )

等ID都用了 , 再去数据库获?。缓蟾淖畲笾?
update id_generator set max_id = #{max_id+step}, version = version + 1 where version = # {version} and biz_type = XXX

  • 优点:有比较成熟的方案,像百度Uidgenerator,美团Leaf
  • 缺点:依赖于数据库实现
3.4、 Redis实现Redis分布式ID实现主要是通过提供像INCRINCRBY 这样的自增原子命令 , 由于Redis单线程的特点,可以保证ID的唯一性和有序性
这种实现方式,如果并发请求量上来后,就需要集群 , 不过集群后,又要和传统数据库一样,设置分段和步长
优缺点:
  • 优点:Redis性能相对比较好,又可以保证唯一性和有序性
  • 缺点:需要依赖Redis来实现,系统需要引进Redis组件
3.4、 雪花算法(SnowFlake)Snowflake,雪花算法是由Twitter开源的分布式ID生成算法,以划分命名空间的方式将64-bit位分割成多个部分,每个部分代表不同的含义 , 64位 , 在java中Long类型是64位的,所以java程序中一般使用Long类型存储
分布式ID生成方案总结整理

文章插图