Zookeeper是一个开源的分布式协调服务,目前由Apache进行维护。Zookeeper可以用于实现分布式系统中常见的发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。它具有以下特性:
在很多中间件,比如Kafka、Hadoop、HBase,都用到了 Zookeeper,因此它在分布式系统里有着无可替代的地位,而且Zookeeper有如下四大设计目标(简单的数据模型、构建集群、顺序访问、高性能高可用):
Zookeeper通过树形结构来存储数据,它由一系列被称为ZNode的数据节点组成,类似于常见的文件系统。不过和常见的文件系统不同,Zookeeper将数据全量存储在内存中,以此来实现高吞吐,减少访问延迟。
image.png
可以由一组Zookeeper服务构成Zookeeper集群,集群中每台机器都会单独在内存中维护自身的状态,并且每台机器之间都保持着通讯,只要集群中有半数机器能够正常工作,那么整个集群就可以正常提供服务。
image.png
对于来自客户端的每个更新请求,Zookeeper都会分配一个全局唯一的递增ID,这个ID反映了所有事务请求的先后顺序。
ZooKeeper将数据存全量储在内存中以保持高性能,并通过服务集群来实现高可用,由于Zookeeper的所有更新和删除都是基于事务的,所以其在读多写少的应用场景中有着很高的性能表现。
说了这么多,其实就是一句话:能不能整明白分布式系统,ZooKeeper真的是太太重要了!
这几天在学习的时候整理了一些ZooKeeper的学习资料和笔记,个人认为还是不错,想着资源共享学习,今天就拿出来看看,相信对你而言还是有些学习价值的。
注意:以下介绍《ZooKeeper-分布式过程协同技术详解》《ZK开发手册》《ZK面试:27连问》因为篇幅的限制,基本上是指对内容做一个大概的介绍以及目录和一些内容的截图展示,不过都是有整理原文件的,感兴趣的朋友可直接点击“ZK” 获取免费下载的方式啦!
本书适用于分布式系统的开发人员,以及使用ZooKeeper进行生产经营的应用程序运维人员。我们假设读者具备Java语言的知识,并且本书为读者提供了关于分布式系统中概念的大量背景知识,以便你更好地使用ZooKeeper。
ZooKeeper-分布式过程协同技术详解目录.png
第一部分阐述了Apache ZooKeeper这类系统的设计目的和动机,并介绍分布式系统的一些必要背景知识。
第二部分阐述程序员所需要掌握的ZooKeeper库调用方法和编程技巧,虽然对系统运维人员来说也有一定价值,但也可以不选择阅读。这一部分主要以Java语言的API为主,因为Java是非常流行的开发语言,如果你之前使用其他开发语言,可以通过这一部分内容来学习基本的技术和方法调用,之后通过其他语言来实现。另外,我们也为C语言的应用开发人员提供了一章内容的开发方法。
第三部分主要适用于ZooKeeper的系统运维人员,尤其在第9章章中即便对开发人员也很有价值。
ZooKeeper-分布式过程协同技术详解.png
这本ZK开发手册总共有19章,前两章是一些简介介绍,这里就不做过多的解释的了,重点在于后面的17章,一起来看看吧。
ZK开发手册.png
第3,4,5,6,7章分别是:基础、组件活动周期、事件监听及处理、ZK用户界面标记语言
image.png
第8,9,10,11,12,13,14,15,16章分别是数据绑定、在ZUML中使用XHTML组件集、宏组件、高级特性、性能提示、其他设备和输出格式、国际化、数据库连接、整合Hibernate
image.png
最后三章:17,18,19章分别是整合Spring、Portal整合、ZK之外
image.png
image.png
ZK面试:27连问答案.png
能不能整明白分布式系统,关键在于你对Zookeeper理解有多深,咱们今天分享的ZK知识就这么多,如果你没有这些笔记与资料去学习,小编这里可以免费分享给你,直接 点击“ZK” 领取下载原文件《ZooKeeper-分布式过程协同技术详解》《ZK开发手册》《ZK面试:27连问》的方式!!