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. SpringBoot 利用freemaker生成静态页面

    1. <!-- freemarker模板 --> <dependency> <groupId>org.springframework.boot</groupI ...

  2. sonar-runner命令模式运行sonar

    适用环境:该种配置的模式适用于本地调试模式 前提条件:在工程路径下创建sonar-project.properties文件 该客户端的路径在系统配置文件中进行了定义 alias sonar-runne ...

  3. poj 3468 : A Simple Problem with Integers 【线段树 区间修改】

    题目链接 题目是对一个数组,支持两种操作 操作C:对下标从a到b的每个元素,值增加c: 操作Q:对求下标从a到b的元素值之和. #include<cstdio> #include<c ...

  4. ECS 按量付费转包年包月支持按周啦

    功能场景 不需要别的理由,就是省钱. 以 华北1 ecs.t5-c1m2.xlarge ( 4vCPU 8GB ) 为例:按量付费一周需要 131元,而按周付费只需要 68元. 如果您正在使用按量付费 ...

  5. android设置系统默认开机时间

    1.设置RTC时间,该时间是如果RCT时钟断电以后使用的默认时间 Android L之前: \alps\mediatek\custom\[project]\preloader\ inc\cust_rt ...

  6. 循序渐进实现仿QQ界面(三):界面调色与控件自绘

    本篇讲述如何进行界面调色.界面调色一般有两种方法,调色板和HSL色彩变换.调色板局限于256色,这里不采用,因此用HSL色彩变换实现.首先要了解一下什么是HSL色彩空间,完整且详尽的知识请到维基百科去 ...

  7. Codeforces Round #585 (Div. 2) E. Marbles (状压DP)

    题目:https://codeforc.es/contest/1215/problem/E 题意:给你一个序列,你可以交换相邻的两个数,要达到一个要求,所有相同的数都相邻,问你交换次数最少是多少 思路 ...

  8. 前端面试之路之HTML面试真题

    1.doctype的意义是什么 让浏览器以标准模式渲染 让浏览器知道元素的合法性 2.HTML XHTML HTML5的关系 HTML属于SGML XHTML属于XML,是HTML进行XML严格化的结 ...

  9. 简易的Web自动化链接测试(Xenu)

    1.理解链接需要测试的测试点: [1] 要测试的链接页面是否存在 [2] 确定存在链接页面,然后就考虑跳转后的页面是不是对应需求的页面[3] 保证Web系统上没有孤立的页面(没有链接指向该页面) 2. ...

  10. Android 一键分享功能简单实现

    import java.io.File;import java.util.ArrayList;import java.util.List; import android.content.Context ...