ZooKeeper1-ZooKeeper介绍.md

ZooKeeper1-ZooKeeper介绍.md

Zookeeper介绍

1、初识ZooKeeper

1.1、ZooKeeper介绍

Zookeeper是Apache的顶级项目,为分布式应用提供高效且可靠的分布式协调服务。ZooKeeper是一个典型的分布式数据一致性的解决方案。基于他可以实现数据的发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。

ZooKeeper的分布一致性特征如下。

  • 顺序一致性

    同一客户端发起的事务请求,会按照发起顺序在ZooKeeper执行。

  • 原子性

    事务请求处理的结果在所有集群上都是相同的。

  • 单一视图

    无论客户端连接的是哪个ZooKeeper服务器,其数据模型一致。

  • 可靠性

    服务端成功执行一个事务,则该事务引起的服务端状态将会保留。

  • 实时性

    ZooKeeper仅仅保证在一段时间内,客户端可以从服务器读取到最新数据

1.2、为什么选择ZooKeeper

  1. ZooKeeper在性能、易用性、稳定性方面均达到到了工业级标准。

  2. ZooKeeper是开源的。

  3. ZooKeeper是免费的。

  4. ZooKeeoer得到广泛的应用。

    Hadoop、HBase、Storm、Dubbo等软件均使用ZooKeeper作为核心组件,用于分布式协调。

2、安装ZooKeeper

2.1、开发环境介绍

楼主使用VMware安装的虚拟机,虚拟机系统是CentOS 7的系统。在虚拟机中安装的Docker,所以使用Docker安装ZooKeeper镜像。

2.2、单机部署

2.2.1、ZooKeeper的配置文件zoo.cfg。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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=/data
dataLogDir=/datalog
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

server.1=192.168.56.101:2881:3881

配置文件的配置选项含义:

  • tickTime:配置Zookeeper中最小事件单元的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的。例如,Zookeeper中会话的最小超时时间默认是2*tickTime。
  • initLimit :该参数用于配置Leader服务器等待Follower启动,并完成数据同步的时间,默认值10,表示该时间是参数tickTime值的10倍。
  • syncLimit: 用于配置Leader服务器和Follower之间进行心跳检测的最大延时时间。
  • dataDir: Zookeeper服务器存储快照文件的目录。
  • dataLogDir: dataLogDir用于配置Zookeeper服务器存储事务日志文件的目录。
  • clientPort: clientPort用于配置当前服务器对外的服务器端口,客户端会通过该端口和Zookeeper服务器创建连接,一般设置为2181。每台Zookeeper服务器都可以配置任意可用的端口,同时,集群中的所有服务器不需要保持clientPort端口一致。
  • server.id=host:port2:port3:id被称为ServerID,用来标识该机器在集群中的机器序号。第一个port表示 端口2用于选举leader,端口3用于集群内通讯使用(Leader会监听此端口) ,Zookeeper实例数应为大于等于3的奇数,如3、5、7…不宜太多。

2.2.2、通过Docker启动ZooKeeper

  1. 建立映射文件

    在虚拟机的路径下分别建立三个文件夹,conf、data、datalog文件夹,将设置好的zoo.cfg文件放入conf中,另外的两个文件夹保存ZooKeeper生成的快照文件和日志文件。

  2. 拉取文件,启动ZooKeeper。

    1
    2
    3
    4
    5
    6
    7
    8
    docker run --name zk1 --restart always \
    -v /mydata/zookeeper/zk1/data:/data \
    -v /mydata/zookeeper/zk1/datalog:/datalog \
    -v /mydata/zookeeper/zk1/conf/zoo.cfg:/conf/zoo.cfg \
    -p 2181:2181 \
    -p 2881:2881 \
    -p 3881:3881 \
    -d zookeeper

2.3、集群部署

集群的部署和单机部署类似,不过需要在zoo.cfg文件的server.id=host:port2:port3配置其他的ZooKeeper应用的配置。


You forgot to set the qrcode for Alipay. Please set it in _config.yml.
You forgot to set the qrcode for Wechat. Please set it in _config.yml.
You forgot to set the business and currency_code for Paypal. Please set it in _config.yml.
You forgot to set the url Patreon. Please set it in _config.yml.

评论