写在前面
最开始认识zookeeper是在工作一年左右的时候,当时项目中引进了kafka,于是乎就按照网上kafka的“helloworld”搭建了一套测试环境,kafka的分布式管理是通过zookeeper实现的,就这样算是和zookeeper初相识,之后在网上搜罗了一堆关于zk的文章,看的也是云里雾里!
期间领导也曾让我尝试看能不能把我们已有的项目通过zk搞成分布式的,当时感觉好难,于是乎便用LVS+keepalive做的无状态的集群,也算是实现了领导的意图!
又见zookeeper
一年多之后,接触的东西越来越多,对技术的研究有了一定深度之后,比如:kafka、Hbase以及我司自己搭建的基于thrift+zk实现的分布式集群,对zk便有了进一步的认识,现在来看,发现zk并不是那么的神秘,其原语集非常的简单,数据结构也很容易理解,当然zk本身的高可用以及涉及到事务及数据的版本控制略有复杂,但实际应用中,这些内容似乎也并不是拦路虎,当遇见的时候,去研究,发现也并不是很难理解,最起码比研究数据库的事务、锁等要简单一点。
zookeeper的使用
本质上来讲,zookeeper就是存储数据用的,特点是只能存储小数据,一般不能超过1M,另一个关键特点,也是其优势所在,就是zk本身实现了高可用,也就是使用zk存储数据,容错性特别强。
在这里为了大家尽快上手,就不对zk的高可用以及容错性等原理做介绍了,直接介绍zk的原语集;
-
创建/删除节点
-
遍历节点(类似于树的遍历)
-
获取节点数据
-
订阅节点的变化(如节点的增删)
-
订阅节点数据的变化
对于想学习zk的各位猿媛,建议首先了解一下zk在kafka、Hbase等技术中是怎样使用的,并发挥了怎样的作用,这样认识zk会比较快!
关于zk客户端可以用多种语言实现,小编主攻java,相关的java源代码可以访问:letsgogo.top网站获取源码!
相关文章推荐: