一、zookeeper概述

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

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

  3. 使用Zookeeper作为注册服务注册中心时

    在这里插入图片描述

    每个服务节点向Zookeeper集群注册自己的信息。每个客户端从Zookeeper中获取到服务的节点信息。

    具体步骤如下:

    • 服务端在启动时去Zookeeper集群中注册信息(创建临时节点)
    • 客户端在启动时去Zookeeper集群中获取当前在线的服务列表,并注册监听
    • 如果服务端有一个节点下线,创建的临时节点也会被删除
    • Zookeeper集群通知所有监听的客户端服务端下线的事件
    • 客户端再重新获取在线的服务端列表,并添加监听。

    Zookeeper=文件系统+通知机制

  4. Zookeeper特点

    先看下面的图

    在这里插入图片描述

    上面的图中,Zookeeper集群中有5个节点。

    • 一个Leader,多个Follower。
    • 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。(半数以上,只到一半也不能)
    • 全局数据一致,每个节点保存一份相同的数据副本,Client可以连接任意一个节点,数据都是一致的。
    • 针对每一个客户端的多次更新请求顺序执行
    • 数据更新原子性,一次数据更新要么成功,要么失败。
    • 实时性,在一定时间范围内,客户端能读取到最新的数据。
  5. Zookeeper数据结构

    Zookeeper数据模型的结构与Linux文件系统很类似,整体上可以看作是一颗树。

    树中的每个节点称做一个ZNode。

    每个ZNode默认能够存储1MB的数据。

    每个ZNode都可以通过其路径唯一标识。

    在这里插入图片描述

  6. Zookeeper应用场景

    • 统一命名服务

      在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。例如使用域名代替IP。

      在这里插入图片描述

    • 统一管理配置服务

      在分布式环境下,配置文件同步是非常常见的。

      在一个集群中,要求所有节点的配置是一致的。

      对配置文件修改后,希望能够快速同步到各个节点上。

      配置管理都可交由Zookeeper实现。

      在这里插入图片描述

      将配置信息写入Zookeeper上的一个ZNode中

      各个客户端监听这个ZNode

      一旦ZNode中的数据被修改,Zookeeper将通知各个客户端。

    • 统一集群管理服务

      分布式环境中,实时掌握每个节点的状态是很有必要的。

      可根据节点的实时状态做出一些调整

      将节点信息写入Zookeeper上的一个ZNode中,监听这个ZNode可以获取它的实时状态变化。

      在这里插入图片描述

    • 服务器节点动态上下线

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

    • 软负载均衡

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值