Zookeeper 学习(粗略,仅供了解)

来源:互联网 发布:有声漫画软件 编辑:程序博客网 时间:2024/04/28 23:43

zookeeper环境搭建起来比较简单,困难的是集群部署,和在现实工作中的应用。

下面我根据自己的搭建和网上搜罗的一些资料总结一下,如有雷同,纯属巧合。

有错误可在评论区说,我可更新哈。

1、本地windows环境 zookeeper部署,发现一篇好文,这方面的,仅供参考(click me)

单机单server部署简单,官网或其他网站上down下来相应zip包,解压可用,可参考(click me),网上也有许多例子,可以自己看。

这里专门写一下这个是想让大家避开一些坑。

虽然前段时间在本机搭建了linux虚拟机,不过想部署zookeeper还得安装jdk啥的,闲麻烦,干脆在本机windows环境下部署,下面是需要注意的几个方面:

a、单机部署需要把能启动的zookeeper包复制几份,不可能在单独一个上启动好几个,注意改文件名

b、注意改每个文件的config文件,分别属于不同的port,和单机不同的是还要加上server,还有myid文件,设置节点,数字和leader有关。myid文件不要后缀,里面只有一个数字,关于如何在windows 下显示后缀可参考 link

c、不要怕报错!不要怕报错!不要怕报错! 当部署集群的时候,我们肯定一个个启动,当启动第一个的时候,会连不上没启动的zk,仔细观察log信息,反正我在这个坑上困扰了1、2个小时,怎么调试都不行,后来上个厕所仔细看了下错误信息才反应过来

d、最重要的一点,个人觉得zk不是很稳定,我部署的3个zk,其中conf文件些许不同(其中一个做实验去掉一些注释,可能有别的作用我没注意的删了),死活起不来这个,别的就好使(这个问题也困扰了我好久,以后有空再看看吧),醉了,反正除非必要,保持conf文件一致性,就这样。

2、典型使用场景,详情可参看(转载)

a、数据发布与订阅:包括索引信息和集群中及其节点状态存放在zk的一些指定节点,供给客户端订阅使用;系统日志;应用中用到的一些配置信息集中管理,在有更新的时候实时通知;业务中用到的一些全局变量;系统中需要动态获取的信息,如jmx接口。

b、作为分布式命名服务

c、分布式协调:实现分布式环境下,不同系统之间的通讯

d、分布式锁:一个zk server 上的相同znode的数据是相同的

e、集群管理:

f、分布式队列

3、基本工作原理和工作流程(转载)

zookeeper主要分为三个个部分,分别是leader,learner,client

而其中learner,分为follower 和 observer

每个客户端可以连接集群中的任何一个节点,同时从节点上读取信息,但是如果出现write操作,flower节点不会处理,而是转发给leader,由leader负责广播,从而实现各个节点的数据一致性,当大半广播完成的时候,意味着此次更新行为完成,因此zk的一致性不是强一致性而是最终一致性,但是客户可以使用sync()方法来强制读取最新数据。