C:代表状态一致 A:代表同一时间 P:代表不同空间
CP
不同空间中的数据,如果要求他们所有状态一致,则必然不在同一时间。
AP
不同空间中,如果要求同一时间都可以从任意的空间拿到数据,则必然数据的状态不一致。
CA
不同空间的数据,如果要求任意时间都可以从任意空间拿到状态一致的数据,则空间数必然为1.
要强一致性的地方:
- 唯一ID生成, 这种性能很差. 并发不高.
- 对一致性要求比较高的系统,例如银行转账
要高可用: 最终一致, 即有可能读到脏数据. 但是一段时间之后总是能够读到新数据.
c
一致性
G1,G2为数据节点,同时存储了键值对 key=v:value=0
a
可用性
指的是服务是否可用,范围涵盖终端客户访问我们的系统或者是集群内部相互通讯交换数据
也就是说在Client向Server发起请求时,服务器返回了正确的响应,称之为可用,反之为不可用
这里有一个问题,如果发送请求在300年后给我返回数据了,那么算不算可用?
所以要提出访问延迟的概念,在某个时间范围内响应才算可用。
1s法则
1S法则”是面向Web侧,H5链路上加载性能 和体验方向上的一个指标,具体指:
- “强网” (4G/WIFI)下,1秒完全完成页面加载,包括首屏 资源,可看亦可用;
- 3G下1秒完成首包的返回 ;
- 2G下1秒完成建连。
高可用架构在实施的时候可以分两个方向
客户端容错
例如:游戏服务器
服务器端容错
例如:Nginx负载均衡
p
啥叫分区容错?
发生在分布式系统内部互访通信,
是指分布式网络中部分网络不可用,
但系统依然正常对外提供服务。
G1,G2是两台服务器,G1 向 G2 发送一条消息,G2 可能无法收到
比如:北京的订单系统,访问上海的库存系统
分区容错性是指分区具有容错性,我们可以尽可能的提高容错性,但是无法避免,
如果发生失败,就要在A和C之间做出选择。 要么停止系统进行错误恢复,要么继续服务但是降低一致性,所以我们说只能保证AP或CP。
在互相隔离的空间中,提供数据服务的系统。 CAP抽象:不同空间的数据,在同一时间,状态一致。