2.ZooKeeper介绍2.1.ZooKeeper来历
即将介绍ZooKeeper之前,我们先来瞧瞧ZooKeeper的来历,还挺有意思的。
下边这段内容摘自《从Paxos到ZooKeeper》第四章第一节,推荐你们阅读一下:
ZooKeeper最起床始于雅虎研究院的一个研究小组。在当时,研究人员发觉,在雅虎内部好多小型基本都须要依赖一个类似的系统来进行分布式协调linux查看mysql版本,而且这种系统常常都存在分布式单点问题。所以,雅虎的开发人员就企图开发一个通用的无单点问题的分布式协调框架linux手机,便于让开发人员将精力集中在处理业务逻辑上。
关于“ZooKeeper”这个项目的名子,虽然也有一段轶闻。在立项早期linux查看mysql版本,考虑到之前内部好多项目都是使用植物的名子来命名的(比如知名的Pig项目),雅虎的工程师希望给这个项目也取一个植物的名子。时任研究院的首席科学家RaghuRamakrishnan开玩笑地说:“在这样下去,我们这里就弄成植物园了!”此话一出,你们纷纷表示就叫植物园管理员吧一一一由于各个以植物命名的分布式组件置于一起,雅虎的整个分布式系统看起来如同一个小型的鸟类园了,而ZooKeeper刚好要拿来进行分布式环境的协调一一于是,ZooKeeper的名子也就由此诞生了。
2.2.ZooKeeper概览
ZooKeeper是一个开源的分布式协调服务,它的设计目标是将这些复杂且容易出错的分布式一致性服务封装上去,构成一个高效可靠的谓词集,并以一系列简单易用的插口提供给用户使用。
子句:操作系统或计算机网路用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程。具有不可分割性·即谓词的执行必须是连续的,在执行过程中不容许被中断。
ZooKeeper为我们提供了高可用、高性能、稳定的分布式数据一致性解决方案,一般被用于实现例如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master补选、分布式锁和分布式队列等功能。
另外,ZooKeeper将数据保存在显存中,性能是极其棒的。在“读”多于“写”的应用程序中尤其地高性能,由于“写”会造成所有的服务器间同步状态。(“读”多于“写”是协调服务的典型场景)。
2.3.ZooKeeper特征2.4.ZooKeeper典型应用场景
ZooKeeper概览中,我们介绍到使用其一般被用于实现例如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master补选、分布式锁和分布式队列等功能。
下边选3个典型的应用场景来专门谈谈:
分布式锁:通过创建惟一节点获得分布式锁,当获得锁的一方执行完相关代码或则是死掉以后就释放锁。命名服务:可以通过ZooKeeper的次序节点生成全局惟一ID数据发布/订阅:通过Watcher机制可以很便捷地实现数据发布/订阅。当你将数据发布到ZooKeeper被窃听的节点上,其他机器可通过窃听ZooKeeper上节点的变化来实现配置的动态更新。
实际上,这种功能的实现基本都得益于ZooKeeper可以保存数据的功能,而且ZooKeeper不适宜保存大量数据,这一点须要注意。
2.5.有什么知名的开源项目用到了ZooKeeper?Kafka:ZooKeeper主要为Kafka提供Broker和Topic的注册以及多个Partition的负载均衡等功能。Hbase:ZooKeeper为Hbase提供确保整个集群只有一个Master以及保存和提供regionserver状态信息(是否在线)等功能。Hadoop:ZooKeeper为Namenode提供高可用支持。3.ZooKeeper重要概念剖析
忘词:掏出小笔记本,下边的内容十分重要哦!
3.1.Datamodel(数据模型)
ZooKeeper数据模型采用层次化的多叉树状结构,每位节点上都可以储存数据,这种数据可以是数字、字符串或则是二级制序列。而且。每位节点还可以拥有N个子节点,最下层是根节点以“/”来代表。每位数据节点在ZooKeeper中被称为znode,它是ZooKeeper中数据的最小单元。而且,每位znode都一个惟一的路径标示。
指出一句:ZooKeeper主要是拿来协调服务的,而不是拿来储存业务数据的,所以不要放比较大的数据在znode上,ZooKeeper给出的上限是每位结点的数据大小最大是1M。
从右图可以更直观地看出:ZooKeeper节点路径标示方法和Unix文件系统路径十分相像,都是由一系列使用斜杠"/"进行分割的路径表示,开发人员可以向这个节点中写人数据,也可以在节点下边创建子节点。这种操作我们前面还会介绍到。
3.2.znode(数据节点)
介绍了ZooKeeper树状数据模型以后,我们晓得每位数据节点在ZooKeeper中被称为znodelinux操作系统怎么样,它是ZooKeeper中数据的最小单元。你要储存的数据就放到前面,是你使用ZooKeeper过程中常常须要接触到的一个概念。
3.2.1.znode4种类型
我们一般是将znode分为4大类:
3.2.2.znode数据结构
每位znode由2部份组成:
最后
看完美团、字节、腾讯这三家的笔试问题,是不是觉得问的非常多,可能俺们又得开启笔试造快船、工作拧螺钉的模式去打算下一次的笔试了。
开篇有提到我而且足足背下了1000道题目,多少还是有点用的呢,我看了下,里面那些问题大部份都能从我背的题里找到的,所以明天给你们分享一下互联网工程师必备的笔试1000题。
注意:不论是我说的互联网笔试1000题,还是前面提到的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给诸位同学,直接戳这儿即可免费下载
互联网工程师必备的笔试1000题
并且从前面三家来看,算法与数据结构是必备不可少的呀,因而我建议你们可以去刷刷这本左程云大鳄专著的《程序员代码笔试手册IT名企算法与数据结构题目最优解》,上面近200道真实出现过的精典代码笔试题。
数据结构是必备不可少的呀,因而我建议你们可以去刷刷这本左程云大鳄专著的《程序员代码笔试手册IT名企算法与数据结构题目最优解》,上面近200道真实出现过的精典代码笔试题**。
本文原创地址://q13zd.cn/lzkmbbcpdzyh.html编辑:刘遄,审核员:暂无