论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
zookeeper 根本原理-单机模式、集群模式
zookeeper 根本原理-单机模式、集群模式
半亩花草
论坛元老
|
2025-1-15 19:45:58
|
显示全部楼层
|
阅读模式
楼主
主题
1008
|
帖子
1008
|
积分
3024
单机模式
单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目次如:C:\zookeeper-3.4.5\下,Zookeeper 的启动脚本在 bin 目次下,Windows 下的启动脚本是 zkServer.cmd。
在你实验启动脚本之前,还有几个根本的配置项需要配置一下,Zookeeper 的配置文件在 conf 目次下,这个目次下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是将 zoo_sample.cfg 改名为 zoo.cfg,因为 Zookeeper 在启动时会找这个文件作为默认配置文件。下面详细介绍一下,这个配置文件中各个配置项的意义。
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=C:\\zookeeper-3.4.5\\data
dataLogDir=C:\\zookeeper-3.4.5\\log
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
复制代码
tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir:顾名思义就是 Zookeeper 保存数据的目次,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目次里。
dataLogDir:顾名思义就是 Zookeeper 保存日志文件的目次
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
当这些配置项配置好后,你现在就可以启动 Zookeeper 了,启动后要检查 Zookeeper 是否已经在服务,可以通过 netstat – ano 下令检察是否有你配置的 clientPort 端标语在监听服务。
集群模式
Zookeeper 不仅可以单机提供服务,同时也支持多机构成集群来提供服务。实际上 Zookeeper 还支持另外一种伪集群的方式,也就是可以在一台物理机上运行多个 Zookeeper 实例,下面将介绍集群模式的安装和配置。
Zookeeper 的集群模式的安装和配置也不是很复杂,所要做的就是增加几个配置项。集群模式除了上面的三个配置项还要增加下面几个配置项:
initLimit=5
syncLimit=2
server.1=192.168.211.1:2888:3888
server.2=192.168.211.2:2888:3888
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经高出 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返复书息,那么表明这个客户端连接失败。总的时间长度就是 5
2000=10 秒
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能高出多少个 tickTime 的时间长度,总的时间长度就是 2
2000=4 秒
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行推举,选出一个新的 Leader,而这个端口就是用来实验推举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,以是差别的 Zookeeper 实例通信端标语不能一样,以是要给它们分配差别的端标语。
除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目次下,这个文件内里就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到内里的数据与 zoo.cfg 内里的配置信息比较从而判定到底是谁人 server。
数据模子
Zookeeper 会维护一个具有条理关系的数据结构,它非常类似于一个尺度的文件系统,如图 1 所示:
Zookeeper 这种数据结构有如下这些特点:
每个子目次项如 NameService 都被称作为 znode,这个 znode 是被它地点的路径唯一标识,如 Server1 这个 znode 的标识为 /NameService/Server1
znode 可以有子节点目次,并且每个 znode 可以存储数据,注意 EPHEMERAL 类型的目次节点不能有子节点目次
znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
znode 的目次名可以自动编号,如 App1 已经存在,再创建的话,将会自动定名为 App2
znode 可以被监控,包罗这个目次节点中存储的数据的修改,子节点目次的变化等,一旦变化可以通知设置监控的客户端,这个是 Zookeeper 的核心特性,Zookeeper 的许多功能都是基于这个特性实现的,背面在典型的应用场景中会有实例介绍
检察zookeeper内里的内容:
运行
zkCli.cmd
ps:这里连接不上会与使用的JDK 版本有关
检察是否有相应的服务
ls /dubbo/com.hylandtec.ibank.base.service.IResourceService/providers
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
半亩花草
论坛元老
这个人很懒什么都没写!
楼主热帖
YOLOV5 代码复现以及搭载服务器运行 ...
本周涨粉一倍,我决定再开源一个商超管 ...
APP性能优化
Java集合框架(五)-Collections 和 泛型 ...
安装Python
Spring5——JdbcTemplate笔记
经典Python题目:一个列表或者数组去重 ...
《C++性能优化指南》 linux版代码及原 ...
随机数漫谈
C++初探索
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
物联网
Oracle
分布式数据库
SQL-Server
Java
快速回复
返回顶部
返回列表