概念
在分布式系统中最多具有 数据一致性(Consistence
) 可用性(Availability
) 网络分区容错(Partition tolerance
)中的两个
网络分区容错
分布式节点之间的网络延迟 或者通信故障不影响分布式系统的服务运行 这一点是必须的
一致性
系统中的各个节点 所存储的信息是完全同步的
举例1:`zookeeper`各个节点的信息是完全同步的
举例2:`mysql`主从复制设置全同步 主库写入需要等待多个从库`全部`写入成功之后才会返回成功 否则写入失败
可用性
客户端每次访问总能返回需要的数据即使数据不是最新的 在springcloud
中服务发现尤为重要
在网络分区节点通信有延迟的情况下 在主节点不需要等待从节点完全写入成功 允许短暂的时间内数据是不一致的但是最终的数据是保持一致的
举例1:mysql主从同步 主节点设置不需等待从节点同步成功 只要主节点写入成功立即返回不等待从库 ,读写分离的情况下是无法立即从 从库中查询出来的 ,
如果有重复插入校验就只能从主库查询,减少了sql等待时间,mysql可以设置半同步 等待多个节点中的一个写入成功后即返回成功
举例2;Eureka服务相互注册没有主从 因为网络延迟导致各个节点的数据在写入瞬间不一致,这对客户端访问请求没有影响 因为服务都是可用的