"身份證"在分布式系統中是分布式ID和唯一的。如何在分布式系統中生成唯一的Id?在考慮這個問題的時候,我覺得可以從"尋找問題的解決方案,也就是說我需要滿足什么條件才能生成這個分布式Id?
分布式Id生成需要滿足的條件是全球唯一的:不用說,否則,什么樣的分布式"身份證"有嗎?高可用性:不能有單點故障,以免引發雪崩;安全:這個Id可以t要連續,否則不友好的人發現規則、數據抓取、數據預測會有一定的安全隱患;確保訂單增加:MySQLInnodb引擎使用B樹算法存儲索引數據。為了提高性能,需要要求索引的主鍵在一定程度上是有序的,這樣無論是寫還是查詢效率都很好;碎片化支持:可以根據分布式Id獲取具體的服務shardingId,方便服務查詢;不要太久:64位存儲最好?
你認為還有哪些場景或情況需要考慮?歡迎在評論區留言討論~那么基于以上條件,我們在日常生活中有哪些分布式Id生成方案呢?數據庫生成的優點:簡單粗暴,Id序列遞增。
缺點:只能生成主庫,容易造成單點故障;性能不足時,無法擴展;分庫分桌會有很多麻煩。
UUID的優點:簡單直接,沒有性能問題,真正獨一無二。
缺點:沒有規則;UUID是字符串,IO數據量大,存儲空間大,查詢效率低。基于UUID劃分數據庫和表更加困難。
區別在于方向和形式不同。對象存儲是指桌面存儲按對象分類的存儲,而分布式存儲是另一種存儲。存儲形式,兩者既有聯系又有區別。