分布式服务框架:Apache ZooKeeper 3.6.1

ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

Zookeeper是Google的Chubby一个开源的实现.是高有效和可靠的协同工作系统.Zookeeper能够用来leader选举,配置信息维护等.在一个分布式的环境中,我们需要一个Master实例或存储一些配置信息,确保文件写入的一致性等.Zookeeper能够保证如下3点:

  • Watches are ordered with respect to other events, other watches, and
    asynchronous replies. The client libraries ensures that
    everything is dispatched in order.
  • A client will see a watch event for a znode it is watching before seeing the new data that corresponds to that znode.
  • The order of watch events from corresponds to the order of the updates as seen by the service.

 

在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);
  2. 总服务器可以从Zookeeper中获取一个znode的子节点的列表,zk.getChildren(“/search/nodes”, true);
  3. 总服务器遍历这些子节点,并获取子节点的数据生成提供搜索引擎的服务器列表.
  4. 当总服务器接收到子节点改变的事件信息,重新返回第二步.
  5. 总服务器在Zookeeper中创建节点,zk.create(“/search/master”, “hostname”.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);
  6. 备用的总服务器监控Zookeeper中的”/search/master”节点.当这个znode的节点数据改变时,把自己启动变成总服务器,并把自己的网络地址数据放进这个节点.
  7. web的cgi从Zookeeper中”/search/master”节点获取总服务器的网络地址数据并向其发送搜索请求.
  8. web的cgi监控Zookeeper中的”/search/master”节点,当这个znode的节点数据改变时,从这个节点获取总服务器的网络地址数据,并改变当前的总服务器的网络地址.

 

此版本是3.6 分支的第二个版本,也是一个 bugfix 版本,修复了针对 ZooKeeper 3.5 构建的应用程序有关的一些兼容性问题。从 3.5.7 升级到 3.6.1 像往常一样执行即可,无需特别的附加升级程序。只要不使用 3.5 中不存在的新 API,ZooKeeper 3.6.1 客户端与 3.5 服务器兼容。

新特性

  • ZOOKEEPER-3689 – zkCli/ZooKeeperMain 依赖系统属性来进行 TLS 配置
  • ZOOKEEPER-3712 – 为 NIOServerCnxn 添加 setKeepAlive 支持

改进

详情查看 https://zookeeper.apache.org/doc/r3.6.1/releasenotes.html

下载地址:

https://zookeeper.apache.org/releases.html#download

人已赞赏
博客开发工具

MKV 视频编辑工具:MKVToolNix v46.0.0

2020-5-5 13:15:30

企业应用开发工具

基于laravel+reactjs实现的类Jira的问题需求跟踪工具:ActionView 1.11.0

2020-5-6 10:54:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索