系统可用性,分区容忍性/系统连通性
原文链接:
分布式基础——如何理解和实践CAP
面试必问:分布式事务的六大解决方案-知乎
分布式系统中的三个常见指标是:
这三个不能同时实现,取第一个字母的称为CAP理论。
在分布式系统中系统可用性,分区容忍性/系统连通性,一致性(Consistency)、可用性(Availability)和分区容限(Partition Tolerance)这三个要素最多只能同时满足两个,不能同时满足。
其中,分区容错是必不可少的。
CAP 理论简介:
一致性:分布式环境中多个节点的数据是否强一致。
可用性:分布式服务始终可用。当用户提出请求时,服务可以在有限的时间内返回结果。
分区容差/系统连接性:
特别是网络分区的容差。是指分布式系统中的某些节点与其他节点由于网络故障或其他原因失去连接,形成独立的分区。集群分区后,整个系统必须继续对外提供服务。
`
数据一致性
数据一致性是多分区场景下不可避免的问题,如下图所示:
数据的初始状态是一致的。当发生变化时系统可用性,多分区场景下通信失败可能会因为网络延迟导致数据不一致。一致性处理通常只有在多分区的场景下才会存在,比如数据库主从、数据库和缓存、多数据中心数据等。一般来说,处理数据一致性的方法有很多:
数据序列化,比如使用消息队列的分区机制;
具有标准化时间戳的数据来实现,数据不需要排序,可以并发处理。最终设置时只需要比较时间戳系统可用性,分区容忍性/系统连通性,根据最新的时间戳设置即可。
·
系统的可用性
可用性的含义是系统只要收到请求就必须响应,可以理解为7*24不间断的服务,它和系统的可靠性需要区分开来。可靠性是系统输出的正确性。比如我要查深圳到广州的高铁票。如果显示长沙到广州的车票在里面,说明系统不可靠。总而言之:
系统可用性:7*24连续服务,注重时间维度的可用性。
系统可靠性:正确的命令得到正确的输出,重点是信息的准确性。
比如系统集群机制、反向代理机制、服务治理机制、系统降级机制等都是为了解决系统可用性问题。
·
分区容错/系统连接
如上所述,分区会导致数据一致性问题,而要解决一致性问题,我们首先需要考虑分区的连通性问题系统可用性,系统之间的各个节点不能隔离,需要通过网络通信进行连接,但无法保证网络质量和通信可靠性。
这是综合考虑三者的前提,即连接性必须考虑到不可靠的情况,那么剩下的就是在可用性(Availability)和数据一致性(Consistency)之间进行选择。
·
为什么三者不能结合?
以前面的数据一致性图为例,如果认为系统连通性(分区容差)不可靠,
如果主库修改设置值为v=b,那么访问从库时,需要等待数据一致,牺牲了可用性。如果满足可用性并及时返回数据,则不能保证数据一致。
评论前必须登录!
注册