CAP(consistency,availability,partition-tolerance)
- 数据一致性(consistency):如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性(strong consistency)
- 服务可用性(availability):所有读写请求在一定时间内得到响应,成功,错误,超时,不会一直等待
- 分区容错性(partition-tolerance):在网络分区的情况下,被分隔的节点仍能正常对外服务
如果选择了 CA 而放弃了 P,那么当发生分区现象时,为了保证 C,系统需要禁止写入,当有写入请求时,系统返回 error(例如,当前系统不允许写入),这又和 A 冲突了,因为 A 要求返回 no error 和no timeout。因此,分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。
BASE理论(Basically Available,Soft State,Eventually Consistent)
BASE理论是CAP理论的一种妥协,由于CAP只能二取其一(因为必须保证P),BASE理论降低了发生分区容错时对可用性和一致性的要求
基本可用(Basically Available,):允许可用性降低(可能响应延长、可能服务降级),
软状态(Soft State):指允许系统中的数据存在中间状态,并认为该中间状态不会影响系统整体可用性。
最终一致性(Eventually Consistent):节点数据同步可以存在时延,但在一定的期限后必须达成数据的一致,状态变为最终状态
服务降级:比如一个网页有图片+描述,如果服务降级,那么先把最重要的描述信息发送给client,图片再慢慢传,这就是服务降级