• 【Zookeeper】——入门&本地安装


    一、入门

    1. 概念

      Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。
    相当于是一个文件系统+通知机制。
    在这里插入图片描述

    2. 工作机制

      Zookeeper从设计模式角度理解,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家关系的数据,然后接受观察者的注册,一旦这些数据发生了变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
    在这里插入图片描述

    3. 特点

    <1> 一个领导者(Leader),多个跟随者(Follower)组成的集群
    <2> 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务,所以Zookeeper适合安装奇数台服务器。
    <3> 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到那个Server,数据都是一致的。
    <4> 更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行
    <5> 数据更新原子性,一次数据更新要么成功,要么失败。每次写操作都有事务id(zxid)
    <6> 实时性,在一定时间范围内,Client能读到最新的数据。

    4. 数据结构

      Zookeeper数据结构与Unix文件系统很类似,整体上可以看作是一棵树,每个一节点称做一个ZNode。每一个ZNode默认能存储1MB的数据。每个ZNode都可以通过其路径唯一标识。
    在这里插入图片描述

    5. 应用场景

    <1> 统一命名服务

      在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。例如IP地址
    在这里插入图片描述

    <2> 统一配置管理

      在分布式环境下,配置文件同步非常常见。一般要求一个集群中,所有节点的配置信息是一致的,比如Kafka集群。对配置文件修改后,希望能够快速同步到各个节点上。
    配置管理可以交给Zookeeper实现,可将配置信息写入Zookeeper上的一个ZNode。各个客户端服务器监听这个ZNode。一旦ZNode中的数据被修改,Zookeeper将通知各个客户端服务器。
    在这里插入图片描述

    <3> 统一集群管理

      在分布式环境中,实时掌握每个结点的状态是必要的,可根据节点实时状态做出一些调整。
    Zookeeper可以实现实时监控节点的状态变化,可将节点信息写入Zookeeper上的一个ZNode,监听这个ZNode可获取它的实时状态变化。

    在这里插入图片描述

    <4> 服务器节点动态上下线

    在这里插入图片描述

    <5> 软负载均衡

      在Zookeeper中记录每台服务器的访问数,让访问数据最少的服务器去处理最新的客户端请求。
    在这里插入图片描述

    6. 官网

    https://zookeeper.apache.org/
    在这里插入图片描述

    二、本地安装

    1. 本地安装

    <1> 安装JDK
    <2> 拷贝安装包到linux服务器

    在这里插入图片描述

    <3> 解压
    cd /opt/software/
    tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
    
    • 1
    • 2
    <4> 重命名
    cd /opt/module
    mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7
    
    • 1
    • 2
    <5> 修改配置文件
    cd /opt/module/zookeeper-3.5.7/conf
    cp zoo_sample.cfg zoo.cfg
    mv zoo_sample.cfg zoo_sample.cfg.bak
    
    
    • 1
    • 2
    • 3
    • 4
    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    dataDir=/opt/module/zookeeper-3.5.7/zkData
    # the port at which the clients will connect
    clientPort=2181
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    <6> 创建目录
    cd /opt/module/zookeeper-3.5.7
    mkdir zkData
    
    • 1
    • 2

    2. 启动停止命令

    <1> 启动
    cd /opt/module/zookeeper-3.5.7/bin
    ./zkServer.sh start
    
    • 1
    • 2

    在这里插入图片描述

    <2> 进入&退出客户端

    进入

    cd /opt/module/zookeeper-3.5.7/bin
    ./zkCli.sh 
    
    • 1
    • 2

    退出

    quit
    
    • 1

    在这里插入图片描述

    3. 配置文件解读

    <1> tickTime=2000

      通信心跳时间,Zookeeper服务器与客户端心跳时间。单位毫秒。
    在这里插入图片描述

    <2> initLimit=10

      LF初始通信时限。Leader和Follower初始化连接时能容忍的最多心跳数(tickTime的数量)
    在这里插入图片描述

    <3> syncLimit=5

      同步通信时限,Leader和Follower之间通信时间如果超过syncLimit *tickTime,Leader认为Follower死掉,从服务器列表中删除Follower。
    在这里插入图片描述

    <4> dataDir=/opt/module/zookeeper-3.5.7/zkData

      保存Zookeeper中的数据,默认目录为tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录。

    <5> clientPort=2181

      客户端连接端口,通常不做修改。

  • 相关阅读:
    VoLTE端到端业务详解 | VoLTE网络
    ctf bugku
    最优乘车——最短路
    Linux命令行从x度网盘下载数据
    计算机的发展史,让你想到了什么?
    进阶笔录-深入理解Java线程之-AQS
    自动化测试的生命周期是什么?
    [NOIP2010 普及组] 三国游戏
    CRM销售系统价格 一套CRM销售系统多少钱
    逆向-beginners之float联合体
  • 原文地址:https://blog.csdn.net/qq_42000631/article/details/126836976