微服务实战系列之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
每个参数的含义如下:
| 参数名 | 参数简介 |
|---|---|
| tickTime | ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础 |
| initLimit | Leader允许Follower在initLimit在完成数据同步,否则无法对外提供服务 |
| syncLimit | Leader通过syncLimit检测Follower的存活,超时则认为已宕机 |
| dataDir | 存储快照文件snapshot的目录。当然默认也存储事务日志,建议使用dataLogDir |
| dataLogDir | 存储事务日志的目录 |
| clientPort | ZK对外服务端口,默认2181 |
| Server.N | 设置集群信息,代表Server.myid = 集群节点IP : 与Leader交互接口 : 集群选举接口 |
如此有了参照,可以copy 3份,数据目录按序分别修改为server1、server2、server3,clientPort与admin.serverPort分别顺序加1,集群端口配置必须保持相同。
2.2 创建myid文件
myid文件用于指定每个server的编号(从1开始,顺序递增)。
命令:先touch后 vi,预期如下:

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 注意事项
admin.serverPort建议指定,默认8080,否则端口占用;- 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

相关文章:
微服务实战系列之ZooKeeper(实践篇)
前言 关于ZooKeeper,博主已完整的通过庖丁解牛式的“解法”,完成了概述。我想掌握了这些基础原理和概念后,工作的问题自然迎刃而解,甚至offer也可能手到擒来,真实一举两得,美极了。 为了更有直观的体验&a…...
C++ 开发中为什么要使用继承
为何继承 实验介绍 继承是 C++ 中的特性之一,使用继承能够有效减轻工作量,使得开发更加高效。 知识点 什么是继承为何继承继承的内容权限关键字什么是继承 生活中继承是指孩子继承父亲的财产等。C++ 使用了这一思想,却又与生活中的继承不一样。 在使用继承时,派生类是…...
2020蓝桥杯c组纸张大小
题目名字 纸张大小 题目链接 题意 给一张纸,通过不断折叠,求最终长宽,给十个数字,输入哪个数字就求哪次折叠的长宽,其实就是,每次折叠后长度的一半变为宽度,原来的宽度变成长度 思路 因为数字…...
【Image】图像处理
计算机视觉 CV Perception 如自动驾驶领域。 只要是从所谓的图像当中去抽取信息的过程,我们都叫做Perception。 视觉检测可以涵盖二维检测,如车辆、人和信号灯的检测。另外,还可以控制三维信息,直接在三维空间中操作数据。 SL…...
JAVA对文档加密
当 Word 文档中包含无法公开的机密信息时,我们可以对其进行加密,使其在没有密码的情况下无法打开。本文将向您介绍如何使用 Spire.Doc for Java 加密 Word 文档和移除 Word 密码保护。 加密 Word 文档删除 Word 密码保护 安装 Spire.Doc for Java 首先…...
EmbedAI:一个可以上传文件训练自己ChatGPT的AI工具,妈妈再也不用担心我的GPT不会回答问题
功能介绍: 个性化定制:提供灵活的训练选项,用户能够通过文件、网站、Notion文档甚至YouTube等多种数据源对ChatGPT进行训练,以满足不同领域和需求的个性化定制。广泛应用场景:ChatGPT支持多种用例,包括智能…...
runCatching异常捕获onSuccess/onFailure返回函数,Kotlin
runCatching异常捕获onSuccess/onFailure返回函数,Kotlin fun test(a: Int, b: Int) {runCatching {a / b}.onSuccess {println("onSuccess: $it")return ok(it)}.onFailure {println("onFailure: $it")return fail(it)} }fun ok(o: Any) {prin…...
IDEA报错处理
问题1 IDEA 新建 Maven 项目没有文件结构 pom 文件为空 将JDK换成1.8后解决。 网络说法:别用 java18,换成 java17 或者 java1.8 都可以,因为 java18 不是 LTS 版本,有着各种各样的问题。。...
使用动画曲线编辑器打造炫酷的3D可视化ACE
前言 在制作3D可视化看板时,除了精细的模型结构外,炫酷的动画效果也是必不可少的。无论是复杂的还是简单的动画效果,要实现100%的自然平滑都是具有挑战性的工作。这涉及到物理引擎的计算和对动画效果的数学建模分析。一般来说,只…...
使用 React 和 ECharts 创建地球模拟扩散和飞线效果
在本博客中,我们将学习如何使用 React 和 ECharts 创建一个酷炫的地球模拟扩散效果。我们将使用 ECharts 作为可视化库,以及 React 来构建我们的应用。地球贴图在文章的结尾。 最终效果 准备工作 首先,确保你已经安装了 React,并…...
http状态码(一)400报错
一 400报错汇总 ① 综述 一、4xx状态码报错说明: 客户端行为导致的报错二、通用的4xxHTTP报错1) 4002) 4013) 4034) 4045) 405 --> 不允许方法,可能跨域或者nginx限制请求方法6) 4087) 4138) 419三、ngin自身定义的4xx报错495、496、497、498、4…...
【深度学习目标检测】五、基于深度学习的安全帽识别(python,目标检测)
深度学习目标检测方法则是利用深度神经网络模型进行目标检测,主要有以下几种: R-CNN系列:包括R-CNN、Fast R-CNN、Faster R-CNN等,通过候选区域法生成候选目标区域,然后使用卷积神经网络提取特征,并通过分类…...
芒果RT-DETR改进实验:深度集成版目标检测 RT-DETR 热力图来了!支持自定义数据集训练出来的模型
💡该教程为改进RT-DETR指南,属于《芒果书》📚系列,包含大量的原创改进方式🚀 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可💡更方便的统计更多实验数据,方便写作 芒果RT-DETR改进实验:深度集成版目标检测 RT-DETR 热力图来了!支持自定义数据集…...
c语言实验八
实验1:在主函数中输入num个字符串,写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址,在主函数中输出。(注意:用****作为结束输入的标志。) #i…...
ArcGIS Pro SDK文件选择对话框
文件保存对话框 // 获取默认数据库var gdbPath Project.Current.DefaultGeodatabasePath;//设置文件的保存路径SaveItemDialog saveLayerFileDialog new SaveItemDialog(){Title "Save Layer File",OverwritePrompt true,//获取或设置当同名文件已存在时是否出现…...
ACT、NAT、NATPT和EASY-IP
目录 一、ACL 1.ACL 2.ACL的两种应用匹配机制 3.ACL的基本类型 4.ACL命令操作 5.ACL实验: 4.ACL的应用原则: 5.匹配原则: 二、NAT 1.NAT的原理及作用: 2.NAT分类 3.NAT配置 三、EASY-ip实验 四、NATPT 五、通配符 …...
HTML实现每天单词积累
注册页面 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>注册</title><style>body {font-family: Arial, sans-serif;background-color: #f5f5f5;}form {max-width: 500px;margin: 50px auto;padding: 40px…...
【ECMAScript笔记二】运算符分类,流程控制(顺序结构、分支结构、循环结构)
文章目录 4 运算符4.1 算术运算符4.2 递增和递减运算符4.3 比较运算符4.4 逻辑运算符4.5 赋值运算符4.6 运算优先级 5 流程控制5.1 顺序结构5.2 分支结构5.2.1 if 语句5.2.2 switch 语句 5.3 循环结构5.3.1 for循环5.3.2 while循环5.3.3 do while循环5.3.4 continue和break 5.4…...
ShenYu网关注册中心之Zookeeper注册原理
文章目录 1、客户端注册流程1.1、读取配置1.1.1、用于注册的 ZookeeperClientRegisterRepository1.1.2、用于扫描构建 元数据 和 URI 的 SpringMvcClientEventListener 1.2、扫描注解,注册元数据和URI1.2.1、构建URI并写入Disruptor1.2.2、构建元数据并写入Disrupto…...
高级C#技术(二)
前言 本章为高级C#技术的第二节也是最后一节。前一节在下面这个链接 高级C#技术https://blog.csdn.net/qq_71897293/article/details/134930989?spm1001.2014.3001.5501 匿名类型 匿名类型如其名,匿名的没有指定变量的具体类型。 举个例子: 1 创建…...
UE5新手必看:给你的自定义Pawn加上碰撞,别再让它“穿墙”了!
UE5碰撞系统实战:从零构建防穿墙Pawn的完整指南 当你在UE5中第一次创建自定义Pawn时,最令人沮丧的莫过于看着自己精心设计的角色像幽灵一样穿过墙壁和障碍物。这种"穿模"现象不仅破坏游戏体验,更会导致后续游戏逻辑的全面崩溃。本文…...
基于GIS流域水文分析及水库库容计算实践技术
1、GIS水文分析的原理、DEM数据的获取与处理2、基于水文分析的流域边界、河道及分子流域提取3、暴雨情景下流域淹没区快速识别4、基于GIS的水库库容计算...
ssm中国篮球人才管理系统(10050)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
别再只用moviepy了!用Python的av库给视频批量加字幕,5分钟搞定
别再只用moviepy了!用Python的av库给视频批量加字幕,5分钟搞定 视频字幕添加是内容创作者的高频需求,无论是自媒体博主制作教程视频,还是教育工作者录制课程,精准的字幕不仅能提升观看体验,还能显著提高内容…...
Spring Boot Microservices故障排查:10个常见问题及解决方案
Spring Boot Microservices故障排查:10个常见问题及解决方案 【免费下载链接】spring-boot-microservices Spring Boot Template for Micro services Architecture - Show cases how to use Zuul for API Gateway, Spring OAuth 2.0 as Auth Server, Multiple Resou…...
OpenClaw与企业微信联动:自动发送工作通知、统计员工回复情况,简化管理流程
OpenClaw 赋能企业微信:构建智能高效的自动化管理新范式在数字化转型浪潮席卷各行各业的当下,企业对于内部流程优化、管理效率提升以及员工协作体验改善的需求日益迫切。传统的管理方式,如手动发送通知、人工统计反馈、层层审批流转等&#x…...
紧急通告:OpenAI已于2024年6月1日灰度上线ChatGPT Pay API V2.1,当前仅向Stripe白名单商户开放(附申请通道+审核时效倒计时)
更多请点击: https://codechina.net 第一章:ChatGPT实时支付功能在哪里 ChatGPT 本身并不原生支持实时支付功能。OpenAI 官方发布的 ChatGPT(包括免费版、Plus 订阅版及 Team/Enterprise 版)定位为人工智能对话助手,…...
古典戏曲研究新范式,NotebookLM+《牡丹亭》原始刻本实测:自动生成曲牌-情感-舞台调度三维映射表
更多请点击: https://intelliparadigm.com 第一章:NotebookLM戏剧研究辅助的范式革命 传统戏剧研究长期依赖人工文本细读、跨剧目比对与历史语境重建,耗时冗长且易受主观经验局限。NotebookLM 的引入,标志着从“线性阅读—笔记摘…...
浏览器智能体开发指南:从语义驱动到LLM集成的自动化实践
1. 项目概述:一个能“看”会“想”的浏览器智能体最近在折腾自动化工具和智能体(Agent)的时候,发现了一个挺有意思的项目:smouj/agent-browser。光看这个名字,你可能会觉得它只是一个普通的浏览器自动化库&…...
RIS辅助无人机通信的能效优化与深度强化学习应用
1. 项目概述:RIS辅助无人机通信的能效革命在应急救灾、偏远地区覆盖等场景中,无人机(UAV)通信系统常面临两大核心挑战:一是复杂地形导致的信号遮挡问题,二是无人机有限的续航能力制约了长期作业。传统解决方案如增加中继节点会引入…...
