分布式唯一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
【附注】:文中所有示例均已成功運行通過!!技術交流/支持,請微信掃描二維碼,備注“進群”!

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/510637.html
標籤:.NET技术
上一篇:Alglib 求解函式最小值
