一、分布式事务
1.1 什么是分布式事务
1.2 CAP定理
CAP 定理,又被叫作布鲁尔定理。对于设计分布式系统(不仅仅是分布式事务)的架构师来说,CAP 就是你的入门理论。
- Consistency(一致性)
对某个指定的客户端来说,读操作能返回最新的写操作。
对于数据分布在不同节点上的数据来说,如果在某个节点更新了数据,那么在其他节点如果都能读取到这个最新的数据,那么就称为强一致,如果有某个节点没有读取到,那就是分布式不一致。
-
Availability(可用性)
- 保证服务一定是可用,即收到用户请求,无论数据是否是正确的版本,服务是能响应数据的
- 不允许出现响应超时或响应错误
如何实现的?
1、写入主数据后要将数据同步到从数据库。
2、由于要保证可用性、不可讲从数据库中的资源进行锁定
3、即使数据还没有同步过来,从数据库也要返回数据,哪怕数旧数据,也要返回。即使没有旧数据也要按照约定返回一个默认的信息(类似于熔断),但不能返回错误或响应超时
- Partition tolerance(分区容错性)
- 当出现网络分区后(各个服务不在同一个子网),系统能够继续工作。
- 比如集群有多台机器,有台机器网络出现了问题,但是这个集群仍然可以正常工作。
如何实现?
1、尽量使用一步的方式取代同步,这样节点之间能有效实现松耦合
2、添加从数据库节点,其中一个节点挂掉从其他节点获取数据。
三者不能共有,如果感兴趣可以搜索 CAP 的证明,在分布式系统中,网络无法 100% 可靠,分区其实是一个必然现象。
如果我们选择了 CA 而放弃了 P,那么当发生分区现象时,为了保证一致性,这个时候必须拒绝请求,但是 A 又不允许,所以分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。