一、前言


感谢杨晓东大佬为社区贡献的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(分布式事务总线)相关推荐

  1. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程...

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  2. asp.net core 集成 log4net 日志框架

    asp.net core 集成 log4net 日志框架 Intro 在 asp.net core 中有些日志我们可能想输出到数据库或文件或elasticsearch等,如果不自己去实现一个 Logg ...

  3. [Abp 源码分析]ASP.NET Core 集成

    点击上方蓝字关注我们 0. 简介 整个 Abp 框架最为核心的除了 Abp 库之外,其次就是 Abp.AspNetCore 库了.虽然 Abp 本身是可以用于控制台程序的,不过那样的话 Abp 就基本 ...

  4. asp.net core 集成 prometheus

    asp.net core 集成 prometheus Intro Prometheus 是一个开源的现代化,云原生的系统监控框架,并且可以轻松的集成 PushGateway, AlertManager ...

  5. ASP.NET Core中的分布式缓存

    ASP.NET Core中的分布式缓存 在上一篇文章中[1],我解释了如何使用内存缓存在ASP.NET Core应用程序中管理缓存.如果您的应用程序托管在单个服务器上,则可以使用这种类型的缓存.那.N ...

  6. asp.net core 集成JWT

    [什么是JWT] JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案. JWT的官网地址:https://jwt.io/ 通俗地来讲,JWT是能代表用户身份的令牌,可以使用JWT ...

  7. Net Core集成Exceptionless分布式日志功能以及全局异常过滤

    相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程[asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程][https:// ...

  8. abp mysql .net core_ABP Asp.Net Core 集成 MySql 数据库

    ASP.NET Boilerplate(简称ABP)是.Net平台下一个很流行的DDD框架,该框架已经为我们提供了大量的函数,非常方便与搭建企业应用.官方文档:http://www.aspnetboi ...

  9. spring cloud 集成 seata 分布式事务

    spring cloud 集成 seata 分布式事务 基于 seata-server 1.6.x 序言 下载 seata-server 准备一个数据库 seata 专门为 seata-server ...

最新文章

  1. 主成分分析(PCA)简介
  2. linux重置网络协议,Linux 内核网络协议栈 ------ tcp_ack 函数处理接收到的ACK包之后 ....
  3. Python3字符串填充和对齐代码示例
  4. 表弟:这数学规律题该怎么解决呢?使用Python你会发现很简单
  5. python面向对象编程实例爬虫_​Python面向对象编程⑭
  6. python定时任务是异步的吗_python异步实现定时任务和周期任务的方法
  7. js复制操作,复制成功弹出提示框
  8. kk每日一句:第一句
  9. html5中video自动播放,H5:设置video自动播放
  10. 关于使用xftp上传可读文件夹权限不足的问题
  11. linux 修改 bcast,Linux下修改MAC地址
  12. Linux命令详解-hwclock
  13. R语言笔记3(NA解释)
  14. [SPOJ P104]HIGH - Highways(Matrix-Tree定理)
  15. Linux C哲学家吃饭问题
  16. 上行短信 写入mysql_学习-短信的上行(MO)和下行(MT)详解
  17. 记录--uniapp开发安卓APP视频通话模块初实践
  18. 【蓝桥杯算法练习题】双指针、BFS与图论
  19. 面试恒安嘉新运维/项目经理面经 2019-06
  20. 谱聚类Python代码详解

热门文章

  1. spring boot微服务通用部署启动脚本
  2. 5.03 列出表的索引
  3. spring 基于java的配置
  4. Centos Missing Library: QtWebKit.so.4
  5. 设置 Xcode 自动生成代码片段
  6. 跳槽9招让你“空降”任何企业都能成功
  7. Mybatis批量更新转
  8. SRM 440(1-250pt, 1-500pt)
  9. C#导入导出.CSV文件
  10. CentOS单机安装k8s并部署.NET 6程序