1. Zookeeper了解
Zookeeper有能力实现集中配置的能力,举个例子,应用app1 做集群配置,配置3个节点,把app1的配置统一放置zookeeper server /APP1上,所有的app1应用启动就对节点/APP1进行监控,并实现回调方法Watcher,那么在/APP1上数据发生变化的时候,每个app应用节点就会收到通知,Watcher方法被执行,则app1的应用就可以实时得到修改的配置。
Zookeeper 自身可以做集群配置,可以预防由于单点故障导致的信息崩溃问题。
Zookeeper 数据结构类似标准的文件系统
[img]
[/img]
Zookeeper数据结构有如下这些特点:
1. 每个子目录项如 NameService 都被称作为 znode,这个 znode 是被它所在的路径唯一标识,如 Server1 这个 znode 的标识为 /NameService/Server1 |
2. znode 可以有子节点目录,并且每个 znode 可以存储数据,注意 EPHEMERAL 类型的目录节点不能有子节点目录 |
3. znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据 |
4. znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了 |
5. znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2 |
6. znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于这个特性实现的。 |
2. Zookeeper与redis比较
Zookeeper 不是一个通用的数据库或大型数据存储,而是管理协调数据,
结合软创系统的配置信息,配置信息量不会非常大,完全在可控范围内,同时需要稳定运行,消除单点宕机故障,读取速度不是太大的影响点,综上考虑采用zookeeper作为配置管理中心比较合适。
基于上面描述,使用zookeeper实现我们的配置中心是可行的
3. Zookeeper 安装及使用
3.1 安装(单机)
单机安装非常简单,具体步骤如下:
1. 使用zookeeper3.3.6版本,解压zookeeper-3.3.6.tar.gz至本地目录
2. 配置zoo.cfg(将自带的zoo_sample.cfg copy并改名为zoo.cfg)
# The number of milliseconds of each tick
#心跳时间,客户端与zookeeper server之间的心跳时间
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take 集群配置时,配置zookeeper接受客户端(客户端是指follower服务器,而不是client连接server的客户端) 初始化连接最长能接受的多少个心跳时间间隔数
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement 这个是集群配置时 follower与leader之间的请求应答时间
syncLimit=5
# the directory where the snapshot is stored. zookeeper保存数据目录
dataDir=D:/workspace/config-cache/zookeeper/zookeeper-3.3.6/data/zookeeper
# the port at which the clients will connect 客户端连接zookeeper server的端口
clientPort=2181
3. 启动zookeeper server
执行bin目录下zkServer.cmd
3.2 安装(集群)
配置zookeeper集群(或者在单机上配置伪集群)
本机设置集群,copy zookeeper-3.3.6 到另外一个目录
1. 设置hosts文件,设置server对应的ip
127.0.0.1 zkserver01
127.0.0.1 zkserver02
2. 修改配置文件zoo.cfg
#cluster config
server.1=zkserver01:2000:2001
server.2=zkserver02:2002:2003
解释一下上面的配置 server.1=zkserver01:2000:2001
1:表示第几号服务器,与myid中内容一致
zkserver01: 是server01 的ip地址,或者使用hosts中设置的主机名
2000:表示的是这个服务器与集群中的 Leader 服务器交换信息的端口
2001:表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口
另外,在zoo.cfg文件中,如果在同一台机器上设置集群,clientPort需要设置不同的端口号
3. 添加myid文件
在zoo.cfg 配置的dataDir路径下添加文件myid(文件名),文件内容就是上面的第几号服务器的值
4. 启动集群
执行server01 的zkServer.cmd
执行server02的zkServer.cmd
先执行的server01 在server02启动之前会抛出异常,随着server02启动之后趋于正常,异常可以忽略
3.3 使用demo
Demo中包含两个类Executor 和 DataMonitor 负责监听zookeeper某个节点,如果该节点数据发生变化,则dataMonitor会有所反应,然后把最新的data写入文件,并调用执行本地命令。
Zookeeper的watcher是单次有效,如果需要每次变化都能通知client,需要在client接受到变化之后再次注册watcher
if (path != null && path.equals(znode)) {
// Something has changed on the node, let's find out
zk.exists(znode, true, this, null);
}
Zookeeper中watcher概念及特性可以查阅zookeeperProgrammers.pdf文档
单机zkserver执行Executor 的时候设置args: zkserver01:2181 / F:/app/log.txt hostname
集群执行的时候设置的hostPort 略有不同,zkserver01:2181, zkserver02:3181 / F:/app/log.txt hostname
zookeeper-client.zip为java project ,解压后import 到workspace即可
分享到:
相关推荐
Zookeeper环境搭建
zookeeper环境搭建.md
linux下zookeeper集群环境搭建详细图文教程,简单易使用
Zookeeper伪分布式集群搭建描述伪分布式集群就是在一台机器部署多个zk应用,部署之前服务器需要有jdk环境 java -version可以显示相关java
详解Zookeeper伪分布式集群环境搭建过程
ZooKeeper分布式环境搭建详解 ZooKeeper是一个分布式协调服务,主要用于维护配置信息、命名、提供分布式同步和提供组服务等。在分布式系统中,ZooKeeper常被用作服务发现、分布式锁、领导选举等场景。下面将详细...
大数据综合实验环境搭建(3个集群、Zookeeper、Hive、HBase)
windows环境下zookeeper集群搭建,分别点击zookeeper目录下的bin\zkServer.cmd;java测试节点,删除和查询节点;
需要三台机器安装zookeeper集群:安装JDK环境、安装部署zookeeper集群、启动zookeeper集群、修改配置
Zookeeper单机环境和集群环境搭建
通过VirtualBox安装多台虚拟机,实现集群环境搭建。 优势:一台电脑即可。 应用场景:测试,学习。 注意事项:请严格按照文档操作,作者已经按照文档操作实现环境搭建。 内附百度网盘下载地址,有hadoop+zookeeper+...
本文档详细介绍了如何用ZooKeeper和Hadoop、HBase搭建分布式大数据分析平台。
最新版Zookeeper在CentOS下的开发环境搭建,分为单机环境和集群环境两种情况。其它信息可以参考我的博客:https://blog.csdn.net/lianghecai52171314
zookeeper+Dubbo环境搭建所需工具
8.ZooKeeper运行环境搭建.md
Linux Centos7 环境搭建Docker部署Zookeeper服务实战
Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6 搭建分布式集群环境详解。 详细介绍了如何搭建分布式集群环境。
ZooKeeper的分布式环境搭建通常涉及以下几个步骤: 准备工作: 确保你的服务器或虚拟机已经安装了JDK,因为ZooKeeper是基于Java开发的。 下载ZooKeeper的官方安装包,可以从ZooKeeper的官方网站获取。 安装...
这个是我自己使用centerOS真实搭建的实践积累,文档包含了zookeeper伪集群和集群的搭建操作方法,还有截图和linux命令。这是实践积累,平常实操点内容并使用文档记录这些点滴,以免以后会忘记。