专栏首页寒树Office与RPADotNet.CAP,或是.NET唯一靠谱的开源分布式框架!

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落地的分布式事务。

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产品之一

如果这些还没有打动你,最后我要告诉你的是,该分布式方案已经被大量公司应用于产品项目,经受了电商、金融等高并发项目的真实验证的,我目前推动的一个微服务架构的电商项目,在千万级并发压测下,CAP是毫无问题的。

4

实战CAP分布式事务

分布式事务解决方案最重要的就是能经受生产环境的考验,理论分析再透彻,抵不上生产环境走一遭。使用CAP框架2年多,也走了很多弯路踩了很多坑,但最终该框架真正解决了千万并发微服务架构的分布式事务问题。

本文分享自微信公众号 - 寒树Office与RPA(OfficeRPA)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-11-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 祝雷(依乐祝):一份来自29岁.NET老程序员的自白

    博客园知名博主(依乐祝)。6年以上.NET技术栈的开发工作,3年团队管理经验,从去年开始进行.NET Core技术栈的研究,目前发表了:《Ocelot简易教程》...

    寒树Office与RPA
  • 2019.NET Conf China,.NET之崛起,已势不可挡

    当今时代,开发者大概是最优秀的群体。每一位开发者,无不奋勇向前,努力追寻时代的步伐,以大无畏的精神迎接挑战,紧跟大时代成就企业发展的宏伟蓝图的同时,也在实现自己...

    寒树Office与RPA
  • 中国.NET:东莞+长沙.NET俱乐部现场花絮及合肥、苏州、上海等地活动预

    与微软技术的发展历程相似,微软俱乐部的发展经历着沉沉浮浮,曾经随着微软走向封闭与固执,.NET社区年轻一代的声音被忽略,.NET社区后继无人。社区的沉默是可怕的...

    寒树Office与RPA
  • 分布式架构设计概要

    在互联网企业中,经常离不开的术语就是分布式架构和微服务相关的词汇,如果让你来设计一个分布式系统,你会以什么样的维度去构思我们的分布式系统呢?首先,我们需要明白为...

    keithl
  • ubuntu18.04安装mysql忘记密码无法登录解决办法

    在将本站由DO云迁移至华为云时出现了该问题:安装mysql5.7时并没有提示输入密码就直接安装完成,然后尝试空密码、或其他操作都无法进入mysql。在经过查询搜...

    赵帆同学GXUZF.COM
  • 一种定时器的实现

    注册一个时间间隔为 Interval 后执行 ExpiryAction 的定时器实例,其中,返回 TimerId 以区分在定时器系统中的其他定时器实例。

    changan
  • Redis分布式

    1 Redis分布式算法原理 1.1 传统分布式算法 举个例子 蓝色表与4个节点时相同槽 1.2 Consistent hashing一致性算法原理 环形 ha...

    JavaEdge
  • 【PAT 1016B】部分A+B

    正整数 A 的“D​A​​(为 1 位整数)部分”定义为由 A 中所有 D​A​​ 组成的新整数 P​A​​。例如:给定 A=3862767,D​A​​=6,则...

    种花家的奋斗兔
  • C#基础知识系列一(goto、i++、三元运算符、ref和out、String和string、重载运算符)

      这两天在网上看到的总结很多,尤其是博客园中的,很多很多,也给了我很多的启发,当然自己也总结过,而且有很多人也给与我一些意见和看法。不管怎样,自己还是先把所谓...

    aehyok
  • HDU-1881 毕业bg (01背包变形)

    毕业bg Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java...

    ShenduCC

扫码关注云+社区

领取腾讯云代金券