CAP理论是分布式系统中一个著名的理论,表示分布式系统需要遵循的下面三个特性:
C():一致性,外部系统访问系统每一个节点,得到的数据都是一样的。
A():可用性,分布式系统能正常对外提供服务,不能有某种情况导致系统不可用。
P():分区容错性,分布式系统一般有多个节点,多个节点之间通过网络通信,当网络出现故障,节点直接不能通信,便出现了分区,分区容错性是指,当出现分区时,系统还能对外提供服务。
分布式系统,由于有多个节点,一般是要满足P这个特性的,当多个节点之间需要同步数据,同步数据需要一定的时间,这段时间内,如果对外服务,就会导致有的节点的数据不一致,不满足C(一致性),如果不对外服务,就不满足A(可用性),不能保证同时满足上面三个特性,只能同时满足两个特性。
CP:保证一致性和分区容错性,舍弃掉可用性,这种系统对数据的一致性要求很高,当节点出现故障或数据不一致时,一定要等到系统各个节点完全同步数据后才对外服务,这种系统一般有redis、zoopkeeper,对于数据库和分布式协调服务,一致性当然要求高,如果某次同步数据的时间比较长,就会导致在比较长的一段时间内系统不可用,牺牲了用户体验。
AP:保证可用性和分区容错性,舍弃掉一致性,这种系统对可用性要求很高,要求系统能随时对外提供服务,即使在节点发生故障或数据不一致时,系统仍然对外提供服务,这样的系统一般有euraka,euraka是注册中心,对外提供注册服务,可用性非常重要,即使某些时候数据不一致,也可以在后面将数据同步完整,大多数分布式系统也是满足AP,因为大多数系统没有那么多重要的数据需要同步,最重要的是满足可用性。