Zookeeper简介

1 简介

从设计模式上来说,Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者,并让他们做出相应的反应

  • 通俗的来说,Zookeeper就是一个文件系统+通知机制
  • 具体的功能
    • 服务器启动时去注册信息
    • 客户端会获取当前在线服务器列表,并且注册监听
    • 服务器节点下线或者上线,他会通知给客户端
      在这里插入图片描述

2 特点

  • 一主多从:一个leader,多个follower
    • 保证高效率,因为可以访问多个follower,不用都去访问leader
  • 集群中只要有半数以上节点存活,Zookeeper集群就能正常服务,所以Zookeeper适合安装奇数服务器
  • 全局数据一样:每个server保存一份相同的数据,Client无论连接到哪个server,数据都是一致的
  • 更新请求顺序执行,来自同一个client的更新请求按其发送数据一次执行
  • 数据更新原子性,一次数据更新要么成功,要么失败
  • 实时性,在一定时间内,Client能读到最新数据

3 数据结构

Zookeeper数据结构与Unix文件系统类似,整体上可以看作是一棵树,每个节点称做是一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识

  • 所以不适合存储海量数据
    在这里插入图片描述

4 应用场景

提供的服务:统一命名服务,统一配置管理,统一集群管理,服务器节点动态上下线,软负载均衡

4.1 统一命名服务

    • 在分布式环境下,经常需要对应用/服务进行统一命名,便于识别
    • nginx也是这样

在这里插入图片描述

4.2 统一配置管理

    • 分布式环境下,配置文件同步非常常见
      • 一般要求一个集群中,所有节点的配置信息是一致的,比如kafka集群
      • 对配置文件修改后,希望能够快速同步到各个节点上
    • 配置管理可交由ZooKeeper实现
      • 可将配置信息写入ZooKeeper上的一个Znode
      • 各个客户端服务器监听这个Znode
      • 一旦Znode中的数据被修改,ZooKeeper将通知各个客户端服务器
        在这里插入图片描述

4.3 统一集群管理

    • 分布式环境中,实时掌握每个节点的状态是必要的
      • 可根据节点实时状态做出一些调整
    • ZooKeeper可以实现实时监控节点状态变化
      • 可将节点信息写入ZooKeeper上的一个Znode
      • 监听这个Znode可获取它的实时状态变化
        在这里插入图片描述

4.3 服务器动态上下线

客户端能实时洞察到服务器上下线的变化

4.4 软负载均衡

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

5 官方网站

ZooKeeper官网
稳定版本为zookeeper-3.5.7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值