首页 > 其他分享 >分布式协调服务Zookeeper

分布式协调服务Zookeeper

时间:2022-10-12 16:24:57浏览次数:113  
标签:可用性 Zookeeper 协调 节点 一致性 数据 leader 分布式

分布式系统概述

概念:

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

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

特点:

分布性

对等性

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

相关文章

  • HDFS、Ceph、GFS、GPFS、Swift、Lustre……容器云选择哪种分布式存储更好?
    HDFS、Ceph、GFS、GPFS、Swift、Lustre……容器云选择哪种分布式存储更好?-51CTO.COM   容器云在使用分布式存储时,HDFS、CEPH、GFS、GPFS、Swift等分布式存储哪种更......
  • zk api连接超时问题 org.apache.zookeeper.KeeperException$ConnectionLossException:
    遇到org.apache.zookeeper.KeeperException$ConnectionLossException:KeeperErrorCode=ConnectionLossfor/的问题首先让我想到的是,zk所在服务器是开启了防火墙吗?......
  • 分布式之闲侃前后端分离的必要性
    引言由于近期前端抽不出资源,博主最近接手一个前端项目的代码维护工作。拿到手一看,一脸懵逼,和博主当年所学的jsp开发方式、利用ajax来请求数据的单页面开发方式完全不同。......
  • ZooKeeper系列:zk中的watch
    Watch就是监听,观察。其实就是客户端注册watch,然后服务端发生节点数据变化的时候会触发watch事件,接着回调客户端创建工程和实现类创建java的maven工程,然后在pom中添加对......
  • ZooKeeper
    ZooKeeper作为顶级分布式开源项目,应用非常广泛,Dubbo和Kafka这些知名的开源项目都在使用。之前只是听说过它,并没有仔细研究过。今天带大家来学习下ZooKeeper,主要从ZooKeeper......
  • 分布式事务是什么?
    目录​​前言​​​​数据库事务​​​​分布式理论​​​​CAP定理​​​​BASE理论​​​​分布式事务​​​​一、两阶段提交(2PC)​​​​二、补偿事务(TCC)​​​​三、本......
  • 【SpringCloud】(一)分布式理论
    分布式架构理论方法远程调用各个模块运行于不同的tomcat,模块之间通过网络进行调用。远程调用的技术演进1WebService解决应用程序之间的跨平台访问问题,基于SOAP/WSDL......
  • Dubbo学习(一)- windows下安装zookeeper
    下载zookeeper下载地址:​​https://www.apache.org/dyn/closer.cgi/zookeeper/​​下载下来zookeeper-3.4.11.tar.gz,解压到当前文件夹修改配置找到zookeeper-3.4.11\conf\zo......
  • Redisson分布式锁
    待到秋风四起时,孤舟远赴倒悬山。官方文档:https://github.com/redisson/redisson使用示例更多请参考官方文档引入依赖<dependency>  <groupId>org.redisson</gro......
  • 分布式存储系统之Ceph集群RadosGW基础使用
    前文我们了解了MDS扩展相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16759585.html;今天我们来聊一聊RadosGW的基础使用相关话题;对象存储系统概述......