天天看点

CAP里面的CP和AP

一、为什么分布式系统要么是CP要么是AP呢?

1、分布式系统:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。

2、从分布式系统的定义可知,分布式是建立在网络之上的,既然有网络,那么肯定会存在网络出现问题的情况,那意味着我们在设计分布式系统的时候,必须要考虑的一个点就是:如果网络出现了问题,那么我们的系统应该怎么做。

3、分区:

一个分布式系统里面数据存储在各个节点里面,节点组成的网络正常情况下都是连通的。如果因为一些故障导致有些节点之间无法连通,则整个网络就分成了几个区域,这些不连通的区域就是分区。

4、当我们的数据只在系统中某一个节点中保存,那么当分区出现后,那么这个不连通的节点上面保存的数据就无法被用户访问了,这叫做分区无容错性,给用户的直观感觉就是数据丢了或者数据无法写入了,这要比看到不是最新的数据要严重的多。

5、那么提高分区容忍性的办法就是同时存在多个节点保存同一份数据,这样当分区出现之后,这一份数据项就可能在多个分区里面存在,容错性就提高了。

6、如果要把数据复制到多个节点,带来的问题就是一致性,就是多个节点上面的数据可能是不一致的。要保证一致,每次写操作就都要等待全部节点写成功,而这等待又会带来可用性的问题,也即一段时间内,系统是不可读的。

二、CAP的解释:

1、一致性(Consistency):(等同于所有节点访问同一份最新的数据副本)

2、可用性(Availability):(每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据)

3、分区容错性(Partition tolerance):(以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择,保证分布式网络中部分网络不可用时, 系统依然正常对外提供服务。

三、分布式与集群

1、分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。

2、集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。

继续阅读