CAP 定理
CAP定理,又称为布鲁尔定理(Brewer’s theorem),是分布式系统、特别是分布式存储领域中被讨论的最多的理论。
它指在分布式系统中不可能同时满足以下三点:
-
一致性(Consistency):在分布式系统中所有节点的数据备份,在同一时刻的值要保持一致。即指任一节点完成写操作后,所有节点读操作返回的结果都是该写操作的结果。
特点:
- 根据数据一致性要求,主节点操作后的数据需要同步到各从节点,这个写入操作存在一定的延迟。
- 为了保持主从节点数据一致,需要对相应的从节点资源进行锁定,待数据同步完成后再释放。
- 数据写入并同步成功,所有节点都会返回最新数据。数据写入或者同步失败,所有节点都不会存在最近写入的数据。
-
可用性(Availability):系统对外提供的服务必须一直处于可用状态,在任何故障下,保证客户端每个请求不管成功或者失败都能在合理的时间内获得响应。
特点:
- 应用程序将数据写入主数据库后,主数据需要将数据同步到从数据库中,但并不要求从数据能够立刻读到最新的数据。
- 应用程序的读取数据请求,能够得到快速响应结果,也就是说,在数据同步时,从数据库的资源不能被锁定。
- 所有的请求都会被响应,不会存在响应超时或者响应错误的情况,如果应用程序设定了响应超时时间,一旦超过这个时间,系统将不可用。
-
分区容错性(Partition Tolerance):在分布式系统中遇到任务网络分区故障(如网络延迟或者丢失),系统仍能够正常对外提供服务。
网络分区
将存储系统部署并运行在多个不同的节点上,并且这些节点处于不同的网络中,就形成了网络分区。
特点
- 一个节点挂掉,不影响其他节点对外提供服务。当主从同步时,使用异步同步代替同步同步,这样即使同步失败也不影响写入操作。尽量多增加一些从数据节点,如果一个从节点挂掉,其他从数据库仍然能对外提供服务。
- 分区容忍性是分布式系统必须具备的基础能力。
CAP 定理证明在分布式系统中,要么满足 CP,要么满足 AP,不可能实现 CAP 或者 CP,因为网络通信并不是绝对可靠的。
- CA:放弃了系统的分区容错性。意味着系统不是一个分布式系统,而是一个单点系统。
- CP:放弃了系统的高可用性,实现强一致性。意味着用户完成一个操作需要等待较长的时间,来保证各节点的数据一致性,如果某节点存在故障,还要等待故障恢复。
- AP:放弃了系统的强一致性,实现最终一致性。
评论区