.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 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!