在分布式系统中,有一个CAP理论:
C: 一致性 consistent
A: 可用性 available
P: 分区容错性 partion tolerence
cap不能同时做到,因为我们认为网络通信是不可靠的,总会可能出现问题导致网络通信失败。即必须满足P。
当满足P时。即存在:
CP:为什么满足CP时不能满足A呢,因为这里的C是强一致性,比如我们集群里有2台机器m1,m2,当发送修改数据到其中1台m1时(将一个数据a从0修改为1),如果我们为了达到强一致性,就必须在向m1写入成功后立马向m2同步,而在同步的过程中,如果此时向m2请求获取a的值,则不能返回(必须等同步完成),此时A(可用性)就不能满足。
AP:同理,如果我们要达到可用性,则在请求时不能等待同步,此时获取到a的值可能还是0,即达不到强一致性。
目前大多数系统都实现的是AP,然后加上最后一致性。