加入收藏 | 设为首页 | 会员中心 | 我要投稿 怀化站长网 (https://www.0745zz.cn/)- 语音技术、云资源管理、物联设备、云计算、决策智能!
当前位置: 首页 > 站长资讯 > 动态 > 正文

引发对分布式事务的思考

发布时间:2021-03-16 13:22:34 所属栏目:动态 来源:互联网
导读:其实在分布式架构中,分布式事务问题,是非常常见的问题。既然是常见,那肯定会有解决办法。这里我并不打算展开他的各种解决方案,给大家讲讲 架构思维层面的东西 首先我们知道数据库事务会满足ACID特性: 原子性(A); 一致性(C); 隔离性(I); 持久性(D); 而在

其实在分布式架构中,分布式事务问题,是非常常见的问题。既然是常见,那肯定会有解决办法。这里我并不打算展开他的各种解决方案,给大家讲讲

架构思维层面的东西

首先我们知道数据库事务会满足ACID特性:

  • 原子性(A);
  • 一致性(C);
  • 隔离性(I);
  • 持久性(D);

而在这四大特性中,一致性是最基本的特性,其它的三个特性都为了保证一致性而存在的!

而在分布式场景中,这种单库事务就没什么意义了。

分布式场景中的事务一致性方案

在分布式架构中,有很多种解决一致性问题的方案,比如TCC(事务补偿)、比如基于可靠性消息的最终一致性、比如基于2pc协议的强一致性、

对于很多中间件里面的一致性协议,有paxos、Raft等算法 ;这些大家都可以自己去看看

我们前面说过,在分布式架构下,分布式事务的问题是很常见的。所以目前市面上提供的解决方案也比较多。那么这里就涉及到两个概念

  • 一个是强一致性、 一个是弱一致性

所谓的强一致性,就是保证跨节点的数据的强一致,要么同时成功,要么同时失败

而所谓的弱一致性,其实就是一种最终一致性,

CAP和BASE

强一致性和弱一致性有什么区别,或者对系统会产生什么样的影响呢?我们来分析一下

CAP 定理,又被叫作布鲁尔定理。对于设计分布式系统(不仅仅是分布式事务)的架构师来说,CAP 就是你的入门理论。

1.C (一致性):对某个指定的客户端来说,读操作能返回最新的写操作。对于数据分布在不同节点上的数据来说,如果在某个节点更新了数据,那么在其他节点如果都能读取到这个最新的数据,那么就称为强一致,如果有某个节点没有读取到,那就是分布式不一致。

2.A (可用性):非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。可用性的两个关键一个是合理的时间,一个是合理的响应。

合理的时间指的是请求不能无限被阻塞,应该在合理的时间给出返回。合理的响应指的是系统应该明确返回结果并且结果是正确的

3.P (分区容错性):当出现网络分区后,系统能够继续工作。打个比方,这里集群有多台机器,有台机器网络出现了问题,但是这个集群仍然可以正常工作。

熟悉 CAP 的人都知道,三者不能共有,因为在分布式系统中,网络无法 100% 可靠,分区其实是一个必然现象。

(编辑:怀化站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读