分布式系统概述

概念:

  将硬件或软件组件分布在不同的网络计算机上

  通过消息传递进行通信和协调

特点:

分布性

对等性

  平等:无主从之分(机器无主从之分)  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

 

posted on 2022-10-12 16:10  JohnWangzx  阅读(42)  评论(0编辑  收藏  举报