全域性唯一ID(GUID)生成方案對比
本文彙總了各大公司的全域性唯一ID生成方案,並做了一個簡單的優劣比較
背景:在實現大型分散式程式時,通常會有全域性唯一ID(也成GUID)生成的需求,用來對每一個物件標識一個代號。本文就列舉了博主收集的各種全域性唯一ID生成的方案,做一個簡單的類比和備忘。
GUID的基本需求
一般對於唯一ID生成的要求主要這麼幾點:
- 毫秒級的快速響應
- 可用性強
- prefix有連續性方便DB順序儲存
- 體積小,8位元組為佳
業界成熟方案列舉
目前看到過的唯一ID生成方法主要有以下幾種:
- UUID 16位元組
- Twitter的Snowflake 8位元組
- Flikr的資料庫自增 4/8位元組
- Instagram的儲存過程 8位元組
- 基於MySQL UUID的變種 16位元組
各個方案優劣的對比
四種方案各有優劣,下面簡要描述以下:
- 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的儲存過程,通用性差
- UUID變種:timestamp + machine number + random (具體見:變種介紹)
- 優: 開發成本低
- 劣: 基於MySQL的儲存過程,效能較差
相關文章
- 分散式全域性ID生成方案彙總和對比分散式
- 探索 PHP 如何生成全域性唯一的 idPHP
- 分散式全域性ID生成方案分散式
- 分散式全域性唯一ID分散式
- Spring Boot 工程整合全域性唯一ID生成器 VestaSpring Boot
- 框架篇:分散式全域性唯一ID框架分散式
- Java使用雪花演算法實現生成全域性唯一idJava演算法
- 【高併發】之分散式全域性唯一 ID分散式
- 分散式唯一ID的幾種生成方案分散式
- 全域性唯一ID生成常見的幾種方式和twitter/snowflake(雪花演算法)解析演算法
- 忘掉 Snowflake,感受一下效能高出 587 倍的全域性唯一 ID 生成演算法演算法
- 分散式唯一id生成策略分散式
- 預分配法生成唯一ID
- 生成分散式唯一ID的幾種解決方案分散式
- 生成按時間增長的全域性唯一主鍵
- 為 fastapi 新增全域性唯一請求id,用於日誌跟蹤ASTAPI
- 分散式系統全域性唯一Id(SnowFlake)雪花演算法實現分散式演算法
- 微服務之唯一ID生成策略微服務
- 分散式唯一 ID 生成器分散式
- Python 根據id生成唯一碼Python
- 面試基礎之:叢集高併發情況下如何保證分散式唯一全域性Id生成面試分散式
- 7.56 CON_GUID_TO_IDGUI
- 分散式唯一 ID 生成器 - IDGen分散式
- oracle,使用SYS_GUID()生成32位唯一字串OracleGUI字串
- SAP UI5 確保控制元件 id 全域性唯一的實現方法UI控制元件
- Facade對應物件 全域性唯一還是時刻變化物件
- AppID 的英文全稱是 Application Identifier AppID(應用程式識別符號)GUID(全域性唯一識別符號)APPIDE符號GUI
- PHP 實現 Snowflake 生成分散式唯一 IDPHP分散式
- 分散式唯一ID生成方案選型!詳細解析雪花演算法Snowflake分散式演算法
- 分散式系統唯一主鍵識別符號ID生成機制比較 - Encore分散式符號
- 研究分散式唯一ID生成,看完這篇就夠分散式
- 移動端裝置唯一ID的生成規則
- 聽說:分散式ID不能全域性遞增?分散式
- 全域性負載均衡方案負載
- 分散式唯一ID解決方案-雪花演算法分散式演算法
- 5 大分散式 ID 生成器優缺點簡單對比分散式
- .net開發還在使用guid嗎?下面幾種id生成器更加合適GUI
- 實用向—總結一些唯一ID生成方式
- 修改安卓ID為硬體唯一ID安卓