分布式唯一ID的生成方案

2021-10-01 05:33:10 字數 558 閱讀 6395

不能出現重複的id,這是最基本的要求。

有利於關聯式資料庫索引效能。

既然是服務於分布式系統,為多個服務提供id服務,訪問壓力一定很大,所以需要保證高可用。

如果id是有規律的,就容易被惡意操作,在一些場景下需要id無規則。

核心思想是結合機器的網絡卡、當地時間、乙個隨機數來生成。

優點:缺點:

利用資料庫自增id的特性來生成,如 mysql 的auto_increment

優點:缺點:

redis 提供了自增的原子命令,可以保證唯

一、有序。

優點:缺點:

給每台機器分配乙個唯一標識,然後通過下面的結構實現全域性唯一id:

時間戳 + 機器標識 + 自增序列號
毫秒在高位,自增序列在低位,一定是遞增的。

優點:缺點:

不同的方案有不同的特點,需要根據自己的需求場景來選擇適合的。

例如在美團早期,id方案就是多種形式的:

後來推出了乙個類雪花演算法的分布式id服務:leaf,qps壓測結果近5w/s。

分布式系統唯一ID生成方案彙總

前言 系統唯一id是我們在設計乙個系統的時候常常會遇見的問題,也常常為這個問題而糾結。生成id的方法有很多,適應不同的場景 需求以及效能要求。所以有些比較複雜的系統會有多個id生成的策略。下面就介紹一些常見的id生成策略。一 資料庫自增長序列或字段 最常見的方式。利用資料庫,全資料庫唯一。優點 簡單...

分布式系統唯一ID生成方案彙總

系統唯一id是我們在設計乙個系統的時候常常會遇見的問題,也常常為這個問題而糾結。生成id的方法有很多,適應不同的場景 需求以及效能要求。所以有些比較複雜的系統會有多個id生成的策略。下面就介紹一些常見的id生成策略。1.資料庫自增長序列或字段 最常見的方式。利用資料庫,全資料庫唯一。auto inc...

分布式系統唯一ID生成方案彙總

1.資料庫自增長序列或字段 最常見的方式。利用資料庫,全資料庫唯一。優點 1 簡單,方便,效能可以接受。2 數字id天然排序,對分頁或者需要排序的結果很有幫助。缺點 1 不同資料庫語法和實現不同,資料庫遷移的時候或多資料庫版本支援的時候需要處理。2 在單個資料庫或讀寫分離或一主多從的情況下,只有乙個...