Net Core教程

.NET Core 不支持分布式事务

本文主要是介绍.NET Core 不支持分布式事务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • .NET Core 不支持分布式事务
    • 事实
    • 问题
    • 计划
    • 影响
    • 扩展阅读

.NET Core 不支持分布式事务

事实

.NET Framework支持分布式事务(Distributed Transactions),但是很遗憾(尴尬)的是.NET Core(包括.NET 5和.NET 6)都还不支持分布式事务。

问题

这个问题从.NET Core发布后就一直存在,可见在跨平台的分布式事务支持是一件非常复杂的事情。参见:

  • https://github.com/dotnet/runtime/issues/19318
  • https://github.com/dotnet/runtime/issues/715

计划

现在有一个好消息是在未来的.NET 7版本中,已经计划优先在Windows平台上支持分布式事务,然后再在跨平台上支持分布式事务。

参见:

  • ​ https://docs.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-7.0/plan#distributed-transactions

影响

在微服务中,可以通过良好的微服务划分和事务边界(transaction boundary)来避免处理跨微服务的分布式事务的问题。

如果不得不处理,也可以采用Saga模式。

事实上,2PC (two-phase commit) 并不是微服务事务问题的好方案。

扩展阅读

在Data Consistency in Microservices Architecture (Grygoriy Gonchar) 中提出了按以下优先级处理分布式事务问题:

  1. Consitentency by design

    a. Accept inconsistency when possible

    b. Make operations reversible and idempotent

  2. Change single datasource at the time

    a. Change-first (Change Data Capture, CDC)

    b. Event-first (Event-drive Architecture, EDA or CQRS)

  3. Sagas - compensate & reconcile

    a. Orcestration

    b. Choreography

这篇关于.NET Core 不支持分布式事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!