分布式全域性ID生成方案

2021-10-25 09:29:51 字數 546 閱讀 2921

1 背景

分布式架構下,唯一序列號生成是我們在設計乙個系統,尤其是資料庫使用分庫分表的時候常常會遇見的問題。當分成若干sharding表後,如何能夠快速拿到乙個唯一序列號,是經常遇到的問題。

在網際網路的業務系統中,涉及到各種各樣的id,如在支付系統中就會有支付id、退款id等。那一般生成id都有哪些解決方案呢?特別是在複雜的分布式系統業務場景中,我們應該採用哪種適合自己的解決方案是十分重要的

2 特性需求

保證生成的id全域性唯一

今後資料在多個shards之間遷移不會受到id生成方式的限制

生成的id中最好能帶上時間資訊, 例如 id 的前 k 位是 timestamp, 這樣能夠直接通過對id的前k位的

排序來對資料按時間排序

生成的id位元位不要過大,最好不大於64 bits

生成 id 的速度有要求. 例如, 在乙個高吞吐量的場景中, 需要每秒生成幾萬個 id (twitter最新的峰值

到達了143

,199tweets

分布式ID生成方案

系統唯一id是設計乙個系統的時候常常會遇到的問題,也常常為這個問題而糾結。生成id的方法有很多,適應不同的場景 需求以及效能要求。所以有些比較複雜的系統會有多個id生成的策略。1 全域性唯一性 不能出現重複的id號,既然是唯一標識,這是最基本的要求 2 粗略有序 如果在分布式環境中做到完全有序,需要...

分布式全域性ID的幾種生成方案

前言 在網際網路的業務系統中,涉及到各種各樣的id,如在支付系統中就會有支付id 退款id等。那一般生成id都有哪些解決方案呢?特別是在複雜的分布式系統業務場景中,我們應該採用哪種適合自己的解決方案是十分重要的。下面我們一一來列舉一下,不一定全部適合,這些解決方案僅供你參考,或許對你有用。使用資料庫...

分布式唯一ID的生成方案

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