亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

分布式ID系列(2)——UUID適合做分布式ID嗎

wayneli / 3321人閱讀

摘要:用戶指定一個名字空間和一個字符串,通過散列,生成。字符串本身需要是唯一的。。雖然是基于隨機數(shù),但是重復(fù)的可能性可以忽略不計,因此該版本也是被經(jīng)常使用的版本。。當(dāng)前正在使用的。。

UUID的生成策略:

UUID的方式能生成一串唯一隨機32位長度數(shù)據(jù),它是無序的一串?dāng)?shù)據(jù),按照開放軟件基金會(OSF)制定的標(biāo)準(zhǔn)計算,UUID的生成用到了以太網(wǎng)卡地址、納秒級時間、芯片ID碼和許多可能的數(shù)字。UUID的底層是由一組32位數(shù)的16進(jìn)制數(shù)字構(gòu)成,是故 UUID 理論上的總數(shù)為 ,約等于,也就是說若每納秒產(chǎn)生1百萬個 UUID,要花100億年才會將所有 UUID 用完(100億年啊,地球都沒了),所以這足夠我們的使用了,也能夠保證唯一性。

UUID的格式:

UUID 的十六個八位字節(jié)被表示為 32個十六進(jìn)制數(shù)字,以連字號分隔的五組來顯示,形式為 8-4-4-4-12,總共有 36個字符(即三十二個英數(shù)字母和四個連字號)。例如:

123e4567-e89b-12d3-a456-426655440000

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

上面的以數(shù)字 M開頭的四位表示 UUID 版本,目前UUID的規(guī)范有5個版本,M可選值為1, 2, 3, 4, 5 ;各個版本的具體介紹如下所示:

version 1:0001?;跁r間和 MAC 地址。由于使用了 MAC 地址,因此能夠確保唯一性,但是同時也暴露了 MAC 地址,私密性不夠好。
version 2:0010。DCE 安全的 UUID。該版本在規(guī)范中并沒有仔細(xì)說明,因此并沒有具體的實現(xiàn)。
version 3:0011?;诿挚臻g (MD5)。用戶指定一個名字空間和一個字符串,通過 MD5 散列,生成 UUID。字符串本身需要是唯一的。
version 4:0100。基于隨機數(shù)。雖然是基于隨機數(shù),但是重復(fù)的可能性可以忽略不計,因此該版本也是被經(jīng)常使用的版本。
version 5:0101?;诿挚臻g (SHA1)。跟 Version 3 類似,但是散列函數(shù)編程了 SHA1。

上面以數(shù)字 N開頭的四個位表示 UUID 變體( variant ),變體是為了能兼容過去的 UUID,以及應(yīng)對未來的變化,目前已知的變體有如下幾種,因為目前正在使用的 UUID 都是 variant1,所以取值只能是 8,9,a,b 中的一個(分別對應(yīng)1000,1001,1010,1011)。

variant 0:0xxx。為了向后兼容預(yù)留。
variant 1:10xx。當(dāng)前正在使用的。
variant 2:11xx。為早期微軟 GUID 預(yù)留。
variant 3:111x。為將來擴展預(yù)留。目前暫未使用。
Java實現(xiàn)UUID:

Java已經(jīng)寫好一個UUID類供我們使用,如下所示

package com.one.util;

import java.util.UUID;

public class Test {

    public static void main(String[] args) {
        String uuid= UUID.randomUUID().toString().replace("-", "").toLowerCase();
        System.out.println("UUID的值是:"+uuid);
    }
}

結(jié)果如下所示

UUID的值是:24e6f66b3dfb4aba8e3e3801d3327e08
UUID是否適合做分布式id:

如果需求是只保證唯一性,那么UUID也是可以使用的,但是按照上面的分布式id的要求, UUID其實是不能做成分布式id的,原因如下:

首先分布式id一般都會作為主鍵,但是安裝mysql官方推薦主鍵要盡量越短越好,UUID每一個都很長,所以不是很推薦

既然分布式id是主鍵,然后主鍵是包含索引的,然后mysql的索引是通過b+樹來實現(xiàn)的,每一次新的UUID數(shù)據(jù)的插入,為了查詢的優(yōu)化,都會對索引底層的b+樹進(jìn)行修改,因為UUID數(shù)據(jù)是無序的,所以每一次UUID數(shù)據(jù)的插入都會對主鍵地城的b+樹進(jìn)行很大的修改,這一點很不好

信息不安全:基于MAC地址生成UUID的算法可能會造成MAC地址泄露,這個漏洞曾被用于尋找梅麗莎病毒的制作者位置。

那么UUID可以用到哪些方面呢

比如阿里云每一條短信發(fā)送的唯一id,這個是可以的,比如從阿里云官網(wǎng)截圖所示:

原文鏈接

其他分布式ID系列快捷鍵:
分布式ID系列(1)——為什么需要分布式ID以及分布式ID的業(yè)務(wù)需求
分布式ID系列(2)——UUID適合做分布式ID嗎
分布式ID系列(3)——數(shù)據(jù)庫自增ID機制適合做分布式ID嗎
分布式ID系列(4)——Redis集群實現(xiàn)的分布式ID適合做分布式ID嗎
分布式ID系列(5)——Twitter的雪法算法Snowflake適合做分布式ID嗎

大佬網(wǎng)址
https://www.itqiankun.com/art...
https://blog.csdn.net/hengyun...
https://tech.meituan.com/2017...
https://segmentfault.com/a/11...
https://www.jianshu.com/p/9d7...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/76118.html

相關(guān)文章

  • 布式ID系列(3)——數(shù)據(jù)庫自增ID機制適合布式ID

    摘要:數(shù)據(jù)庫自增機制原理介紹在分布式里面,數(shù)據(jù)庫的自增機制的主要原理是數(shù)據(jù)庫自增和數(shù)據(jù)庫的函數(shù)實現(xiàn)的。 數(shù)據(jù)庫自增ID機制原理介紹 在分布式里面,數(shù)據(jù)庫的自增ID機制的主要原理是:數(shù)據(jù)庫自增ID和mysql數(shù)據(jù)庫的replace_into()函數(shù)實現(xiàn)的。這里的replace數(shù)據(jù)庫自增ID和mysql數(shù)據(jù)庫的replace_into()函數(shù)實現(xiàn)的。這里的replace into跟insert功...

    Stardustsky 評論0 收藏0
  • 布式ID系列(1)——為什么需要布式ID以及布式ID的業(yè)務(wù)需求

    摘要:同時除了對號碼自身的要求,業(yè)務(wù)還對號生成系統(tǒng)的可用性要求極高,想象一下,如果生成系統(tǒng)癱瘓,整個美團點評支付優(yōu)惠券發(fā)券騎手派單等關(guān)鍵動作都無法執(zhí)行,這就會帶來一場災(zāi)難。 分布式id主要用到哪些地方 在復(fù)雜分布式系統(tǒng)中,往往需要對大量的數(shù)據(jù)和消息進(jìn)行唯一標(biāo)識。如在美團點評的金融、支付、餐飲、酒店、貓眼電影等產(chǎn)品的系統(tǒng)中,數(shù)據(jù)日漸增長,對數(shù)據(jù)分庫分表后需要有一個唯一ID來標(biāo)識一條數(shù)據(jù)或消息,...

    Snailclimb 評論0 收藏0
  • 布式ID系列(4)——Redis集群實現(xiàn)的布式ID適合布式ID

    摘要:原文鏈接其他分布式系列快捷鍵分布式系列為什么需要分布式以及分布式的業(yè)務(wù)需求分布式系列適合做分布式嗎分布式系列數(shù)據(jù)庫自增機制適合做分布式嗎分布式系列集群實現(xiàn)的分布式適合做分布式嗎分布式系列的雪法算法適合做分布式嗎大佬網(wǎng)址 今天我們來講一下Redis集群實現(xiàn)的分布式ID的過程,總結(jié)一下Redis集群是否適合做分布式ID? 首先是項目地址: https://github.com/maqian...

    Jeff 評論0 收藏0
  • 布式系統(tǒng)全局發(fā)號器的幾點思考

    摘要:為什么需要發(fā)號器在分布式系統(tǒng)中,經(jīng)常需要對大量的數(shù)據(jù)消息請求等進(jìn)行唯一標(biāo)識,例如對于分布式系統(tǒng),服務(wù)間相互調(diào)用需要唯一標(biāo)識,調(diào)用鏈路分析,日志追蹤的時候需要使用這個唯一標(biāo)識。 原文鏈接:何曉東 博客 文章起源于 康神交流群的 panda大佬和boss li關(guān)于發(fā)號器的一些交流,特此感謝讓我們學(xué)到了新知識。 為什么需要發(fā)號器 在分布式系統(tǒng)中,經(jīng)常需要對大量的數(shù)據(jù)、消息、http 請求等進(jìn)...

    dayday_up 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<