1. CAP:
①. 强一致性(Consistency):
a. 数据写入后,任何一个节点都马上读最近的数据.
②. 可用性(Availability):
a. 用户在任何时间、地区都能访问这个服务.
③. 网络分区容错性(Partition tolerance):
a. 当负载的多台设备网络节点之间,在通与不通的时候,都能得到数据.
2. 分布式系统三者同时满足二者:
①. 模型:
CA、CP、AP
②. 模型:
a. CA模型一般说的是单机,其实失去意义了.
b. CP模型:
(1). 牺牲了可用性.
(2). 数据一定要是一致性的,但是可以允许短时间不可用.
c. AP模型:
(1). 牺牲的是不一致性.
(2). 对数据一致性要求一定不高,但是一定要保证可用性.
(1). 为什么不能兼得?
(2). 数据库更新案例:
①. 各模型:
a. C => 数据库主节点更新,从节点也要更新.
b. A => 必须保证两个数据节点都是可用的.
c. P => 当主从节点出现网络分区,必须保证系统对外可用.
②. 在数据强一致性下,整个链路分析:
a. 请求A机房的数据访问层,再到master主节点,再到solve从节点.
b. 返回master节点,再返回数据访问层.
③. 在数据强一致性下,只要主从出现网络分区,A就无法满足:
a. 假如master与slave之间网络不通了,虽然写主库可以成功,但是同步从库不成功.
b. 因为要求数据一致性,一直在等待写从库.
c. 写请求是没有办法返回的,表示这个写请求就是不可用了.
④. 前提是写DB操作的超时时间(timeout),远远小于等于网络恢复的时间.