Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.
这里是zookeeper官网的第一段话。也解释了zookeeper的作用。
zookeeper作为协调服务,用我们的白话讲就是中间协调人。服务端把自己想发布出去的服务交给zookeeper,当然是按照zookeeper的规矩来办事。客户端想要去拿服务端发布的服务,它也必须向zookeeper去申请订阅。如果有一天服务端更新了自己的服务,zookeeper也会通知客户端。如果有一天客户端没有拿到服务端服务,服务端有点事当天没有上班或者服务端发了消息给客户端,但是客户端有点事没上班等等。这些事情,zookeeper都有相应的策略和处理方法。这样一来,服务端和客户端就比较轻松了,它们就只要发布和订阅服务就行了。其他的交给中间协调人zookeeper。
那到底zookeeper是什么样子的呢?
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
我们先说说zookeeper整体框架:
我们就从客户端,服务端,数据这三个大的方向入手,来看看zookeeper的工作原理。
今天我们只谈服务端。
先下载zookeeper服务包,登陆https://zookeeper.apache.org/官网。
我下载的是3.4.10 stable。进入 zookeeper-3.4.10\bin 目录下,win环境双击 zkServer.cmd。
第一次没有启动成功,编辑 zkServer.cmd 加入 pause 命令。
再启动一次,看到了错误信息。
conf\zoo.cfg file is missing。找不到 zoo.cfg 文件。
我们去conf看看。
将 zoo_sample.cfg 改成 zoo.cfg,再重启一次。
启动正常,默认端口 2181。
我们通过 zkCli 来连接服务端,看看服务端默认数据结构是什么样子。
默认数据节点 zookeeper ,ls 也就是 list 的意思。ls2 是详细列出。
/ 根目录,zookeeper 就是 / 目录的一个子节点。
所有的节点都是一个 Znode , Znode 中包含的属性就是上图所展示的。具体的属性含义及作用我们在数据的章节再讲。
再来看看 zookeeper 节点中有什么。
quota 节点,这个是 zookeeper 节点的子节点。
quota 节点下面没有子节点,具体 quota 节点做什么用的呢?后面数据章节再讲吧。
好啦,今天到这里,关于服务端还有很多的东西可以讲,例如启动流程,数据存储,负载均衡等。我们慢慢来吧,和大家一起成长。
zookeeper源码学习(一)
最新推荐文章于 2024-08-13 18:17:31 发布