UUID 是 通用唯一識別碼(Universally Unique Identifier)的縮寫,是一種軟件建構的標准,亦為開放軟件基金會組織在分布式計算環境領域的一部分。其目的,是讓分布式系統中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定;
UUID是國際化標准組織(ISO)提出的一個概念。UUID是一個128比特的數值,這個數值可以通過一定的算法計算出來。為了提高效率,常用的UUID可縮短至16位。UUID用來識別屬性類型,在所有空間和時間上被視為唯一的標識。一般來說,可以保證這個值是真正唯一的任何地方產生的任意一個UUID都不會有相同的值。使用UUID的一個好處是可以為新的服務創建新的標識符。這樣一來,客戶端在查找一個服務時,只需要在它的服務查找請求中指出與某類服務(或某個特定服務)有關的UUID,如果服務的提供者能將可用的服務與這個UUID相匹配,就返回一個響應。
UUID是基於當前時間、計數器(counter)和硬件標識(通常為無線網卡的MAC地址)等數據計算生成的。UUID可以被任何人獨立創建,並按需發布。UUID沒有集中管理機構,因為它們是不會被復制的獨特標識符。屬性協議允許設備使用UUID識別屬性類型,從而不需要用讀/寫請求來識別它們的本地句柄。
組成
UUID是指在一台機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平台會提供生成的API。按照開放軟件基金會(OSF)制定的標准計算,用到了以太網卡地址、納秒級時間、芯片ID碼和隨機數。
UUID由以下幾部分的組合:
(1)UUID的第一個部分與時間有關,如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同。
(2)時鍾序列。
(3)全局唯一的IEEE機器識別號,如果有網卡,從網卡MAC地址獲得,沒有網卡以其他方式獲得。
UUID的唯一缺陷在於生成的結果串會比較長。關於UUID這個標准使用最普遍的是微軟的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函數很簡單地生成UUID,其格式為:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每個 x 是 0-9 或 a-f 范圍內的一個十六進制的數字。而標准的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),可以從cflib 下載CreateGUID() UDF進行轉換。
(4)在 hibernate(Java orm框架)中, 采用 IP-JVM啟動時間-當前時間右移32位-當前時間-內部計數(8-8-4-8-4)來組成UUID