Zookeeper分布式协调服务全解析

目录

[Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题。可以从设计角度认知Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据发生变化,Zookeeper将负责通知注册在其之上的那些观察者作出相应的操作,Zookeeper即等于文件系统和通知机制。](#Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题。可以从设计角度认知Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据发生变化,Zookeeper将负责通知注册在其之上的那些观察者作出相应的操作,Zookeeper即等于文件系统和通知机制。)

1.zookeeper的服务角色

2.数据存储

3.数据读取

4.zookeeper集群安装

[1 下载zookeeper的压缩包](#1 下载zookeeper的压缩包)

[2 解压](#2 解压)

[3 修改配置文件](#3 修改配置文件)

[4 添加myid配置](#4 添加myid配置)

[5 安装包分发并修改myid的值 分布式](#5 安装包分发并修改myid的值 分布式)

[6 配置环境变量](#6 配置环境变量)

[7 三台机器启动zookeeper服务](#7 三台机器启动zookeeper服务)

[8 如何关闭zookeeper集群](#8 如何关闭zookeeper集群)


Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题。可以从设计角度认知Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据发生变化,Zookeeper将负责通知注册在其之上的那些观察者作出相应的操作,Zookeeper即等于文件系统和通知机制。

注意事项:三台机器一定要保证时钟同步

使用场景 搭建hadoop高可用

分布式协调服务 管理其他服务

搭建高可用时,需要至少两个hadoop服务

一主一备;主服务对外提供业务功能 备用等待主服务不可用器,启用备用服务对外提供业务功能

0 表示 宕机

1 表是正在运行

1.zookeeper的服务角色
  • leader 管理者 负责管理follower,处理所的事务请求(保存,修改,删除)

  • follower 追随者 负责选举和数据的同步和获取

  • observer 观察者 数据的同步和获取 需要在配置文件指定才会生成(优化的读取数据的一张形式)

2.数据存储

zookeeper在进行数据存储时,所有事务都会交给leader角色处理,leader发起投票,只要超过一般的follower同意,leader就会将数据同步给所有的follower。这是所有follower的数据时一致的

  • 一致性 所有的follower数据是一样的

  • 顺序性 数据的请求执行的按照顺序执行

  • 原子性 每个请求都保证完整执行,不会被中断,

  • 实时性 数据最终会同步给所有的follower

3.数据读取

访问任意一个服务都可以

4.zookeeper集群安装
1 下载zookeeper的压缩包
  • 下载网址

  • 我们在这个网址下载我们使用的zk版本为apache-zookeeper-3.6.2

  • 下载完成之后,上传到我们的node01的/itheima/soft路径下准备进行安装

2 解压
  • node01执行以下命令解压zookeeper的压缩包到node01服务器的/itheima/install路径下去,然后准备进行安装

    cd /itheima/soft
    ​
    tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C /itheima/install/

3 修改配置文件
  • 第一台机器修改配置文件

    cd /itheima/install/apache-zookeeper-3.6.2-bin/conf
    ​
    mkdir -p /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas
    ​
    cp zoo_sample.cfg zoo.cfg

  • 用vim zoo.cfg修改文件,修改如下属性值

    dataDir=/itheima/install/apache-zookeeper-3.6.2-bin/zkdatas
    ​
    autopurge.snapRetainCount=3
    ​
    autopurge.purgeInterval=1
    ​
    #文件末尾增加如下三行
    server.1=node01:2888:3888
    server.2=node02:2888:3888
    server.3=node03:2888:3888

4 添加myid配置
  • 在第一台机器的/itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1

    echo 1 > /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/myid

5 安装包分发并修改myid的值 分布式
  • 第一台机器上面执行以下两个命令

    scp -r /itheima/install/apache-zookeeper-3.6.2-bin/ node02:/itheima/install/
    ​
    scp -r /itheima/install/apache-zookeeper-3.6.2-bin/ node03:/itheima/install/

  • ==第二台==机器上修改myid的值为2;直接在第二台机器任意路径执行以下命令

    echo 2 > /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/myid

  • ==第三台==机器上修改myid的值为3;直接在第三台机器任意路径执行以下命令

    echo 3 > /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/myid

6 配置环境变量
  • 三台节点都配置/etc/profile文件

    sudo vim /etc/profile

    export ZK_HOME=/itheima/install/apache-zookeeper-3.6.2-bin
    export PATH=PATH:ZK_HOME/bin

  • 三台节点,让新添环境变量生效(hadoop用户下执行)

    source /etc/profile

7 三台机器启动zookeeper服务
  • 三台机器启动zookeeper服务;这个命令三台机器都要执行

    zkServer.sh start

  • 查看启动状态

    zkServer.sh status

一个zkServer的状态要么是follower,要么是leader

三个节点中,一个节点为leader,另外两个为follower,类似下图

  • jps每个服务器上有一个QuorumPeerMain进程
8 如何关闭zookeeper集群

==提醒:如果要关闭电脑时,清一定要按照以下顺序操作,否则集群可能会出问题==

  • 关闭zookeeper集群

  • 关闭虚拟机

  • 关闭电脑

相关推荐
樱花落木兰4 小时前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
ShineWinsu4 小时前
对于Redis:Steam、Geospatial、Hyperloglog、Bitmap、Bitfield类型的解析
数据库·c++·redis·分布式·缓存·面试·zset
Flynt20 小时前
Redis Cluster主节点挂了,为什么"高可用"还全员掉线?我把三次kill的记录翻出来了
数据库·redis·分布式
JosieBook1 天前
【数据库】MySQL 实战精通系列 · 第10篇:分库分表与分布式事务实战
数据库·分布式·mysql
梦帮科技1 天前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
Frank_refuel1 天前
分布式RPC框架实战(二):服务端模块划分与底层设计
分布式·网络协议·rpc
qetfw1 天前
Debian iSCSI Target 与 open-iscsi:LVM 后端、ACL 与客户端验证
linux·服务器·debian·php
mftang2 天前
EtherCAT协议:从“飞读飞写”机制到分布式时钟同步的实时以太网架构深度解析
分布式·架构·ethercat·分布式时钟·从站控制器
ShineWinsu2 天前
对于Redis:Hash类型的解析
c++·redis·分布式·缓存·面试·hash·哈希表
东方芷兰2 天前
Agent 技术摘要 03 —— 基座模型、推理模型、Flash、联邦学习、分布式机器学习
人工智能·分布式·机器学习