DotNet.CAP,或是.NET唯一靠譜的開(kāi)源分布式框架!
.NET5、容器化、K8S、分布式、微服務(wù)、DevOps、云原生,熱門的技術(shù)名詞很多,然而無(wú)論概念如何包裝,落地的底層邏輯是不變的,分布式事務(wù)就是一個(gè)釘子戶,任何分布式架構(gòu)都避不開(kāi),又很難搞定,尤其在.NET Core下,幾乎還沒(méi)有成熟的解決方案。這里來(lái)為大家捋一捋分布式事務(wù),尤其是在.NET Core下推薦落地方案。
本文包含以下內(nèi)容,共1300字,閱讀完大約需要3分鐘:
1、什么是分布式事務(wù)
2、多種分布式事務(wù)解決方案
3、.NET Core分布式事務(wù)推薦
4、實(shí)戰(zhàn)CAP分布式事務(wù)
1?什么是分布式事務(wù)
主流關(guān)系型數(shù)據(jù)庫(kù)都支持?jǐn)?shù)據(jù)庫(kù)事務(wù),能保障單數(shù)據(jù)庫(kù)實(shí)例內(nèi)的ACID,然而如果一次操作中涉及到多個(gè)數(shù)據(jù)庫(kù)實(shí)例,就沒(méi)那么簡(jiǎn)單了。比如拜振華(建行卡)要給川建國(guó)(工行卡)轉(zhuǎn)賬,就需要建設(shè)銀行的數(shù)據(jù)庫(kù)和工商銀行的數(shù)據(jù)庫(kù)同時(shí)成功或者同時(shí)失敗才能確保有效性,然而這兩家銀行的數(shù)據(jù)庫(kù)并不好同步協(xié)調(diào),分布式下是無(wú)法保障的,這就誕生了分布式事務(wù)的問(wèn)題。
所謂分布式事務(wù),就是用于在分布式系統(tǒng)中保證不同節(jié)點(diǎn)之間的數(shù)據(jù)一致性。
2?分布式事務(wù)解決方案
隨著分布式系統(tǒng)的流行,分布式事務(wù)的解決方案慢慢沉淀了4類解決方案:
1
兩階段提交(2PC) & 三階段提交(3PC)方案
2
補(bǔ)償事務(wù)TCC(Try-Confirm-Cancel)
3
本地消息表(異步確保)
4
Sagas 事務(wù)模型
關(guān)于這四類解決方案介紹的文章有很多,但并沒(méi)有相關(guān)的實(shí)際代碼或者是開(kāi)源代碼,所以算不上什么干貨,如果大家關(guān)注細(xì)節(jié)理論分析,掃文末二維碼可以找到一篇《1.4 w字,25 張圖讓你徹底掌握分布式事務(wù)原理》的文章,可以慢慢看。下面還是談?wù)?NET Core落地的分布式事務(wù)。
3?.NET Core分布式事務(wù)推薦
在 .NET 領(lǐng)域,成熟的分布式事務(wù)解決方案沒(méi)有幾個(gè),據(jù)我所知,有一些公司內(nèi)部是有這種解決方案的,但是并未開(kāi)源。下面給為大家推薦的,是微軟MVP-Savorboard開(kāi)源的.NET分布式事務(wù)框架CAP,支持.NET Framework、支持.NET Core,微軟開(kāi)源eShopOnContainer采納的就是這個(gè),其詳細(xì)介紹在Github是上有介紹,下面列出一些特點(diǎn),方便大家技術(shù)選型:
1
CAP 同時(shí)支持 RabbitMQ,Kafka 等消息隊(duì)列
2
?CAP 同時(shí)支持 SQL Server, MySql, PostgreSql 等數(shù)據(jù)庫(kù)
3
?CAP提供了可視化界面(Dashboard),實(shí)時(shí)監(jiān)控全節(jié)點(diǎn)狀況,同時(shí)支持中文和英文界面雙語(yǔ)言
4
CAP 提供了豐富的接口可以供擴(kuò)展,什么序列化了,自定義處理了,自定義發(fā)送了統(tǒng)統(tǒng)不在話下
5
CAP 基于MIT開(kāi)源,你可以盡管拿去做二次開(kāi)發(fā)。(記得保留MIT的License)
6
CAP具有優(yōu)秀的消息處理能力,是最成熟的EventBus產(chǎn)品之一
如果這些還沒(méi)有打動(dòng)你,最后我要告訴你的是,該分布式方案已經(jīng)被大量公司應(yīng)用于產(chǎn)品項(xiàng)目,經(jīng)受了電商、金融等高并發(fā)項(xiàng)目的真實(shí)驗(yàn)證的,我目前推動(dòng)的一個(gè)微服務(wù)架構(gòu)的電商項(xiàng)目,在千萬(wàn)級(jí)并發(fā)壓測(cè)下,CAP是毫無(wú)問(wèn)題的。