在業務開發中,大量場景需要唯一ID來進行標識:用戶獨一無二的身份認證、超市售賣的商品、微信的即時消息,它們都需要標識來確定唯一性。需要在特定范圍內保證ID具備唯一性,這是ID生成服務最基本的要求。
生成ID的方式多種多樣,可以使用Redis鍵自增,UUID,或者基于雪花算法實現的ID生成服務。最常見的基于數據庫ID自增的方式,在業務數據量不大的時候,單庫單表可以支撐,數據再大一點搞個MySQL主從同步、讀寫分離也能對付。但隨著數據日漸增長,主從同步也扛不住了,就需要對數據庫進行分庫分表,但分庫分表后需要有一個唯一ID來標識一條數據,數據庫的自增ID顯然不能滿足需求。
伴隨著業務快速迭代,很多業務都需要生成ID,各自為政會陷入"重復造輪子"的低效勞動中,同時造成服務治理上的混亂,此時一個能夠生成全局唯一ID的服務是非常必要的。那么這個全局唯一ID就叫分布式ID生成服務。