当前位置: 首页 > news >正文

微服务实战系列之ZooKeeper(实践篇)

前言

关于ZooKeeper,博主已完整的通过庖丁解牛式的“解法”,完成了概述。我想掌握了这些基础原理和概念后,工作的问题自然迎刃而解,甚至offer也可能手到擒来,真实一举两得,美极了。

为了更有直观的体验,强化概念,博主特别献上一篇实践文章。理论联系实践,才能学到真本领。

在这里插入图片描述

一、环境准备

1. JDK

检查自身测试环境,是否具备JDK,命令:java -version,如返回如下图所示,即已安装;否则必须提前安装:

在这里插入图片描述

2. ZK安装包

可自行前往官网下载,如需请速戳:ZooKeeper最新安装包。

二、安装部署

1. 创建server

首先根据ZK的 ·奇数·(过半OK) 特性,我们需准备3个server。当然博主受限于资源数量,仅以一台服务器为例,进行集群搭建,所谓“伪分布式集群”

找一台服务器,分别新建3个zkserver目录,分别命名为:zkserver1、zkserver2、zkserver3。预期效果,如下图所示:
在这里插入图片描述

2. 修改文件
2.1 zoo.cfg

上传服务器后,第一件事,修改 zoo.cfg 如下:

tickTime=2000
initLimit=10
syncLimit=5##########指定目录###########
dataDir=/home/xxapp/zk/zkserver1/data
dataLogDir=/home/xxapp/zk/zkserver1/data/log##########指定服务端口###########
clientPort=2281##########指定管理端口###########
admin.serverPort=3281##########指定集群端口###########
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883

每个参数的含义如下:

参数名参数简介
tickTimeZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础
initLimitLeader允许FollowerinitLimit在完成数据同步,否则无法对外提供服务
syncLimitLeader通过syncLimit检测Follower的存活,超时则认为已宕机
dataDir存储快照文件snapshot的目录。当然默认也存储事务日志,建议使用dataLogDir
dataLogDir存储事务日志的目录
clientPortZK对外服务端口,默认2181
Server.N设置集群信息,代表Server.myid = 集群节点IP : 与Leader交互接口 : 集群选举接口

如此有了参照,可以copy 3份,数据目录按序分别修改为server1、server2、server3,clientPortadmin.serverPort分别顺序加1,集群端口配置必须保持相同。

2.2 创建myid文件

myid文件用于指定每个server的编号(从1开始,顺序递增)。
命令:先touchvi,预期如下:
在这里插入图片描述

3. 修改防火墙
3.1 确认是否已开启防火墙

命令:systemctl status firewalld,如下图所示,代表已启动。

在这里插入图片描述

3.2 端口放行

命令:firewall-cmd --zone=public --add-port=你的端口/tcp --permanent,如下图所属,代表成功。

在这里插入图片描述

4. 启动server
4.1 启动zk

命令:zkServer.sh start,预期效果如下,代表成功:

在这里插入图片描述
其他两个server同理,按序启动。

4.2 查看状态

命令:zkServer.sh status,预期效果如下,代表成功。

zkserver1:
在这里插入图片描述
zkserver2:
在这里插入图片描述
zkserver3:
在这里插入图片描述

4.3 注意事项
  1. admin.serverPort建议指定,默认8080,否则端口占用;
  2. server.N,在“伪分布式集群”中,所有server的交互端口和选举端口,必须有所差异,否则端口占用;

结语

通过一文搭建ZooKeeper集群,可以更好的理解它、掌握它。接下来可以基于集群进行相关操作了。比如创建Znode,比如模拟宕机选举、又比如模拟数据同步等场景。

好了,关于ZooKeeper的总结和介绍到此为止,希望各位盆友有所收获!


历史回顾

  • 微服务实战系列之ZooKeeper(下)
  • 微服务实战系列之ZooKeeper(中)
  • 微服务实战系列之ZooKeeper(上)
  • 微服务实战系列之MQ
  • 微服务实战系列之通信
  • 微服务实战系列之J2Cache
  • 微服务实战系列之Cache(技巧篇)
  • 微服务实战系列之MemCache
  • 微服务实战系列之EhCache
  • 微服务实战系列之Redis
  • 微服务实战系列之Cache
  • 微服务实战系列之Nginx(技巧篇)
  • 微服务实战系列之Nginx
  • 微服务实战系列之Feign
  • 微服务实战系列之Sentinel
  • 微服务实战系列之Token
  • 微服务实战系列之Nacos
  • 微服务实战系列之Gateway
  • 微服务实战系列之加密RSA
  • 微服务实战系列之签名Sign

在这里插入图片描述

http://www.lryc.cn/news/262711.html

相关文章:

  • C++ 开发中为什么要使用继承
  • 2020蓝桥杯c组纸张大小
  • 【Image】图像处理
  • JAVA对文档加密
  • EmbedAI:一个可以上传文件训练自己ChatGPT的AI工具,妈妈再也不用担心我的GPT不会回答问题
  • runCatching异常捕获onSuccess/onFailure返回函数,Kotlin
  • IDEA报错处理
  • 使用动画曲线编辑器打造炫酷的3D可视化ACE
  • 使用 React 和 ECharts 创建地球模拟扩散和飞线效果
  • http状态码(一)400报错
  • 【深度学习目标检测】五、基于深度学习的安全帽识别(python,目标检测)
  • 芒果RT-DETR改进实验:深度集成版目标检测 RT-DETR 热力图来了!支持自定义数据集训练出来的模型
  • c语言实验八
  • ArcGIS Pro SDK文件选择对话框
  • ACT、NAT、NATPT和EASY-IP
  • HTML实现每天单词积累
  • 【ECMAScript笔记二】运算符分类,流程控制(顺序结构、分支结构、循环结构)
  • ShenYu网关注册中心之Zookeeper注册原理
  • 高级C#技术(二)
  • 【性能测试】基础知识篇-压力模型
  • springboot-redis设置定时触发任务详解
  • Video anomaly detection with spatio-temporal dissociation 论文阅读
  • svn 安装
  • slurm 23.11.0集群 debian 11.5 安装
  • ffmpeg可以做什么
  • 一种缩小数据之间差距的算法
  • 【Axure RP9】动态面板使用------案例:包括轮播图和多方式登入及左侧菜单栏案例
  • 在接口实现类中,加不加@Override的区别
  • 优质全套SpringMVC教程
  • 微信小程序---使用npm包安装Vant组件库