本項目分佈式環境下生產全局唯一ID的做法

一般全局ID作爲數據庫的主鍵使用,主要有3種實現方式。

1,UUID:唯一但是不連續,作爲字符串索引效率低,也不保證隨機。

2,自增序列:絕對遞增,長度可控,作爲索引時效率高。

3,snowflake:按時間趨勢遞增,單獨使用時效率較高。

目前我們項目主要使用第二種方式,部分使用UUID。

項目架構爲dubbo+zk,使用專門流水服務器來生產ID,序號存儲在數據庫的流水錶中。

可以自定義流水的生成規則:步長,起始值,最大值,緩存個數。

流水服務器以接口的方式對外提供服務,並將數據庫的ID緩存起來,減少數據庫的壓力。

請求方可以按自己的需求來獲取ID,比如,一次獲取多少個?

同時在客戶端也可以作二級緩存,以支持更大的併發。

爲了防止臨界值時,請求時間過長,增加預警機制,低於閾值時,提前補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章