Zookeeper你应该了解基础知识

Apache ZooKeeper是一个分布式的协调服务,提供一致性复制和存储,常用于同步服务、配置维护和命名服务。其数据模型类似文件系统,采用树形结构,支持顺序和临时节点,具有高吞吐、低延迟、高可用和严格有序访问的特点。Zookeeper通过Zab协议保证事务顺序一致性,并使用WAL和Snapshot进行数据持久化。常见应用场景包括数据发布订阅、分布式锁和集群管理。
摘要由CSDN通过智能技术生成

简介

Apache ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,由Client和Server构成,Server提供了一致性复制和存储服务,Client包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。ZooKeeper的设计非常易于编程,ZooKeeper维护着一个hierarchal(层次)的名字空间,它采用树形的数据结构,类似于标准文件系统。因为想要从零实现一个分布式协作服务是非常难的。最常见的问题就是竞争条件和死锁。Apache ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

 

Zookeepr的数据都存放在内存中(更新数据也会持久化到磁盘),所以它的吞吐量会非常高,同时延迟会很低。ZooKeeper的实现更重视high performance(高性能), highly available(高可用性), strictly ordered access(严格有序访问)。Zookeeper性能方面的表现让它能够用于大型分布式系统,高可用性可以避免出现单点故障,严格有序访问可以让Client实现复杂的同步原语。

 

Zookeeper系统模型

上图的哪些Server组成了Zookeeper服务,每个Server都知道彼此的存在。这些server在内存中保持着状态的镜像,还通过transaction logs和快照持久到硬盘中。只要集群中多数Server可访问,那么ZooKeeper服务就可用。

Clients会连接到某一个ZooKeeper Server上。Client和Server保持一个TCP长连接,通过该TCP长连接,Client可以发送请求,得到response,得到watch event,还有发送心跳(客户端和服务端通过心跳来保持连接,即session)。如果和Server的TCP长连接断了,那么Client就会连接到另外一个Server上。

 

Zookeeper是有序的:Zookeeper用stamps(数字)作为所有事务的顺序。

Zookeeper是非常快的:特别是以读为主的情况下,Zookeeper应用程序可以运行在数千台机器上,它性能表现最佳的是在读写比率为10:1的情况下。

 

Zookeeper数据模型

ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),下面说

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值