關於全局唯一ID生成方法


引:最近業務開發過程中需要涉及到全局唯一ID生成。之前零零總總的收集過一些相關資料,特此整理以便后用
 

本博客已經遷移至:http://cenalulu.github.io/

本篇博文已經遷移,閱讀全文請點擊:http://cenalulu.github.io/mysql/guid-generate/

 

唯一ID生成的主要目的是:為一個分布式系統的數據object產生一個唯一的標識。
一般對於唯一ID生成的要求主要這么幾點:
  • 毫秒級的快速響應
  • 可用性強
  • prefix有連續性方便DB順序存儲
  • 體積小,8字節為佳
目前看到過的唯一ID生成方法主要有以下幾種:
UUID:
優:java自帶,好用。
劣:占用空間大
 
Snowflake: timestamp + work number + seq number
優:可用性強,速度快
劣:需要引入zookeeper 和獨立的snowflake專用服務器
 
Flikr:基於int/bigint的自增
優:開發成本低
劣:如果需要高性能,需要專門一套MySQL集群只用於生成自增ID。可用性也不強
 
Instagram:41b ts + 13b shard id + 10b increment seq
優: 開發成本低
劣: 基於postgreSQL的存儲過程,較為偏門


免責聲明!

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



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