今天就跟大家聊聊有關(guān)五種常見的分布式ID分別是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
相信每個人在互聯(lián)網(wǎng)的業(yè)務(wù)系統(tǒng)中,每天都能接觸到各種各樣的ID,如在支付系統(tǒng)中就會有支付ID、退款I(lǐng)D等。今天,小編就來盤點五種分布式ID。
一、UUID
UUID (Universally Unique Identifier) 的標(biāo)準(zhǔn)型式包含 32 個 16 進制數(shù)字,以連字號分為五段,形式為 8-4-4-4-12 的 36 個字符,示例:550e8400-e29b-41d4-a716-446655440000,到目前為止業(yè)界一共有 5 種方式生成 UUID。
UUID 的優(yōu)點:性能非常高:本地生成,沒有網(wǎng)絡(luò)消耗。
UUID 的缺點:
不易于存儲:UUID 太長,16 字節(jié) 128 位,通常以 36 長度的字符串表示,很多場景不適用。
信息不安全:基于 MAC 地址生成 UUID 的算法可能會造成 MAC 地址泄露,這個漏洞曾被用于尋找梅麗莎病毒的制作者位置。
ID 作為主鍵時在特定的環(huán)境會存在一些問題,比如做 DB 主鍵的場景下,UUID 就非常不適用。MySQL 官方有明確的建議主鍵要盡量越短越好,36 個字符長度的 UUID 不符合要求;UUID 還對 MySQL 索引不利,如果作為數(shù)據(jù)庫主鍵,在 InnoDB 引擎下,UUID 的無序性可能會引起數(shù)據(jù)位置頻繁變動,嚴(yán)重影響性能。
二、snowflake
snowflake 我就不在介紹了,我直接說它的優(yōu)點:
毫秒數(shù)在高位,自增序列在低位,整個ID都是趨勢遞增的。
不依賴數(shù)據(jù)庫等第三方系統(tǒng),以服務(wù)的方式部署,穩(wěn)定性更高,生成ID的性能也是非常高的。
可以根據(jù)自身業(yè)務(wù)特性分配bit位,非常靈活。
缺點:
強依賴機器時鐘,如果機器上時鐘回?fù)埽瑫?dǎo)致發(fā)號重復(fù)或者服務(wù)會處于不可用狀態(tài)。
MongDB 的 ObjectID 可以算作是和snowflake類似方法,通過“時間+機器碼+pid+inc”共12個字節(jié),通過4+3+2+3的方式最終標(biāo)識成一個24長度的十六進制字符。
三、美團開源的Leaf
支持多種不同模式的生成策略
號段模式:該模式需要建 DB 表, 需要有專門的服務(wù)來提供獲取 id 的接口, 存在網(wǎng)絡(luò)延遲
Snowflake 模式:為了追求更高的性能,需要通過 RPC Server 來部署 Leaf 服務(wù),那僅需要引入 leaf-core 的包,把生成 ID 的 API 封裝到指定的 RPC 框架中即可.
缺點,可能就是相對來說比較復(fù)雜。
四、sharding-jdbc
sharding-jdbc 是一個開源的主鍵生成組件。它的特點是簡單易用,可以指定 workerId 或者不指定, 直接通過 jar 的方式引入即可。看它的名字就知道,它需要 DB 支持。
五、uid-generator
uid-generator 是百度開源的一個分布式 ID生成器。需要建 DB 表, 需要有專門的服務(wù)來提供獲取 id 的接口, 存在網(wǎng)絡(luò)延遲。
看完上述內(nèi)容,你們對五種常見的分布式ID分別是什么有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
網(wǎng)頁名稱:五種常見的分布式ID分別是什么-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://www.chinadenli.net/article48/cceoep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站設(shè)計公司、App設(shè)計、自適應(yīng)網(wǎng)站、電子商務(wù)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容