一致性 可用性 分区兼容性
这三个指标无法同时做到,只能取其二,这个理论叫做CAP理论
分布式系统大多数都分布在多个子网络中,每个子网络都是一个分区,区间兼容性的意思就是通信可能会失败,
一般来说分区容错无法避免,因此可以认为,CAP中P总是存在的,C和A只能选其一
写操作之后的读操作,必须返回该值
举例,用户A向GA发送一个请求将Vo的值改成了V1,那么下次用户无论访问的是那一台服务器都将返回V1
但问题是GA的值修改了,GB的值还是V0,GA和GB的值不同就不符合一致性
解决,在GA修改值时GA向GB发送一条信息,要求GB的值也为V1
这样无论用户访问那台服务器,值都相同
只要用户收到请求,服务器就必须给出回应
用户不管是访问的哪一台服务器, 只要收到请求就要给出回应,不然就不符合可用性
一致性和可用性为什么不能同时成立呢?,答案很简单因为可能通信失败(分区兼容性)
举个例子:
如果保证了GB的一致性,那么GA在写操作时就会锁定GB,只有数据同步之后才会重新开放读写,在锁定期间,GB不能读写没有一致性
如果保证了GB的可用性那么势必不能锁定GB无法保证一致性
综上所述:
GB无法同时做到一致性和兼容性.系统的设计只能选择一个目标,如果追求所有节点的一致性就不能保证可用性,如果保证所有节点的可用性就不能保证一致性