天天看點

DotNet.CAP,或是.NET唯一靠譜的開源分布式架構

.NET5、容器化、K8S、分布式、微服務、DevOps、雲原生,熱門的技術名詞很多,然而無論概念如何包裝,落地的底層邏輯是不變的,分布式事務就是一個釘子戶,任何分布式架構都避不開,又很難搞定,尤其在.NET Core下,幾乎還沒有成熟的解決方案。這裡來為大家捋一捋分布式事務,尤其是在.NET Core下推薦落地方案。

本文包含以下内容,共1300字,閱讀完大約需要3分鐘:

1、什麼是分布式事務

2、多種分布式事務解決方案

3、.NET Core分布式事務推薦

4、實戰CAP分布式事務

1 什麼是分布式事務

主流關系型資料庫都支援資料庫事務,能保障單資料庫執行個體内的ACID,然而如果一次操作中涉及到多個資料庫執行個體,就沒那麼簡單了。比如拜振華(建行卡)要給川建國(工行卡)轉賬,就需要建設銀行的資料庫和工商銀行的資料庫同時成功或者同時失敗才能確定有效性,然而這兩家銀行的資料庫并不好同步協調,分布式下是無法保障的,這就誕生了分布式事務的問題。

所謂分布式事務,就是用于在分布式系統中保證不同節點之間的資料一緻性。

2 分布式事務解決方案

随着分布式系統的流行,分布式事務的解決方案慢慢沉澱了4類解決方案:

1 兩階段送出(2PC) & 三階段送出(3PC)方案

2 補償事務TCC(Try-Confirm-Cancel)

3 本地消息表(異步確定))

4 Sagas 事務模型

關于這四類解決方案介紹的文章有很多,但并沒有相關的實際代碼或者是開源代碼,是以算不上什麼幹貨,如果大家關注細節理論分析,掃文末二維碼可以找到一篇《1.4 w字,25 張圖讓你徹底掌握分布式事務原理》的文章,可以慢慢看。下面還是談談.NET Core落地的分布式事務。

DotNet.CAP,或是.NET唯一靠譜的開源分布式架構

3 .NET Core分布式事務推薦

在 .NET 領域,成熟的分布式事務解決方案沒有幾個,據我所知,有一些公司内部是有這種解決方案的,但是并未開源。下面給為大家推薦的,是微軟MVP-Savorboard開源的.NET分布式事務架構CAP,支援.NET Framework、支援.NET Core,微軟開源eShopOnContainer采納的就是這個,其詳細介紹在Github是上有介紹,下面列出一些特點,友善大家技術選型:

1 CAP 同時支援 RabbitMQ,Kafka 等消息隊列

2 CAP 同時支援 SQL Server, MySql, PostgreSql 等資料庫

3 CAP提供了可視化界面(Dashboard),實時監控全節點狀況,同時支援中文和英文界面雙語言

4 CAP 提供了豐富的接口可以供擴充,什麼序列化了,自定義處理了,自定義發送了統統不在話下

5 CAP 基于MIT開源,你可以盡管拿去做二次開發。(記得保留MIT的License)

6 CAP具有優秀的消息處理能力,是最成熟的EventBus産品之一

DotNet.CAP,或是.NET唯一靠譜的開源分布式架構

如果這些還沒有打動你,最後我要告訴你的是,該分布式方案已經被大量公司應用于産品項目,經受了電商、金融等高并發項目的真實驗證的,我目前推動的一個微服務架構的電商項目,在千萬級并發壓測下,CAP是毫無問題的。

4 實戰CAP分布式事務

分布式事務解決方案最重要的就是能經受生産環境的考驗,理論分析再透徹,抵不上生産環境走一遭。使用CAP架構2年多,也走了很多彎路踩了很多坑,但最終該架構真正解決了千萬并發微服務架構的分布式事務問題。本周(11月9号~15号)期間,我會線上分享基于.NET5微服務架構落地實操,對接CAP架構完成分布式事務,分享這幾年踩過的坑,歡迎掃碼關注學習!