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(分布式事务总线)相关推荐
- asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程...
最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...
- asp.net core 集成 log4net 日志框架
asp.net core 集成 log4net 日志框架 Intro 在 asp.net core 中有些日志我们可能想输出到数据库或文件或elasticsearch等,如果不自己去实现一个 Logg ...
- [Abp 源码分析]ASP.NET Core 集成
点击上方蓝字关注我们 0. 简介 整个 Abp 框架最为核心的除了 Abp 库之外,其次就是 Abp.AspNetCore 库了.虽然 Abp 本身是可以用于控制台程序的,不过那样的话 Abp 就基本 ...
- asp.net core 集成 prometheus
asp.net core 集成 prometheus Intro Prometheus 是一个开源的现代化,云原生的系统监控框架,并且可以轻松的集成 PushGateway, AlertManager ...
- ASP.NET Core中的分布式缓存
ASP.NET Core中的分布式缓存 在上一篇文章中[1],我解释了如何使用内存缓存在ASP.NET Core应用程序中管理缓存.如果您的应用程序托管在单个服务器上,则可以使用这种类型的缓存.那.N ...
- asp.net core 集成JWT
[什么是JWT] JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案. JWT的官网地址:https://jwt.io/ 通俗地来讲,JWT是能代表用户身份的令牌,可以使用JWT ...
- Net Core集成Exceptionless分布式日志功能以及全局异常过滤
相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程[asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程][https:// ...
- abp mysql .net core_ABP Asp.Net Core 集成 MySql 数据库
ASP.NET Boilerplate(简称ABP)是.Net平台下一个很流行的DDD框架,该框架已经为我们提供了大量的函数,非常方便与搭建企业应用.官方文档:http://www.aspnetboi ...
- spring cloud 集成 seata 分布式事务
spring cloud 集成 seata 分布式事务 基于 seata-server 1.6.x 序言 下载 seata-server 准备一个数据库 seata 专门为 seata-server ...
最新文章
- 主成分分析(PCA)简介
- linux重置网络协议,Linux 内核网络协议栈 ------ tcp_ack 函数处理接收到的ACK包之后 ....
- Python3字符串填充和对齐代码示例
- 表弟:这数学规律题该怎么解决呢?使用Python你会发现很简单
- python面向对象编程实例爬虫_​Python面向对象编程⑭
- python定时任务是异步的吗_python异步实现定时任务和周期任务的方法
- js复制操作,复制成功弹出提示框
- kk每日一句:第一句
- html5中video自动播放,H5:设置video自动播放
- 关于使用xftp上传可读文件夹权限不足的问题
- linux 修改 bcast,Linux下修改MAC地址
- Linux命令详解-hwclock
- R语言笔记3(NA解释)
- [SPOJ P104]HIGH - Highways(Matrix-Tree定理)
- Linux C哲学家吃饭问题
- 上行短信 写入mysql_学习-短信的上行(MO)和下行(MT)详解
- 记录--uniapp开发安卓APP视频通话模块初实践
- 【蓝桥杯算法练习题】双指针、BFS与图论
- 面试恒安嘉新运维/项目经理面经 2019-06
- 谱聚类Python代码详解