MST

星途 面试题库

面试题:分布式系统中CAP理论在分布式事务场景下的应用

请阐述在分布式事务场景下,CAP理论中的一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)分别代表什么含义,以及在实际应用中为何难以同时满足这三者?
18.9万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

一致性(Consistency)

在分布式系统中,一致性意味着所有节点在同一时刻都能看到相同的数据副本。当一个数据在某个节点上被更新后,其他节点应该能立即感知到这个变化,并且读取到最新的值。例如在一个分布式数据库中,无论从哪个节点读取数据,都应该得到完全相同的最新版本数据。

可用性(Availability)

可用性指系统能够持续地对用户的请求做出响应。只要部分节点正常运行,系统就应该能够提供服务,而不会出现因为某些节点故障导致整体服务不可用的情况。也就是说,客户端发出的每一个请求,在合理的时间内都能收到一个非错误的响应,即使这个响应的数据可能不是最新的。

分区容错性(Partition tolerance)

分区容错性表示系统在遇到网络分区(由于网络故障、节点故障等原因导致系统被分割成多个彼此无法通信的子系统)的情况下,仍然能够继续提供服务。系统需要设计成即使在网络分区存在的情况下,各个子系统也能继续独立运行,而不是整个系统崩溃。

为何难以同时满足三者

  1. 网络分区场景下一致性与可用性的冲突:假设发生了网络分区,系统被分成了两个部分A和B。如果要保证一致性,当A区的数据发生更新时,需要同步更新B区的数据,但由于网络分区,无法及时同步,此时为了保证一致性,系统就不能向B区提供服务(因为数据不一致),这就牺牲了可用性。
  2. 满足可用性与分区容错性对一致性的影响:若要在网络分区时保证可用性,A区和B区都要继续提供服务,那么A区更新的数据无法及时同步到B区,B区读到的数据就是旧的,这样就无法保证一致性。所以在网络分区不可避免(实际网络环境复杂,分区故障难以杜绝,即分区容错性必须满足)的情况下,一致性和可用性只能二选一。