1. ZooKeeper是什么

ZooKeeper致力于提供一个高性能、高可用,且具备严格的顺序访问控制能力的分布式协调服务,是雅虎公司创建,是Google的Chubby一个开源的实现,也是Hadoop和Hbase的重要组件

1.1 ZooKeeper设计目标

  • 简单的数据结构:共享的树形结构,类似文件系统,存储于内存;

  • 可以构建集群:避免单点故障,3-5台机器就可以组成集群,超过半数正常工作就能对外提供服务;

  • 顺序访问:对于每个读请求,zk会分配一个全局唯一的递增编号,利用这个特性可以实现高级协调服务;

  • 高性能:基于内存操作,服务于非事务请求,适用于读操作为主的业务场景。3台zk集群能达到13w QPS;

1.2 ZooKeeper的使用场景

  • 数据发布订阅

  • 负载均衡

  • 命名服务

  • Master选举

  • 集群管理

  • 配置管理

  • 分布式队列

  • 分布式锁


2. ZooKeeper的安装部署

ZooKeeper安装部署方式分为三种

  1. 单机模式:在一台机器上部署

  2. 集群模式:在多台机器上部署,通过zoo.conf配置不同机器ZooKeeper之间的关联关系

  3. 伪集群模式:在一台机器上部署,复制多个ZooKeeper,在zoo.conf中配置这几个拷贝之间的关系

2.1 windows单机安装

  • 首先要安装jdk

  • 安装ZooKeeper,在官网http://zookeeper.apache.org/下载zookeeper,解压即可

  • 解压后目录

  • zoo.cfg中的dataDir配置Zookeeper工作中相关的data及log目录

2.2 集群配置(Linux环境)

  1. 安装jdk,配置环境变量【vi /etc/profile】【关闭防火墙】

  2. 安装ZooKeeper

  • 下载ZooKeeper安装包

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
  • 解压

    tar -zxvf zookeeper-3.4.10.tar.gz
  • 重命名

    mv zookeeper-3.4.10 zookeeper
  1. 修改配置文件【复制zoo_sample.cfg到zoo.cfg】

    cd /usr/local/zookeeper/conf
    mv zoo_sample.cfg zoo.cfg
    ------------zoo.cfg-------------
    (1)dataDir=/usr/local/zookeeper/data(注意同时在zookeeper创建data目录)
    创建服务器标识:myid
    服务器标识配置:
    创建文件夹: mkdir data
    创建文件myid并填写内容
    vi myid (内容为服务器标识【id】)
    (2)最后面添加集群服务器配置
    server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识
    id:myid中的内容,服务器标识
    host:服务器ip地址
    port:第一个端口,用于从follower连接到leader机器的端口
    port:第二个端口,用来进行leader选举时所用的端口
    e.g
    server.0=192.168.212.154:2888:3888
    server.1=192.168.212.156:2888:3888
    server.2=192.168.212.157:2888:3888
  2. 同样的在其它服务器上配置剩余节点 可以远程复制

    scp -r  /soft  root@zk2:/
    scp -r /soft root@zk3:/

    最后注意修改不同节点的myid文件内容

  3. 启动集群所有节点ZooKeeper

    路径: /usr/local/zookeeper/bin
    执行: zkServer.sh start
    (注意这里每台机器的ZooKeeper都要进行启动)
  4. 查看集群节点状态

    zkServer.sh status【在三个节点上检验zk的node,一个leader和俩个follower】

  伪集群模式其实就是在一台机器上通过不同端口号来模仿集群模式部署的

2.3 目录结构

目录 bin conf contrib dist-maven docs lib recipes src
作用 存放系统脚本 存放配置文件 zk附加功能支持 maven仓库文件 zk文档 依赖的第三方库 经典场景样例代码 zk源码

其中最重要的就是bin和conf两个目录

bin目录c

  • zkServer为服务器,启动后默认端口为2181

  • zkCli为命令行客户端

conf目录

conf目录为配置文件存放的目录,zoo.cfg为核心的配置文件,这里面的配置有很多,这配置是运维的工作,没必要全部掌握,挑选几个讲解:

  1. clientPort: 参数无默认值,必须配置,用于配置当前服务器对外的服务端口,客户端必须使用这端口才能进行连接

  2. dataDir: 用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)

  3. dataLogDir: 用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争

  4. snapCount: 新安装zk这文件夹里面是没有文件的,可以通过snapCount参数配置产生快照的时机

    以下配置集群中才会使用

  5. tickTime: 心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间

  6. initLimit: 多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值

  7. syncLimit: 多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃

1. ZooKeeper简介的更多相关文章

  1. ZooKeeper简介

    本文中,我们将对ZooKeeper进行介绍.简单地说,ZooKeeper是一个用来在构成应用的各个子服务之间进行协调的一个服务. 由于其本身并没有特别复杂的机制,因此我们将会把更多的笔墨集中在如何对Z ...

  2. Zookeeper简介与安装

    Zookeeper:A Distributed Coordination Service for Distributed Applications. 一.Zookeeper简介 众所周知,协同服务是分 ...

  3. Zookeeper简介与集群搭建

    Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...

  4. Zookeeper简介与集群搭建【转】

    Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...

  5. Zookeeper简介及单机、集群模式搭建

    1.zookeeper简介 一个开源的分布式的,为分布式应用提供协调服务的apache项目. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务. 设计非常易于编程,它使用的是 ...

  6. Zookeeper简介及使用

    一.Zookeeper简介 1.zookeeper简介 动物管理员 Apache ZooKeeper致力于开发和维护开源服务器,实现高度可靠的分布式协调. 2.什么是ZooKeeper? ZooKee ...

  7. ZooKeeper学习之路(一)—— ZooKeeper简介及核心概念

    一.Zookeeper简介 Zookeeper是一个开源的分布式协调服务,目前由Apache进行维护.Zookeeper可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调/通知. ...

  8. ZooKeeper系列(一)—— ZooKeeper 简介及核心概念

    一.Zookeeper简介 Zookeeper 是一个开源的分布式协调服务,目前由 Apache 进行维护.Zookeeper 可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调 ...

  9. Zookeeper简介及安装(一)

    1 Zookeeper入门1.1 概述Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1.3 数据结构 1.4 应用场景提供的服务包括:统一命名服务 ...

  10. 第1章 分布式系统概念与ZooKeeper简介

    ZooKeeper分布式专题与Dubbo微服务入门 第1章 分布式系统概念与ZooKeeper简介 1-1 zookeeper简介 1-2 什么是分布式系统 略 1-3 分布式系统的瓶颈以及zk的相关 ...

随机推荐

  1. GetExtendedTcpTable

    https://blog.csdn.net/sky101010ws/article/details/55511501 AdjustTokenPrivileges function Library Ad ...

  2. django之创建子应用

    一:子应用 Django的视图编写是放在子应用中的.类似于flask中的视图. 二:创建子应用 例如:在刚才的dj_study项目中,创建一个名字为user的子应用(目录):注意是第一级的dj_stu ...

  3. 手写hashmap算法

    /** * 01.自定义一个hashmap * 02.实现put增加键值对,实现key重复时替换key的值 * 03.重写toString方法,方便查看map中的键值对信息 * 04.实现get方法, ...

  4. 图片公式转为word格式

    mathpix提取Latex格式,下载mathpix snipping tool工具,截图即可获取Latex格式公式 Latex格式去下面网站转换为mathml格式 https://johnmacfa ...

  5. R语言把DataFrame的一行变成向量

    在R语言里面,DataFrame的一列数据本质上可以认为是一个向量或列表,但是一行数据不是. 今天有一个31列的数据集,由于放在第一行的变量名格式不规范,读入数据的时候不能顺带读入变量名.于是跳过首行 ...

  6. springboot2整合logback.xml动态修改日志打印级别

    今天找bug烦到了,生产上的日志级别不能修改,非常不利于排查问题,于是想到了动态修改日志打印级别, 因为上一周把项目升级成springboot2,并且使用logback.xml管理日志打印,所以修改也 ...

  7. Cluster基础(一):配置iSCSI服务、编写udev规则、配置并访问NFS共享、部署Multipath多路径环境

    一.配置iSCSI服务 目标: 本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端: 虚拟机添加新的磁盘 将新添加的磁盘分区并创建两个逻辑卷 逻辑卷名称分别为:/dev/myvg/isc ...

  8. 洛谷P1378 油滴扩展(搜索)

    洛谷P1378 油滴扩展 直接暴力搜索更新答案就可以了. 时间复杂度为 \(O(n!)\) . #include<stdio.h> #include<stdlib.h> #in ...

  9. 判断逻辑 先判断协议字段返回,再判断业务返回,最后判断交易状态 API密钥

    [微信支付]微信小程序支付开发者文档 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_1 协议规则 商户接入微信支付, ...

  10. rssi pdf 单双峰正态发布 与 定位