一个方法,可以把MySql等看做一个资源,把它放到一个自定义资源管理器下管理。比如自定义资源管理可以先参阅如下文章入门: 【实现资源管理器】 https://docs.microsoft.com/zh-cn/dotnet/framework/data/transactions/implementing-a-resource-manager 注:个人认为英文版比中文版容易理解。 另一个方法(如果是我,会选择这个方法),就是改写服务,使它们依赖于一个SQL服务。
讨论太技术化了 说白了,分布式事务依赖于有状态服务。所以任何一种有状态服务的技术都可以。 so,不管他是资源也好,不是资源也罢。全局能一致性状态就可。至于那临外的讨论都是一致性和高可用的讨论。过于具体技巧 只要把握住有状态,一致性就能解决问题,至于高可用只是另外的讨论 如果说有状态,一致性,就是啥不讨论什么mysql,sqlserver都一样。比如如果等会sp上来,他会说Orleans,对这个也一样能做。因为他本身就是分布式有状态提供的。 我没说这个,只是因为这个是纯微软的架子,混合开发就算了。那边的人不太会可能选择和你这样对接 在有状态和一致性,高可用3个要求下,MQ/zookeeper1/etcd/redis其实都可用,我们的任务只是把执行状态公有,至于一致性和高可用实际不太考虑(因为上面说的那些自己会保证一致性和高可用)
你的需求,从字面上看没有分布式事务的直接需求。如果有一个核心的处理机制可以支持事务,而多个服务依赖于核心来进行业务处理,实际上并不需要分布式事务。一个具体例子就是,订单服务和账户服务都使用SQL服务,并依赖于它的事务支持,这里实际上并不需要用到分布式事务。 只有当资源分布在不同节点上,才有需要用到布式事务。一个具体例子比如是用到两台SQL服务器的系统。 分布式事务也不是什么情况都能处理。比如2PC(Two Phase Commit两阶段提交)需要如下的假定: 一、所有节点不会永久性损坏 二、所有节点能预写式日志,且存储必须可靠 三、任意两个节点都能互相通讯 第二和第三比较宽松,但第一点要求就比较难(就是说可以允许一台机器垮掉,但必须保证垮掉后能够重新启动和参与恢复)。
13,190
社区成员
5,759
社区内容
加载中
试试用AI创作助手写篇文章吧