Zookeeper的名字由来
在apache上的许多开源项目都是以动物形象作为icon,比如tomcat就是一只猫,hive是只黄蜂等,zookeeper的工作就是把这些动物的行动进行协调
Zookeeper的简介
zookeeper就是一种用于分布式应用程序的高性能协调服务,它的特点就是数据是存于内存中的,持久化实现在日志中。它的内存类似于树形结构,且高吞吐低延迟,可以帮助我们实现分布式统一配置中心,服务注册,分布式锁等
组成ZooKeeper服务的服务器必须彼此了解。它们维护内存中的状态图像,以及持久性存储中的事务日志和快照。只要大多数服务器可用,ZooKeeper服务就可用。客户端连接到单个ZooKeeper服务器。客户端维护TCP连接,通过该连接发送请求,获取响应,获取监视事件以及发送tick。如果与服务器的TCP连接中断,则客户端将连接到其他服务器。
如果别人/面试官让你讲讲 ZooKeeper 是什么,你能回答到哪个地步呢?
想了半天,脑海中只是简单的能浮现出几句话:
- Zookeeper 可以被用作注册中心。
- Zookeeper 是 Hadoop 生态系统的一员。
- 构建 Zookeeper 集群的时候,使用的服务器最好是奇数台。
可见,我对于 Zookeeper 的理解仅仅是停留在了表面。所以,通过本书,希望带大家稍微详细的了解一下 ZooKeeper 。
目录
主要内容
第一部分 ZooKeeper的概念和基础
第一部分阐述了Apache ZooKeeper这类系统的设计目的和动机,并介绍分布式系统的一些必要背景知识。
第1章介绍了ZooKeeper可以做什么,以及其设计如何支撑这些任务。
第2章介绍了基本概念和基本组成模块,并通过命令行工具的具体操作介绍ZooKeeper可以做什么。
第二部分 使用ZoopKeeper进行开发
第二部分阐述程序员所需要掌握的ZooKeeper库调用方法和编程技巧,虽然对系统运维人员来说也有一定价值,但也可以不选择阅读。这一部分主要以Java语言的API为主,因为Java是非常流行的开发语言,如果你之前使用其他开发语言,可以通过这一部分内容来学习基本的技术和方法调用,之后通过其他语言来实现。另外,我们也为C语言的应用开发人员提供了一章内容的开发方法。
第3章介绍Java语言的API。
第4章解释如何跟踪和处理ZooKeeper中的状态变更情况。
第5章介绍如何在系统或网络故障时恢复应用。
第6章介绍为了避免故障要注意的一些繁杂却很重要的场景。
第7章介绍C语言版的API,该章也可以作为非Java语言实现的ZooKeeper API的基础,对非Java语言的开发人员非常有帮助。
第8章介绍一款更高层级的封装的ZooKeeper接口。
第三部分 ZooKeeper的管理
第三部分主要适用于ZooKeeper的系统运维人员,尤其在第9章章中即便对开发人员也很有价值。
第9章介绍ZooKeeper的作者们在设计时所采用的方案,这些知识对运维管理非常有帮助。
第10章介绍如何对ZooKeeper进行配置。
总结
如果没有学过 ZooKeeper,那么本书将会是你进入 ZooKeeper 大门的垫脚砖;如果你已经接触过 ZooKeeper ,那么本文将带你回顾一下 ZooKeeper 的一些基础概念。
很多中间件,比如Kafka、Hadoop、HBase,都用到了 Zookeeper,于是很多人就会去了解这个 Zookeeper 到底是什么,为什么它在分布式系统里有着如此无可替代的地位。
在踩了很多坑之后,我决定来回答下这个问题。
其实学任何一项技术,首先都要弄明白,为什么需要这项技术。