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. luogu P3411 序列变换

    链接 P3411 序列变换 如果要最小化答案,那么就最大化不移动的数. 那么不移动的子序列一定是最后答案的一段连续区间,而移动的数我们是一定有办法把他们还原的. 设\(f_{i}\)表示\(i\)点的 ...

  2. No module named flask 导包失败,Python3重新安装Flask模块

    在部署环境过程中,通过pip install -r requirements.txt安装包,结果启动项目时总是报错,显示没有flask模块,通过pip install flask还是不行,于是下载fl ...

  3. Java 输入输出图片文件的简单方式

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...

  4. OC + RAC(一) RACSignal 基本使用

    -(void)_test1{ //测试RAC流程 发送next类型事件 以completed结束时: //至于有无 sendCompleted 的区别主要是用在需要知道信号状态 NSLog(@&quo ...

  5. hibernate插入数据测试无异常,但数据库没有数据

    解决方法: spring test测试默认会将事务回滚,如果想阻止spring transactional回滚,在test方法上加注解@Rollback(false)即可. Hibernate hql ...

  6. 使用随机森林实现OSM路网城市多车道信息提取

    Multilane roads extracted from the OpenStreetMap urban road network using random forests.,DOI:10.111 ...

  7. [CSP-S模拟测试]:reverse(数位DP)

    题目描述 我们定义: $\overline{d_k...d_2d_1}=\sum \limits_{i=1}^kd_i\times {10}^{i-1}=n(d_i\in [0,9]\ and\ d_ ...

  8. 后端技术杂谈11:十分钟理解Kubernetes核心概念

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 本文转自 https://github.com/h2pl/Java-Tutorial 喜欢的 ...

  9. onLayout初始化裁剪信息

    在EasyConstraintLayout中初始化LayoutParamsData的paths @Override protected void onLayout(boolean changed, i ...

  10. ResultSet用法集锦 (转)

    转:http://soft-development.iteye.com/blog/1420323 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是 ...