Zookeeper基本知识

1 Zookeeper概述

Zookeeper是一个开源的,为分布式应用提供协调服务的项目。

1.1 工作机制

从设计模式角度来看,zookeeper是一个基于观察者模式设计的分布式服务管理框架。负责存储和管理元数据等信息。它接受观察者的注册,一旦数据发生变化,zookeeper会通知这些观察者,并作出反应。

1.2 特点
  1. 一个领导者leader,多个跟随着follower组成的集群。(和kafka分区类似)
  2. 集群只要有半数以上的节点存活,zookeeper集群就正常服务
  3. 全局数据一致,每个server保存一份相同的数据副本
  4. 数据更新原子性
  5. 实时性,客户端能读取最新数据
  6. 来自一个客户端的请求顺序执行
1.3 数据结构

整体上可以看作一棵树,每个节点称作znode,每一个znode可以存储1MB的数据,通过路径可以唯一标识。

2 应用场景

2.1 统一命名服务

对分布式系统的服务器统一命名,便以识别。

2.2 统一配置管理

对配置文件统一管理,每个节点的配置文件修改为一致,比如kafka集群。

2.3 服务器节点动态上下线

客户端实时观察服务器上下线的变化。

2.4 软负载均衡

在zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求。

3 本地安装

本地安装用于测试。安装zookeeper前,需要先安装jdk。

  • 将zookeeper安装包拷贝到相应目录
  • 解压安装包
  • 修改配置文件zoo.cfg,设置存储数据目录
bin/zkServer.sh start//启动zookeeper
bin/zkServer.sh status//查看zookeeper状态
bin/zkCli.sh//启动客户端
bin/zkServer.sh stop//关闭zookeeper
3.1 配置参数
  1. tickTime=2000,服务器之间或客户端与服务器之间维持心跳的时间间隔,每过2000毫秒发送一个心跳
  2. initLimit=10,初始通信实现,领导者和跟随者初始连接时能容忍的心跳数
  3. syncLimit=5,同步通信时限,响应时间超过,则领导者认为跟随着死亡,从服务器列表删除follower
  4. dataDir,保存数据的目录
  5. clientPort=2181,客户端连接端口

猜你喜欢

转载自www.cnblogs.com/chenshaowei/p/12600321.html