分布式ID生成方案總結整理( 二 )

等ID都用了 , 再去數據庫獲??,染忬更改桩尰e?
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生成方案總結整理

文章插圖