uuid生成規(guī)則 適用于分布式唯一標識碼的生成算法有哪些?
適用于分布式唯一標識碼的生成算法有哪些?現(xiàn)在分布式很流行。由于數(shù)據(jù)庫分布在不同的服務(wù)器上,如果采用傳統(tǒng)的自增長方式生成Id,很難保證不同數(shù)據(jù)庫上的Id不重復(fù),存在業(yè)務(wù)影響的風(fēng)險!可以說,唯一的標識碼是
適用于分布式唯一標識碼的生成算法有哪些?
現(xiàn)在分布式很流行。由于數(shù)據(jù)庫分布在不同的服務(wù)器上,如果采用傳統(tǒng)的自增長方式生成Id,很難保證不同數(shù)據(jù)庫上的Id不重復(fù),存在業(yè)務(wù)影響的風(fēng)險
!可以說,唯一的標識碼是分布式數(shù)據(jù)庫的第一個障礙
!我與distributed接觸多年,我遇到了許多生成唯一標識碼的方法
!1,UUID:有很多算法,使用同一臺機器上生成的時間字節(jié)來區(qū)分同一臺機器上的不同id,使用IEEE機器識別號或IP地址來區(qū)分不同機器上的id,從而區(qū)分不同機器和同一臺機器,確保生成的UUID是全局唯一的
!Java有自己的UUID隨機UUID()算法實現(xiàn)
!限制:生成的ID沒有序列
在分布式系統(tǒng)中,如何生成分布式ID?
兩種常用的分布式ID方法是UUID和snowflake算法。
UUID是一種本地ID生成方法,不需要遠程調(diào)用,具有高性能、低延遲和良好的可擴展性,但UUID不支持增量。
該算法的核心思想是一個長ID:1位標識符(始終為0)、41位時間戳毫秒、10位機器識別碼和12位序列號(毫秒)。從理論上講,該算法可以在一臺機器上每秒生成1000*(2^12)個ID,具有高性能、增長趨勢和高靈活性。然而,算法依賴于機器的操作時鐘。如果服務(wù)器倒計時,將生成重復(fù)的ID。