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


商交易系統高並發分布式訂單號生成策略

一、要求:

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 業務系統 ※※※※※

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM