從 0 到 1 搭建技術中臺之 ID 生成服務實踐

自去年開始,中臺話題的熱度不減,很多公司都投入到中臺的建設中,從戰略制定、組織架構調整、協作方式變動到技術落地實踐,每個環節都可能出現各種各樣的問題。技術中臺最壞的狀況是技術能力太差,不能支撐業務的發展,其次是技術脫離業務,不能服務業務的發展。前者是能力問題,後者是意識問題。在本專題中,伴魚技術團隊分享了從 0 到 1 搭建技術中臺的過程及心得。

前言

ID 生成器在前後端系統內都比較常見,應用場景廣泛,如:訂單 ID、賬戶 ID 、流水號、消息 ID 等等。常見的 ID 類型如下:

  • UUID 和 GUID:GUID 和 UUID 本質類似,GUID 來源於微軟。一個 UUID 是一個 16 字節(128 bit)的數字。 UUID 由網卡 MAC 地址、時間戳、名字空間( Namespace )、隨機或僞隨機數、時序等元素進行生成。優點:在特定範圍內可以保證全局唯一;生成方便,單機管理即可。缺點:所佔空間比較大;無序,在插入數據庫時可能會引起大規模數據位置變動,性能不友好。

  • 數據庫自增 ID:主要基於關係數據庫如 MySQL 的 auto_increment 自增鍵,在業務量不是很大時使用比較方便。基於數據庫自增字段也有一些變種,如下面會介紹到的號段模式。優點:實現成本低,直接基於DB實現,不需要引入額外組件;能夠實現單調自增,遞增場景友好。缺點:需要考慮高可用、橫向擴展問題。

  • snowflake :雪花算法由毫秒時間戳( 41 位) + 機器 ID( workerId 10 位) + 自增序列( 12 位),理論上最多支持 1024 臺機器每秒生產 400w 個 ID。雪花算法綜合考慮了性能、全局唯一、趨勢自增、可用性等,是一種非常理想的 ID 生成算法,也是伴魚內部使用最爲廣泛的 ID 生成算法。

原文鏈接:【https://www.infoq.cn/article/Z36TLNwOJYstQRdvHmoF】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章