首先需要了解一个概念:
在分布式系统中需要处理大量的http请求,其中有大量的http请求(来自不同服务器)需要访问数据库,但是我们的主数据库承载不了如此之多的连接,所以衍生出了数据缓冲的概念,也就是在多个处理http连接的服务器上创建主数据库的副本(不一定是全部副本,可能是部分,也可能是全部,根据设计不同而不同,)
接下来该说明一下CAP原则了(在处理服务器的数据库中)
C:数据一致性(一次更改,在下一次访问该数据时,所有副本的数据都是更改之后的)
A:可用性(该数据库可以立即处理对应的http请求,不需要等待数据一致性这个过程)
P:分区容错性(有服务器宕机之后,不影响用户使用)
CAP原则中只能同时支持其中的两种:
CA的情况:那我们就不能拥有多个处理服务器了,因为,我们要实现可用性,当我们一个数据在服务器A被更改,它写到服务器B的数据库中是需要时间的。而与此同时,我们要访问服务器B的该数据,但是数据被更改了,我们要实现数据一致性就必须等待服务器B上的数据被改之后再读。所以在多个服务器上是没办法实现数据一致性和可用性的。只能在一个服务器上。
CP:没办法保持可用性,因为可能需要等,但是可用性要求的时立马可以用
AP:没办法保持一致性,因为一致性需要时间啊,可用性还没等人家改就给读了,当然没办法保持
其实这个原则只有在数据进行一致性的过程中同时去一个还未更改过的服务器访问这个数据的时候,只是说明了在这种时候该如何抉择,当然是保持一致性啦,可用性还能把锅推给网络,一致性死活都会让用户觉得你代码写的烂。