概述
分布式系统的定义:分布式系统是同时跨越多个物理主机,独立运行的多个软件组件所组成的系统。
分布式系统的意义:利用多处理器的运算能力,或出于某些原因需要部署在不同地点。
CAP定理
一致性(Consistency):所有节点在同一时间具有相同的数据。
可用性(Availability):每次读取都获得一个(非异常)应答,不保证这个数据是最新的。(就是说允许统一时间从节点A获取的数据与从节点B获取的数据不同)
分区容忍性(Partition tolerance):在发送网络故障导致节点间任意数量的消息丢失时,分布式系统任然能提供服务。
CAP定理:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性指在一个这三个需求,最多只能同时较好的满足两个。
实际应用中,网络故障是无法避免的,所以分布式系统必须满足分区容错性。所以,真正的选择在于一致性和可用性。
不得不指出,在现实中完美的分布式解决方案是不存在的,只是在对CAP原则的近似取舍。
主从模式
主从模式:主从模式是一种常见的分布式架构,一般在这种架构中,主节点进程负责跟踪从节点状态和任务的有效性,并分配任务到从节点。
主从模式下的三个关键问题:主节点崩溃、从节点崩溃、通信故障。
主节点崩溃的错判:主节点负载很高,导致消息任意延迟,从而误判主节点崩溃,选举新主节点;由于网络分区导致主从通信停止,从而误判主节点崩溃,选举新主节点,产生脑裂现象。
任务重复执行问题:如果主节点没办法确认任务执行完成,可能会再次分配,从而导致重复执行,这种情况并不是加锁就能解决的。
主从架构的需求:主节点选举、崩溃检测、组成员关系管理、元数据管理。