不能出現重複的id,這是最基本的要求。
有利於關聯式資料庫索引效能。
既然是服務於分布式系統,為多個服務提供id服務,訪問壓力一定很大,所以需要保證高可用。
如果id是有規律的,就容易被惡意操作,在一些場景下需要id無規則。
核心思想是結合機器的網絡卡、當地時間、乙個隨機數來生成。
優點: 缺點:
利用資料庫自增id的特性來生成,如 mysql 的auto_increment
。
優點: 缺點:
redis 提供了自增的原子命令,可以保證唯
一、有序。
優點: 缺點:
給每台機器分配乙個唯一標識,然後通過下面的結構實現全域性唯一id:
時間戳 + 機器標識 + 自增序列號
毫秒在高位,自增序列在低位,一定是遞增的。
優點: 缺點:
不同的方案有不同的特點,需要根據自己的需求場景來選擇適合的。
例如在美團早期,id方案就是多種形式的:
後來推出了乙個類雪花演算法的分布式id服務:leaf,qps壓測結果近5w/s。
分布式唯一ID實現
分布式唯一id實現 在業務開發中,大量場景需要用到唯一id,比如系統流水號,訂單號等等。那麼,分布式唯一id有哪些特徵呢?唯一性 生成的id全域性唯一。高可用 可保證在高併發下的可用性,確保任何時候都能正確生成id。自主性 分布式環境下不依賴中心認證,即可自行生成id。安全性 不暴露系統和業務資訊。...
分布式唯一ID方案
背景 在複雜的分布式系統中,往往需要對大量的資料和訊息進行唯一標識。如對大量的訂單做分庫分表後,需要有乙個唯一的id來標識一條資料或訊息,資料庫的自增id顯然不能滿足需求。業務系統對分布式唯一id的要求 全域性唯一性,不能重複 趨勢遞增,在mysql innodb引擎中使用的是聚集索引,由於多數rd...
獲取電腦唯一機器碼 分布式系統唯一ID的生產
為什麼需要分布式id呢?因為分布式架構下,唯一序列號生成是我們在設計乙個系統,尤其是資料庫使用分庫分表的時候常常會遇見的問題。當分成若干個sharding表後,如何能夠快速拿到乙個唯一序列號,是經常遇到的問題。總而言之,是因為高併發,我們引入了分庫分表,所以需要分布式唯一id的生產.全域性唯一,這是...