《软件架构探索》事务处理-2-共享事务、分布式事务

在我的博客阅读本文会有更好的阅读体验哦!博客: www.lxiaocode.com
更多内容可以到我博客浏览: www.lxiaocode.com
B站算法动画: https://space.bilibili.com/22392939

文章导航:
《软件架构探索》事务处理(1) - 本地事务、全局事务
《软件架构探索》事务处理-2-共享事务、分布式事务

事务处理(2)

4. 共享事务

与全局事务正好相反,共享事务是指{% span blue, 多个服务共享一个数据源 %}。

4.1 共享数据库连接

对于全局事务的一种理论可行的方案是让各个服务共享数据库连接。严格意义上的 “不同服务节点共享数据库连接” 是很难做到的,所以为了实现共享事务,就必须新增一个用于处理数据库连接的 “代理服务器” 的中间角色,可以将它视为一个独立于各个服务的远程数据库连接池,或者作为数据库代理。

图片转存失败,请到:《软件架构探索》事务处理-2-共享事务、分布式事务 观看。

4.2 共享数据库连接悖论

之所以强调理论可行,是因为该方案与实际生产系统中的压力方向相悖。在一个服务集群中,数据库才是压力最大而且最不容易伸缩拓展的重灾区,所以现实中只有用于对多数据库实例做负载均衡的数据库代理,而几乎没有反过来代理一个数据库为多个应用提供事务协调的服务代理。

由于没有理由让多个微服务去共享数据库。所以,共享事务在实际应用中并不常用。尽管拆分微服务后仍然共享数据库的情况现实中其实并不少见,但不赞同将共享事务作为一种常规的解决方案来考量。


5. 分布式事务

以下所说的分布式事务特指 “{% span blue, 多个服务同时访问多个数据源的事务处理 %}” 的处理机制。

5.1 CAP 与 ACID

开始分布式事务之前,需要先从 CAP 与 ACID 的矛盾说起。

CAP 定理是分布式计算领域所公认的著名定理。这个定理里描述了一个分布式的系统中,涉及到共享数据问题时,以下三个特性最多只能同时满足其中两个:

  • {% span red, 一致性(Consistency) %}:代表数据在任何时刻、任何分布式节点中所看到的都是符合预期的。

  • {% span red, 可用性(Availability) %}:代表系统不间断地提供服务的能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值