電商交易系統高併發分佈式訂單號生成策略

商交易系統高併發分佈式訂單號生成策略redis

1、要求:算法

1.全局惟一性,不能重複數據庫

2.信息安全加密防止用戶根據id規則獲取數據安全

3.數據遞增,保證下一個id必定大於上一個id網絡

 

二,策略併發

1.UUID  惟一識別碼,16個字節 (128位)分佈式

  組成部分:當前日期+時間+時鐘的序列+mac地址 高併發

  uuid 有幾個實現版本,好比jdk 自帶的uuid性能

優勢:生成簡單,不佔用寬帶,本地生成,數據遷移不影響。優化

缺點:字母存儲,無序,沒法保證趨勢遞增,查詢慢,不可讀

 

2.snowflake(雪花twitter開源 分佈式id算法)

41字節毫秒+10字節的機器id+10版本號,國內有不少平臺有將其實現和優化

優勢:本地生成,不佔寬帶,毫秒在高位,低位是趨勢遞增。

缺點:依賴時鐘 若是時間回撥可能會重複,效率比uuid慢

 

3. 數據庫

 

優勢:代碼實現簡單,性能ok,數字排序,可讀性強

缺點:受限於數據庫,單點故障,擴容麻煩,須要插入後才能獲取id增長查詢數據庫主從延遲master才能查到

 

4.redis 集羣

格式:12位=年2位+當年第幾天3+小時2+自增5

優勢:不依賴數據庫,靈活,沒有單點故障,性能優於數據庫

缺點:網絡資源,須要增長額外服務插件

 

 

總結:

uuid Token  ,圖片id等 ※※
snowflake Elk,mq,業務系統 ※※※※
數據庫 併發不大,業務增加不快 ※※※
redis 業務系統 ※※※※※
相關文章
相關標籤/搜索