分散式唯一ID,顧名思義,是指在全世界任何一臺電腦上都不會重覆的唯一Id。 在單機/單伺服器/單資料庫的小型應用中,不需要用到這類東西。但在高併發、海量數據、大型分散式應用中,這類卻是構建整個系統的最核心一環。 設想一下如下場景: 在某個大型電商系統A中,“訂單”這類大數據(比如,每天產生1500 ...
分散式唯一ID,顧名思義,是指在全世界任何一臺電腦上都不會重覆的唯一Id。
在單機/單伺服器/單資料庫的小型應用中,不需要用到這類東西。但在高併發、海量數據、大型分散式應用中,這類卻是構建整個系統的最核心一環。
設想一下如下場景:
在某個大型電商系統A中,“訂單”這類大數據(比如,每天產生1500萬條訂單)必定不會存儲在1台資料庫伺服器中,而是分散式的存儲在多台資料庫伺服器組成的一個集群中(比如,1000台資料庫伺服器組成一個集群)。由於海量數據+高併發等特性時常會伴隨“訂單”發生,所以,如何確保“訂單Id”在整個系統中唯一不重覆,已經有些設計難度了。
若此時,另外一家公司的電商系統B,要與你家的電商系統A合併(甚至還有更多公司的C、D、E、等等),那麼這些系統合併時“訂單Id”出現重覆的概率是很大的。要把這些重覆修改成唯一,又會要費一番不小的改造功夫,十分麻煩…
但是,若我們一開始就使用分散式唯一Id來實現“訂單Id”,則不會有這些麻煩,一切迎刃而解,且十分輕鬆…
以下代碼提供了十分完善的分散式唯一Id生成(支持.Net/.Net Core/.Net Framework),可在需要時採用:
using DeveloperSharp.Framework.CoreUtility;//從NuGet引用DeveloperSharp包 ------------------------ IUtility IU = new Utility(); var Id = IU.GenerateId("Order");//產生分散式唯一Id
附註:其實,無論是單機小型應用,還是多機大型分散式應用,現在都應採用“分散式唯一Id”作為資料庫中表的“主鍵”。因為與所謂可讀性、自增Id比起來,它的擴展性好太多、太多...
IUtility.GenerateId方法詳細說明如下:
GenerateId 聲明:string GenerateId(string Prefix) 用途:生成主鍵Id (此處生成的是一種分散式唯一Id) 參數:(1)string Prefix -- 首碼詞 返回:String -- 主鍵Id
【附註】:文中所有示例均已成功運行通過!!技術交流/支持,請微信掃描二維碼,備註“進群”!