ZooKeeper 的设计理念和架构



2 ZooKeeper:因为协调分布式系统是一个动物园

ZooKeeper是一种针对分布式应用程序的高性能协调服务。它在一个简单的接口中公开了常见的服务——例如命名、配置管理、同步和组服务——因此您不必从头开始编写它们。您可以使用它来实现共识、组管理、领导人选举和到场协议。你可以在此基础上为你自己的特定需求而建。

2.1 ZooKeeper Overview:为客户端开发人员、管理员和贡献者提供的技术概述文档。

2.1.1 Overview:ZooKeeper 的鸟瞰图,包括设计理念和建筑。

ZooKeeper是一个开源的分布式应用程序协调服务。它公开了一组简单的原语,分布式应用程序可以在这些原语的基础上实现更高级别的服务,用于同步、配置维护、组和命名。它被设计为易于编程,并使用了一个数据模型,其风格类似于文件系统的目录树结构。它运行在Java中,并具有Java和C的绑定

众所周知,协调服务很难做好。它们特别容易出现竞争条件和死锁等错误。ZooKeeper背后的动机是减轻分布式应用程序从零开始实现协调服务的责任。

2.1.1.1 设计目标(Design Goals)

ZooKeeper is simple. ZooKeeper允许分布式进程通过与标准文件系统组织类似的共享层次命名空间相互协调。名称空间由数据寄存器(用ZooKeeper的话说,称为znodes)组成,这些寄存器类似于文件和目录。与设计用于存储的典型文件系统不同,ZooKeeper数据保存在内存中,这意味着ZooKeeper可以实现高吞吐量和低延迟数。

ZooKeeper实现非常重视高性能、高可用性和严格有序的访问。ZooKeeper的性能方面意味着它可以用于大型分布式系统。可靠性方面使其不会成为单点故障。严格的顺序意味着可以在客户机上实现复杂的同步原语。

ZooKeeper is replicated. 和它所协调的分布式进程一样,ZooKeeper本身也打算在一组称为合集的主机上进行复制。
在这里插入图片描述
组成ZooKeeper服务的服务器必须相互了解。它们在持久存储中维护状态的内存映像以及事务日志和快照。只要大多数服务器可用,ZooKeeper服务就可用。

客户机连接到单个ZooKeeper服务器。客户机维护一个TCP连接,通过它发送请求、获取响应、获取监视事件和发送心跳。如果到服务器的TCP连接中断,客户机将连接到另一台服务器。

ZooKeeper is ordered. ZooKeeper给每个更新贴上一个数字,这个数字反映了所有ZooKeeper事务的顺序。后续操作可以使

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值