關於分佈式下如何保證ID全局惟一性的讀書筆記

分佈式ID的全局惟一性

要求:

1.全局惟一性:不能出現重複的id號(基本的要求)redis

2.信息安全:防止惡意的用戶規矩id的規則來獲取數據算法

3.數據遞增:保證下一個id必定大於上一個id數據庫

 

解決方案:

1.UUID:通用惟一識別碼 16個字節128位的長數字安全

組成部分:當前日期和時間序列+全局惟一性網卡mac地址服務器

代碼:網絡

UUID.randomUUID()

如:35dd3497-dfe0-40fb-9cb2-b9624bad15a0dom

總結:分佈式

優勢:代碼實現簡單、不佔用寬帶、數據遷移不受影響性能

缺點:無序、沒法保證趨勢遞增、字符存儲、傳輸、查詢慢、不可讀google

 

2.Snowflake雪花算法:國外的twitter分佈式id生成算法

組成部分:高位隨機+毫秒數+機器碼(數據中心+機器id)+10位的流水號

1+41+10+10=62

代碼:百度or google

總結:

優勢:代碼實現簡單、不佔用寬帶、數據遷移不受影響、地位趨勢遞增

缺點:強依賴時鐘(多臺服務器時間必定要同樣,可統一用數據庫時間)、無序沒法保證趨勢遞增

 

3.redis:

組成部分:年份+當前這天屬於這一年的第幾天+小時+redis自增

2+3+2+5=12

代碼:使用redis的incr步長方法實現自增

總結:

優勢:不依賴數據、靈活方便、性能優於數據庫的、無單點故障

缺點:佔用網絡資源、性能比本地生成慢

相關文章
相關標籤/搜索