ZooKeeper 概述

http://zookeeper.apache.org/doc/r3.4.5/zookeeperOver.html

ZooKeeper:用于分布式应用的分布式协同服务

Zookeeper 是分布的、开源的分布式协同服务。它提供了几个简单的原语,分布式应用可以基于这些原语来实现高层的服务,以实现同步、配置管理、grougs and naming (这个怎么翻译?)。Zookeepr 的设计目标是易于编程,并采用类似于文件系统的目录树结构这样一种风格的数据模型。ZooKeeper 运行于 Java 上并提供 Java 和 C 访问接口。

协同服务很难正确地实现,他们很容易由于竞争条件或死锁等原因而出错。Zookeeper 的动机就是减轻分布式应用实现协同服务的难度。

设计目标

Zookeeper 必须简单:Zookeeper 允许分布式应用通过一个共享的层次式的名字空间(其结果类似标准文件系统)来来彼此协同。这个名字空间由数字节点 znode 组成,znode 就如同目录或文件,不同的是文件系统用来存储,而 Zookeeper 的数据保持在内存里面,这意味着 Zookeeper 可以做到高吞吐量和低延迟。

Zookeepr 的实现强调高性能、高可用性、严格有序访问。高性能的特征符合大规模分布式系统的要求;高可靠性的特征保证 Zookeeper 不会成为单点故障;严格有序意味着高等的同步原语可以在客户端实现。

ZooKeeper 复制:Zookeeper 在多台机器上(组成一个 ensemble)复制数据;提供 Zookeeper 服务的多台服务器必须相互知道对方的地址。他们维护状态的内存映像,并在持久化存储中维护事务日志和快照。只要超过半数的服务器存活,ZooKeeper 就可以提供服务。

客户端连接到一台 ZooKeeper 服务器,维持 TCP 连接以发送请求、获取响应、得到观察事件、发送心跳信号。如果 TCP 连接中断,客户端连接到另一台服务器。

ZooKeeper 保证有序:Zookeeper 给每个更新赋予一个数字戳以反映其在所有事务中的顺序。这个序号可以用于实现更高级的抽象,如同步原语。

ZooKeeper 强调速度:尤其是在读主导的负载类型中。Zookeeper 应用可以运行在数以千计的机器上,在读多于写的场景中,读写比为 10:1 时性能最好。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值