UUID

[UUID唯一資源命名空間的來龍去脈(RFC4122)]

簡介

UUID, 又名全球獨立標識(Globally Unique Identifier), 當然原名更高大上點兒, A.K.A 宇宙獨立標識(Universally Unique Identifier). UUID最初用在一個本屌沒聽過的網(wǎng)絡(luò)系統(tǒng)中, 然后被廣泛應用到微軟抄做系統(tǒng).

UUID是128位(長度固定)unsigned integer, 能夠保證(真的假的劫拢?)在空間(Space)與時間(Time)上的唯一性俊抵。而且無需注冊機制保證, 可以按需隨時生成芥驳。

據(jù)WIKI, 隨機算法生成的UUID的重復概率為170億分之一

由于UUID定長且與時間有關(guān), 有一定可能性UUID會重復出現(xiàn)(大概在西元(A.D)3400, 與具體實現(xiàn)算法有關(guān))

UUID生成算法最高支持10,000,000(一千萬)每秒每臺機器, 所以可以用作交易流水ID

uuid(Python)和NSUUID(iOS)遵循本RFC

UUID生成三種方式

  1. 基于利用MAC地址(若由于某種原因包括隱私考慮, MAC地址不可用或強烈不推薦, 采用以下兩種替代方法)
  2. 基于偽隨機數(shù)
  3. 基于加密哈希(MD5之類的東東)和應用自定義字符串

字符表示

[time-low]-[time-mide]-[time-high-and-version]-[clock-seq-and-reserved 和 clock-seq-low]-[node]

time-low = 32位 unsigned integer
time-mid = 16位 unsigned integer
time-high-and-version = 16位 unsigned integer(時間戳高位部分與版本(Version)號混合)
clock-seq-and-reserved = 8位 unsigned integer(時鐘序列高位部分與預定義變量(Variant)混合組成)
clock-seq-low = 8位 unsigned integer
node = 48位 unsigned integer

urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

字段組成(詳情與事例代碼,參考RFC4122 section4 till the end)

UUID采用Big-endian字節(jié)序排列

變量(variant), 或稱做類型, 4 bytes, 包括以下4種(其中X為任意值):
0XX NCS兼容預留
10X RFC4122采用
110 微軟兼容預留
111 還未定義, 留作以后它用

版本號(version), 4 bytes, 一共以下5個版本:
0001 時間的版本
0010 DCE Security
0011 MD5哈希
0100 (偽)隨機數(shù)
0101 SHA-1哈希

時間戳(timestamp), 60bit:
版本1: 時間戳采用UTC時間,以100ns為間隔,重1582年10月15日00:00:00.00開始計算

時鐘序列, 14bit:
版本1: 用來防止在時間回調(diào)的情況下,導致的UUID重復問題
如果有時間回調(diào)(可能有系統(tǒng)斷電導致),如果生成器在回調(diào)時間之后有生成新的UUID,那么時鐘序列應該改變, 如果新生成的UUID時鐘序列可知,那么時鐘序列遞增即可; 若不可知, 那么時鐘序列應重置到一個47位隨機數(shù),或一個47位高質(zhì)量的偽隨機數(shù),并且第48位設(shè)置為1,用來區(qū)別真正的MAC地址(由于所有MAC地址在網(wǎng)卡中第48為0)

節(jié)點(node), 48bit:
版本1: 為主機MAC地址, 若主機有多個MAC地址,隨機選其中一個, 若系統(tǒng)沒有MAC地址, 則采用(偽)隨機數(shù).

其他版本請參考原文, 其中版本2沒有在原文中敘述

Nil UUID

128位中,每一位都是零, (A.K.A)
urn:uuid:00000000-0000-0000-0000-000000000000

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泌霍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓢湃,老刑警劉巖斤葱,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異阿纤,居然都是意外死亡句灌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門阵赠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涯塔,“玉大人肌稻,你說我怎么就攤上這事清蚀。” “怎么了爹谭?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵枷邪,是天一觀的道長。 經(jīng)常有香客問我诺凡,道長东揣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任腹泌,我火速辦了婚禮嘶卧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凉袱。我一直安慰自己芥吟,他們只是感情好,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布专甩。 她就那樣靜靜地躺著钟鸵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涤躲。 梳的紋絲不亂的頭發(fā)上棺耍,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機與錄音种樱,去河邊找鬼蒙袍。 笑死俊卤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的害幅。 我是一名探鬼主播瘾蛋,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矫限!你這毒婦竟也來了哺哼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤叼风,失蹤者是張志新(化名)和其女友劉穎取董,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體无宿,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡茵汰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了孽鸡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹂午。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖彬碱,靈堂內(nèi)的尸體忽然破棺而出豆胸,到底是詐尸還是另有隱情,我是刑警寧澤巷疼,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布晚胡,位于F島的核電站,受9級特大地震影響嚼沿,放射性物質(zhì)發(fā)生泄漏估盘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一骡尽、第九天 我趴在偏房一處隱蔽的房頂上張望遣妥。 院中可真熱鬧,春花似錦攀细、人聲如沸箫踩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽班套。三九已至,卻和暖如春故河,著一層夾襖步出監(jiān)牢的瞬間吱韭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留理盆,地道東北人痘煤。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像猿规,于是被迫代替她去往敵國和親衷快。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容