Loading... # CAP理论 ## 简介 由计算机科学家 Eric Brewer提出。其观点为,在分布式计算机系统中不可能同时保证以下三个功能。 1. 一致性(Consistency): 同一时间系统中能提供服务(正常工作)的节点的数据是相同的。 2. 可用性(Availability): 系统中的所有节点都是可用(提供服务)的,收到请求后都会得到响应(无论响应是正确还是错误的,取决于子节点是否正常工作)。 3. 分区容错性(Partition Tolerance): 将系统的一些节点与其它节点相隔离(可看做网络故障,节点之间无法同步更新了),整个系统仍能继续服务(即至少保证有一个节点在提供服务)。 ![CAP理论-不可同时满足三者][1] [1]: http://assets.processon.com/chart_image/6076a12ae0b34d16663c3caa.png 由于CAP理论说明一致性、可用性、分区容错性三者不可能同时达成,那么实际应用中,对于某个具体的系统,只有妥协三者中的某部分。下面介绍三种CAP模型 ## 牺牲分区(CA模型) 想要系统在网络分区时(部分子节点网络不通的时候)也能正常工作,带来那么多问题,那么就不分呗,然而如果不分的话,这还算分布式系统吗?显然不是。 他也失去了分布式系统最重要的伸缩性,冗余性。 CA常见例子: * 单站点数据库 * 集群数据库(将一组服务器在一起形成集群,当出现问题就一起崩了) ## 牺牲可用性(CP模型) 部分子节点网络不通,那么(暂时)就将它关闭服务呗,反正还有其他节点可以顶着用。整个系统还是可以正常工作。 * 分布式数据库 * 绝大多数协议 实现方式: * 悲观锁 * 少数子节点不可用 ## 牺牲一致性(AP模型) 部分子节点网络不通,没关系,不理它,反正早晚会通的,到时候不就一致了么,现在不一致也不打紧。 * Web缓存 * DNS 实现方式: * 乐观 * 到期/租赁 最后修改:2021 年 04 月 20 日 08 : 58 PM © 允许规范转载