写点什么

Zookeeper 入门基础

  • 2022 年 6 月 18 日
  • 本文字数:1483 字

    阅读完需:约 5 分钟

Zookeeper入门基础

​一、前言

       在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。如果在创建znode时 Flag 设置为EPHEMERAL,那么当创建这个 znode 的节点和Zookeeper失去连接后,这个znode将不再存在在 Zookeeper 里,Zookeeper 使用 Watcher 察觉事件信息。当客户端接收到事件信息,比如连接超时、节点数据改变、子节点改变,可以调用相应的行为来处理数据。Zookeeper 的 Wiki 页面展示了如何使用 Zookeeper 来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交。

      那么Zookeeper能做什么事情呢,简单的例子:假设我们有 20 个搜索引擎的服务器(每个负责总索引中的一部分的搜索任务)和一个总服务器(负责向这 20 个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕机时替换总服务器),一个 web 的cgi(向总服务器发出搜索请求)。搜索引擎的服务器中的 15 个服务器提供搜索服务,5 个服务器负责生成索引。这 20 个搜索引擎的服务器经常要让正在提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以搜索提供服务了。使用Zookeeper可以保证总服务器自动感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,当总服务器宕机时自动启用备用的总服务器。web 的cgi能够自动地获知总服务器的网络地址变化。这些又如何做到呢?

  1. 提供搜索引擎的服务器都在Zookeeper中创建znode,zk.create("/search/nodes/node1",

"hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

  1. 总服务器可以从Zookeeper中获取一个znode的子节点列表,zk.getChildren("/search/nodes", true);

  2. 总服务器遍历这些子节点,并获取子节点的数据生成提供搜索引擎的服务器列表。

  3. 当总服务器接收到子节点改变的事件信息,重新返回第二步。

  4. 总服务器在Zookeeper中创建主节点,zk.create("/search/master", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

  5. 备用的总服务器监控Zookeeper中的"/search/master"节点。当这个znode的节点数据改变时,把自己启动变成总服务器,并把自己的网络地址数据放进这个节点。

  6. web 的 cgi Zookeeper中"/search/master"节点获取总服务器的网络地址数据并向其发送搜索请求.

  7. web 的 cgi 监控Zookeeper中的"/search/master"节点,当这个 znode 的节点数据改变时,从这个节点获取总服务器的网络地址数据,并改变当前的总服务器的网络地址。

 

二、需要运行几个 ZooKeeper?

      你运行一个zookeeper也是可以的,但是在生产环境中,你最好部署 3,5,7 个节点。部署的越多,可靠性就越高,当然最好是部署奇数个,偶数个不是不可以的,但是zookeeper集群是以宕机个数过半才会让整个集群宕机的,所以奇数个集群更佳。你需要给每个zookeeper 1G 左右的内存,如果可能的话,最好有独立的磁盘。 (独立磁盘可以确保 zookeeper 是高性能的。).如果你的集群负载很重,不要把 Zookeeper 和 RegionServer 运行在同一台机器上面。就像DataNodes 和 TaskTrackers一样。

 三、Apache ZooKeeper 入门

http://www.huomo.cn/sysapp/article-19c2e.html


zookeeper-web - 在线 zookeeper 管理工具

zookeeper-web: zookeeper-web - 在线 zookeeper管理工具


ZooKeeper 开发手册中文翻译

ZooKeeper开发手册中文翻译 - __steve__的个人页面 - OSCHINA - 中文开源技术交流社区


使用 RMI + ZooKeeper 实现远程调用框架

使用 RMI + ZooKeeper 实现远程调用框架 - 黄勇 - OSCHINA - 中文开源技术交流社区

 

zookeeper 简单的代码 demo

zookeeper 简单的代码demo - 大美女页面 - OSCHINA - 中文开源技术交流社区

发布于: 刚刚阅读数: 4
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
Zookeeper入门基础_zookeeper_No Silver Bullet_InfoQ写作社区