唯一流水號的產生(分布式發號器)

2021-10-10 12:31:38 字數 359 閱讀 9594

在網際網路世界裡,產生唯 一流水號的服務系統俗稱發號器。

1) uuid雖然能夠保證id的唯一性,但是無法滿足業務系統需要的很多其他特性,例如時間粗略有序性、可反解和可製造性。

2)效能較差。uuid比較長、占用空間大,會間接導致資料庫效能下降;

如使用資料庫的自增欄位,然而自增字段完全 依賴於資料庫,則在進行資料庫移植、擴容、洗資料、分庫分表等操作時會帶來很多麻煩。

比如資料庫分庫分表時,有一種方案是通過調整自增字段或者資料庫sequence的步長來確保跨資料庫的id唯一性,但這仍然是一種強依賴資料庫解決方案。在移植、伺服器伸縮擴容時會遇到很**煩。如8個服務節點,sequence步長固定8,雖然當下保證了id的唯一性,然而難以再水平擴充套件。

專案中知識總結一流水號的自動生成

流水號的自動生成 列名型別 說明infoid int自動增長 code nvarchar 10 編碼prefix nvarchar 5 流水號的前面抬頭 datetype nvarchar 8 日期的型別 infix nvarchar 5 indexlength int增加的大小 suffix nv...

常見的分布式唯一ID方案

最近看乙個新系統,發現裡面有很多場景用到唯一id,便蒐羅了一下常見的方案。對於分布式id,需要滿足下面的基本要求 全域性唯一 趨勢遞增 uuid universally unique identifier 全域性唯一識別符號,定義為乙個字串主鍵,採用32位數字組成,編碼採用16進製制,定義了在時間和...

分布式唯一ID的生成方案

不能出現重複的id,這是最基本的要求。有利於關聯式資料庫索引效能。既然是服務於分布式系統,為多個服務提供id服務,訪問壓力一定很大,所以需要保證高可用。如果id是有規律的,就容易被惡意操作,在一些場景下需要id無規則。核心思想是結合機器的網絡卡 當地時間 乙個隨機數來生成。優點 缺點 利用資料庫自增...