分布式系统概述
概念:
将硬件或软件组件分布在不同的网络计算机上
通过消息传递进行通信和协调
特点:
分布性
对等性
平等:无主从之分(机器无主从之分) master/slave是服务之间的关系
独立:拥有自己的cpu和内存,独立处理数据,不进行共享
并发性
外部:承载多个客户端的并发访问
内部:作业被分解为多个任务,并发运行在不同节点上
故障独立性
部分节点出现故障不影响整个系统使用,把该节点任务分配给其他节点
典型问题:
通信异常(网络等)
网络分区(脑裂)
系统分裂为两个甚至多个局部小集群,各个小集群又各自选举出leader
各分区独立运行,同时提供服务,从而导致混乱
节点故障
宕机或僵死
三态
成功、失败、超时
CAP定理(理论上的,无法付诸实践):
分布式系统在同一时间片段内,不可能同时满足cap,最多只能满足两项。
理解
网络分区无法避免,p是前提条件,要么cp要么ap
选择cp或ap关键在于业务场景
cp 一致性(银行)
ap 可用性
consistency:一致性
同一时刻,数据不同节点多个副本是否具有完全相同的值
强一致性:更新完成后,同一时刻,不同的读操作都可以获得最新的值
弱一致性:不一定能获得最新的值,无法保证多长时间之后可以获得最新的值
最终一致性:最终(一段时间后)是可以获得最新的值的(base)
availability
partition tolerance:分区容错性
可用性和一致性无法同时满足
发生网络分区时,是否可以对外提供满足c或a
BASE理论
BA(基本可用性)
系统故障,核心功能、指标有效,允许损失部分可用性,包括响应时间上的损失,非核心功能的损失
S(软状态)
允许数据存在中间状态(暂时未更新),不影响整体可用性
允许不同节点数据副本同步过程存在一定延时
EC(最终一致性)
分布在不同节点上的数据副本,经过一定时间的同步后,最终达到一致状态。
zookeeper、hdfs QJM写事务的过半策略,过半节点更新,可以提供服务
通过容忍部分数据的暂时不一致,牺牲数据的强一致性,确保系统的核心功能和指标有效
对大规模互联网系统分布式实践的总结
Zookeeper
Hadoop子项目
高可用、高容错、高性能分布式协调系统
将复杂易错的分布式一致性服务封装起来,形成高效可靠的原语集,并提供简单易用的访问接口
为大型分布式系统提供关键、共性、高效、可靠的协调服务
大数据开源技术体系的基础组件,无法替代
基本特性:
最终一致性(最重要的功能)
有限实时性(不能保证读到最新的数据,要想获得最新数据,先调用sync进行强制同步)
原子性(过半数的节点,要么都更新,要么都不更新)
顺序性(事务按顺序)
可靠性(过半节点更新,事务数据被保留)
单一视图(服务器上的数据模型是一致的,保证最终可以把集群看成庞大的单机)
zookeeper原理
四种角色:leader follower observer client(暂时不考虑)
leader和follower quorum仲裁机制(过半策略)
leader+follower quorum=m/2+1
leader+follower最好是奇数
相邻奇数和偶数,容忍宕灾能力相同
奇数票数少,效率高
observer 提高读请求的并发数量,提高效率
Znode
持久节点
临时节点
znode版本
利用版本确保分布式事务操作的原子性
悲观锁
乐观锁
Znode Tree
标签:可用性,Zookeeper,协调,节点,一致性,数据,leader,分布式 From: https://www.cnblogs.com/WZXwzx/p/16744024.html