asp.net core集成CAP(分布式事务总线)
一、前言
感謝楊曉東大佬為社區貢獻的CAP開源項目,傳送門在此:.NET Core 事件總線,分布式事務解決方案:CAP?以及?如何在你的項目中集成 CAP【手把手視頻教程】,之前也在工作中遇到分布式數據一致性的問題,也一直都是基于CAP理論和Base。
之前一直有關注楊老板的博客,直到今天才嘗試一下CAP,發現好用,非常的棒,特此把CAP以組件化的方式引入到我的框架中。
二、CAP介紹
針對CAP介紹可以參考上面給出的兩個鏈接。在此我只簡單的說明一下:
CAP 是一個在分布式系統中(SOA,MicroService)實現事件總線及最終一致性(分布式事務)的一個開源的 C# 庫,她具有輕量級,高性能,易使用等特點。
你可以輕松的在基于 .NET Core 技術的分布式系統中引入CAP,包括但限于 ASP.NET Core 和 ASP.NET Core on .NET Framework。
CAP 以 NuGet 包的形式提供,對項目無任何入侵,你仍然可以以你喜愛的方式來構建分布式系統。
CAP 具有 Event Bus 的所有功能,并且CAP提供了更加簡化的方式來處理EventBus中的發布/訂閱。
CAP 具有消息持久化的功能,也就是當你的服務進行重啟或者宕機時,她可以保證消息的可靠性。
CAP 實現了分布式事務中的最終一致性,你不用再去處理這些瑣碎的細節。
CAP 提供了基于 Microsoft DI 的 API 服務,她可以和你的 ASP.NET Core 系統進行無縫結合,并且能夠和你的業務代碼集成支持強一致性的事務處理。
?
三、asp.net core集成CAP
?由于我的框架是DDD六邊形架構,為了解耦方便,我針對外部的工具都是以組件化的方式引入到項目中,即新建了一個CAP類庫。
?
第一步:擴展了Startup類中的IServiceCollection,在CAP中我加入了Consul的注冊,如下圖:
我用的是mysql數據庫,以及使用kafka消息隊列,這邊要注意,kafka最好部署在linux系統上,在windows系統會存在很多的坑,如果你覺得你的天坑能力強,可以嘗試一下。
我這邊也集成了 Consul服務注冊,如果大家對cosnul感謝的興趣的可以看我的另外一篇文章:實戰中的asp.net core結合Consul集群&Docker實現服務治理?里面有講解了consul集群部署。
?
好了然后我在我的主項目中配置一下,就開始用吧:
#region 配置CAPservices.AddCAPConfigure(Configuration);#endregion
?
?
第二步:在asp.net core webapi項目中新建一個控制器
配置如下:
此處的mysql配置大家可自行補充,或者按照 @Savorboard? 給出的demo操作即可。
?
第三步:部署一下kafka。
我在centos服務器上采用docker部署,命令如下:
//下載zookeeper
docker pull wurstmeister/zookeeper
//下載kafka
docker pull wurstmeister/kafka:2.11-0.11.0.3
?
//啟動zookeeper
docker run -d --name zookeeper --publish 2181:2181 --volume /etc/localtime:/etc/localtime wurstmeister/zookeeper
//啟動kafka
docker run -d --name kafka --publish 9092:9092 \
--link zookeeper \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.161.163:2181 \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.161.163 \
--env KAFKA_ADVERTISED_PORT=9092 \
--volume /etc/localtime:/etc/localtime \
wurstmeister/kafka:2.11-0.11.0.3
?
部署完畢后就進入下一步運行啦。
第四步:運行項目,運行成功后,我嗯可以在數據庫中發現cap會自動在數據庫中創建兩張表,一張是 發布信息表、一張是接收信息表。
?
?表:
?
?
發現 表中有數據存在:
數據體現法發送接收成功。
?
?
我們再來看看cap有提供的UI界面,發現里面有一個我們用consul注冊的服務器。完美實現。
我們看一下consul集群:
?
?
四、總結
?歡迎大家積極嘗試CAP,我也會在后續的項目中采用CAP,希望我們的社區越來越強大。
相關文章:
如何在你的項目中集成 CAP【手把手視頻教程】
CAP 2.3版本發布,支持 MongoDB
CAP帶你輕松玩轉ASP.NETCore消息隊列
.NetCore Cap 結合 RabbitMQ 實現消息訂閱
.NET Core微服務之開源項目CAP的初步使用
.NET Core Community 首個千星項目誕生:CAP
原文地址:?https://www.cnblogs.com/guolianyu/p/9756941.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的asp.net core集成CAP(分布式事务总线)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代软件工程的《构建之法》
- 下一篇: .NET Core Agent