不能出現重複的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 在單個資料庫或讀寫分離或一主多從的情況下,只有乙個...