本文主要是首先带着大家回顾一下zookeeper在大数据中的作用,然后给大家介绍一款zk的监控管理工具。
发布与订阅模型,即所谓的配置中心,顾名思义就是讲发布者将数据发布到zk节点上,共订阅者动态获取数据,实现配置的集中式管理和动态更新。例如,全局的配置信息,服务服务框架的地址列表就非常适合使用。
即软件负载均衡。最典型的是消息中间件的生产、消费者负载均衡。
常见的是发布者将自己的地址列表写到zookeeper的节点上,然后订阅者可以从固定名称的节点获取地址列表,链接到发布者进行相关通讯。
这个利用的是zookeeper的watcher注册和异步通知机制,能够很好的实现分布式环境中不同系统间的通知与协调,实现对数据变更的实时处理。
集群管理,比如在线率,节点上线下线通知这些。Master选举可以使用临时顺序节点来实现。
分布式锁,这个主要得益于zookeeper数据的强一致性,利用的是临时节点。锁服务分为两类,一个是独占锁,另一个是控制时序。
独占,是指所有的客户端都来获取这把锁,最终只能有一个获取到。用的是临时节点。
控制时序,所有来获取锁的客户端,都会被安排得到锁,只不过要有个顺序。实际上是某个节点下的临时顺序子节点来实现的。
zkui是zookeeper的一个web管理界面,可以对zookeeper进行CRUD操作。
github地址:
https://github.com/DeemOpen/zkui
编译环境官方要求是jdk7,但是浪尖这里jdk8正常运行。
浪尖使用的maven版本是mvn-3.3.3
mvn clean install
在执行结束之后,会在target目录下生成一个jar包
执行 vim config.cfg 添加如下配置 # zkui web页面访问端口 serverPort=9090 # zookeeper集群的IP地址和端口 zkServer=localhost:2181 # 设置登录zkui的用户名和密码,这里是默认值 userSet = {"users": [{ "username":"admin" , "password":"manager","role": "ADMIN" },{ "username":"appconfig" , "password":"appconfig","role": "USER" }]}
启动zkui也比较简单,可以直接执行
$ java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar
也可以使用nohup &是其变为后台进程
nohup java -jar target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar &
访问 http://localhost :9090即可看到以下界面:输入刚刚设置的用户名密码:admin/manager即可登录。
推荐阅读:
唠唠Zookeeper的观察者
基于zookeeper leader选举方式一
分布式服务框架 Zookeeper -- 管理分布式环境中的数据
Kafka源码系列之源码分析zookeeper在kafka的作用