1. 程式人生 > 其它 >分散式全域性唯一id筆記

分散式全域性唯一id筆記

1、 資料庫自增id

1)不同資料庫語法和實現不同,資料庫遷移的時候或多資料庫版本支援的時候需要處理。

2)在單個數據庫或讀寫分離或一主多從的情況下,只有一個主庫可以生成。有單點故障的風險。

3)在效能達不到要求的情況下,比較難於擴充套件。

4)如果遇見多個系統需要合併或者涉及到資料遷移會相當痛苦。

5)分表分庫的時候會有麻煩

2、 GUID

1)沒有排序,無法保證趨勢遞增。

2)UUID往往是使用字串儲存,查詢的效率比較低。

3)儲存空間比較大,如果是海量資料庫,就需要考慮儲存量的問題。

4)傳輸資料量大

5)不可讀。

3、 Redis生成id,使用INCR和INCRBY來實現

4、Snowflake雪花演算法,是一個long型的ID。其核心思想是:使用41bit作為毫秒數,10bit作為機器的ID(5個bit是資料中心,5個bit的機器ID),12bit作為毫秒內的流水號(意味著每個節點在每毫秒可以產生 4096 個 ID),最後還有一個符號位,永遠是0