Zookeeper学习1:概述、安装、应用场景、集群配置

文章目录

    • 概述
    • 安装
      • Linux
      • Windows
    • 配置参数
    • 集群
      • 参考配置文件
      • 配置步骤流程
      • 启动

概述

Zookeeper: 为分布式框架组件提供协调服务的中间件 == 【类似:文件系统+通知机制】== 负责存储上下层应用关系的数据以及接收观察者注册监听,一旦观察查关心的数据发生变化,则Zookeeper会将数据变化推送给观察者

官网: https://zookeeper.apache.org/

组成: Zookeeper由一个领导者(Leader),多个跟随者(Follower)组成的集群 == 半数以上的节点存活,集群才能正常工作,并且建议安装奇数台服务器集群

全局数据一致: 每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。

实时性: 客户端A更新信息到服务端A,则客户端B能在一定很快的时间范围内也同步回最新服务端A数据

Zookeeper内部数据结构: 树结构,每个节点最多存储1MB,并且每个数据节点有节点唯一标识进行识别区分

Zookeeper集群同步逻辑: 客户端向ZooKeeper集群发送写请求时,请求 首先会发送给Leader节点 ,Leader节点会将该请求广播给所有Follower节点,只有当大多数节点(包括Leader节点)都写入成功后,写操作才会被确认为成功(并通知客户端,客户端收到写入成功响应无需等待集群中所有机器都写入成功,只需过半机器写入成功即可,后续慢慢会执行同步,最终达到zxid一致) ,从而保证数据的一致性

身份证
修改数据的次数
投票的轮数
专有名词
SID:每个zookeeper的唯一标识,则dataDir下面的myid里面的值
ZXID:事务ID、标识依次服务器状态的变更 == 最终Zookeeper集群中ZXID会保持一致
Epoch:每个Leader的任期代号 == Zookeeper机器每完成一次投票则+1
//奇数台解释,以及半数以上人同意才可进行一致性读写操作
举个通俗易懂的例子,就好比开会需要做决定,
如果有5个人参与讨论,只要有3个人同意,就可以做出决定。
但如果只有4个人参与讨论,那么如果有2个人持不同意见,就无法做出决定
因此,为了确保能够做出决定,最好让参与讨论的人数为奇数。这样就能够确保在发生分歧时,仍然能够做出决定。


架构图
在这里插入图片描述

Zookeeper内部数据结构
在这里插入图片描述

1个
多个
Zookeeper集群
领导者
跟随者
Zookeeper应用场景
统一命名服务
统一配置管理
统一集群管理
服务器节点动态上下线
软负载均衡

安装

Linux

下载地址: https://archive.apache.org/dist/zookeeper/

//解压
mkdir /opt/module/ && tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz -C /opt/module && cd /opt/module///修改目录名
mv apache-zookeeper-3.9.1-bin  zookeeper-3.9.1//创建zookeeper数据目录
cd zookeeper-3.9.1 && mkdir zkData//修改配置文件 == 数据目录改为zkData
cp conf/zoo_sample.cfg conf/zoo.cfg 
sed -i '/^dataDir=/c\dataDir=/opt/module/zookeeper-3.9.1/zkData' conf/zoo.cfg//查看配置文件
more conf/zoo.cfg//==============服务端======================
//启动zookeeper服务端 == 注意确保2181、39306、8080 这三个端口不会被占用,否则启动失败
// zookeeper服务端启动
cd /opt/module/zookeeper-3.9.1/bin && sh zkServer.sh start
// zookeeper服务端状态查看
cd /opt/module/zookeeper-3.9.1 && sh bin/zkServer.sh status
// zookeeper服务端状态停止
cd /opt/module/zookeeper-3.9.1 && sh bin/zkServer.sh stop//查看zookeeper服务端是否启动成功 == 出现QuorumPeerMain说明启动成功
jps -l//查看zookeeper服务端占用的端口号
netstat -anlp |grep $(jps -l | grep QuorumPeerMain |  awk '{print $1}') | grep tcp//==============客户端======================
cd /opt/module/zookeeper-3.9.1 && sh bin/zkCli.sh //查看zookeeper客户端占用的端口号
netstat -anlp |grep $(jps -l | grep ZooKeeperMain | awk '{print $1}') | grep tcp

服务端相关
在这里插入图片描述

客户端相关
在这里插入图片描述

Windows

配置参数

配置文件路径: /opt/module/zookeeper-3.9.1/conf/zoo.cfg

在这里插入图片描述

//tickTime
默认2000
通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒//initLimit
默认10
【建立连接】
LeaderFollower初始连接时能容忍的最多心跳数(tickTime的数量)
LF初始通信时限(tickTime * initLimit时间范围内未通信成功,则认为失败)、zookeeper集群LeaderFollower的通信时限//syncLimit
默认5
【建立连接之后的通信】
LeaderFollower.之间通信时间如果超过syncLimit*tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer//dataDir
保存Zookeeper中的数据//clientPort
客户端连接端口,通常不做修改。

集群

参考配置文件

# 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=/opt/module/zookeeper-3.9.1/zkData
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# https://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## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpHost=0.0.0.0
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true# 集群配置
server.107=192.168.19.107:2888:3888
server.108=192.168.19.108:2888:3888
server.109=192.168.19.109:2888:3888

配置步骤流程

测试: 准备三台虚拟机107、108、109

//===========================
// 在107里面运行下面的命令//集群必须中每台zookeeper必须设置一个唯一的身份证号echo 107 > /opt/module/zookeeper-3.9.1/zkData/myid //将107里面的zookeeper同步到另外两台服务器上rsync -avz /opt/module/ root@192.168.19.108:/opt/modulersync -avz /opt/module/ root@192.168.19.109:/opt/module// 在108里面运行下面的命令
echo 108 > /opt/module/zookeeper-3.9.1/zkData/myid// 在109里面运行下面的命令
echo 109 > /opt/module/zookeeper-3.9.1/zkData/myid//================================================
//=================
//================================================//配置文件添加集群信息 == opt/module/zookeeper-3.9.1/conf/zoo.cfg
server.zookeeper的身份证号=zookeeper的ip:集群间的通信端口号:集群leader挂了重新选举新Leader的端口号
//配置文件添加的信息
# 集群配置
server.107=192.168.19.107:2888:3888
server.108=192.168.19.108:2888:3888
server.109=192.168.19.109:2888:3888//同步文件过去
rsync -avz /opt/module/zookeeper-3.9.1/conf/zoo.cfg root@192.168.19.108:/opt/module/zookeeper-3.9.1/conf
rsync -avz /opt/module/zookeeper-3.9.1/conf/zoo.cfg root@192.168.19.109:/opt/module/zookeeper-3.9.1/conf

在这里插入图片描述

启动


107服务器
在这里插入图片描述


108服务器
在这里插入图片描述


107服务器
在这里插入图片描述


109服务器
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git操作基本指令

1.查看用户名 git config user.name 2.查看密码 git config user.password 3.查看邮箱 git config user.email 4.修改用户名 git config --global user.name "xxx(新用户名)" 5.修改密码 git config --global user.password "xxx(新密码)" 6.修改…

笔记73:ROS中的各种消息包

参考视频: 33.ROS 的标准消息包 std_msgs_哔哩哔哩_bilibili 34. ROS 中的几何包 geometry_msgs 和 传感器包 sensor_msgs_哔哩哔哩_bilibili 标准消息包:std_msgs常用消息包:common_msgs导航消息包:nav_msgs几何消息包&#xf…

实战分享:Tomcat打破双亲委派模型,实现Web应用独立与安全隔离的奥秘

目录 一、JVM 类加载机制 二、Tomcat 类加载器 2.2 findClass 介绍 3.2 loadClass 介绍 三、web应用隔离 3.1 Spring 加载问题 在开始文章内容之前,先来看三个问题 假如在 Tomcat 上运行了两个 Web 应用程序,两个 web 应用中有同名的Servlet&#xf…

C++数据结构与算法——二叉树的属性

C第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更…

AGI概念与实现

AGI AGI(Artificial General Intelligence),中文名为“通用人工智能”或“强人工智能”,是指通过机器学习和数据分析等技术,使计算机具有类似于人类的认知和学习能力的技术. 多模态的大模型 (Multimodal…

详细介绍如何用windows自带Hyper-V安装虚拟机(windows11和ubuntu22)

通过系统自带的hyper-v安装windows11,舒服又惬意,相比用第三方虚拟机软件速度快很多。 硬件准备 准备 系统需要符合能安装 Hyper-V 的最低要求windows版本含Hyper-V的功能 电脑空间 电脑要有足够的空间来安装你这个虚拟机。根据自己的磁盘容量情况来规…

2673. 使二叉树所有路径值相等的最小代价

给你一个整数 n 表示一棵 满二叉树 里面节点的数目,节点编号从 1 到 n 。根节点编号为 1 ,树中每个非叶子节点 i 都有两个孩子,分别是左孩子 2 * i 和右孩子 2 * i 1 。 树中每个节点都有一个值,用下标从 0 开始、长度为 n 的整…

CloudCanal x Hive 构建高效的实时数仓

简述 CloudCanal 最近对于全周期数据流动进行了初步探索,打通了Hive 目标端的实时同步,为实时数仓的构建提供了支持,这篇文章简要做下分享。 基于临时表的增量合并方式基于 HDFS 文件写入方式临时表统一 Schema任务级的临时表 基于临时表的…

【Linux实践室】Linux初体验

🌈个人主页:聆风吟 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 🔔Linux 目录结构介绍2.2 🔔Linux …

WebFlux相关问题及答案(2024)

1、什么是Spring WebFlux? Spring WebFlux 是 Spring Framework 5.0 中引入的一个全新的反应式框架,用于构建异步、非阻塞且事件驱动的服务。它允许开发者使用响应式编程模型来处理并发性很高的操作,而无需担心传统的多线程环境中的复杂性。…

poi工具读写excel操作学习总结

写在前面的话 POI作为比较早期的Excel处理工具,其使用较为成熟且广泛。EasyExcel相较之下,则是相对较新的工具,其却有着比POI更为优越的一些特性,如更加简单的API接口和更加优秀的性能。 性能对比:在数据量较小的情况下…

mybatis mysql insert 主键id为空

错误示范 java代码设置了param参数&#xff0c;但是sql 字段没有带上参数&#xff0c;例如 void insertV2(Param("historyDO") HistoryDO historyDO); <insert id"insertDuplicate" parameterType"com.test.entity.HistoryDO"keyProperty&…

MySQL:一行记录如何

1、表空间文件结构 表空间由段「segment」、区「extent」、页「page」、行「row」组成&#xff0c;InnoDB存储引擎的逻辑存储结构大致如下图&#xff1a; 行 数据库表中的记录都是按「行」进行存放的&#xff0c;每行记录根据不同的行格式&#xff0c;有不同的存储结构。 页…

hippy 调试demo运行联调-mac环境准备篇

适用对于终端编译环境不熟悉的人看&#xff0c;仅mac端 hippy 调试文档官网地址 前提&#xff1a;请使用node16 联调预览效果图&#xff1a; 编译iOS Demo环境准备 未跑通&#xff0c;待补充 编译Android Demo环境准备 1、正常安装Android Studio 2、下载Android NDK&a…

Windows系统误删文件恢复

最近很多用户反馈误删文件的场景比较多.下面华仔将讲解数据恢复的原理和过程.以及一些注意事项。 建议的数据恢复软件 1.EaseUS Data Recovery Wizard(易我数据恢复)需要断网使用 2.Wondershare Recoverit(万兴数据恢复)&#xff0c; Windows系统删除文件原理&#xff1a;如果是…

Android ShellUtils手机管理器

1. Android ShellUtils手机管理器 Android Shell工具类&#xff0c;可用于检查系统root权限&#xff0c;并在shell或root用户下执行shell命令。如&#xff1a; checkRootPermission() 检查root权限 。execCommand(String[] commands, boolean isRoot, boolean isNeedResultMsg)…

HTTPS是什么,详解它的加密过程

目录 1.前言 2.两种加密解密方式 2.1对称加密 2.2非对称加密 3.HTTPS的加密过程 3.1针对明文的对称加密 3.2针对密钥的非对称加密 3.3证书的作用 1.前言 我们知道HTTP协议是超文本传输协议,它被广泛的应用在客户端服务器上,用来传输文字,图片,视频,js,html等.但是这种传…

java数据结构与算法刷题-----LeetCode572. 另一棵树的子树(经典题,树字符串化KMP)

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 暴力求解&#xff0c;深度优先2. KMP算法进行串匹配 1. 暴力求…

WinForm、Wpf自动升级 AutoUpdater.NET

Github AutoUpdater.NET 目录 一、IIS部署 更新站点 二、创建Winform 一、IIS部署 更新站点 IIS默认站点目录下创建 目录 Downloads、Updates Updates目录创建文件 UpdateLog.html、AutoUpdaterStarter.xml UpdateLog.html&#xff1a; <html><body><h1…

从零开始手写RPC框架(2)——Netty入门

学习前需要掌握基本的java网络编程&#xff0c;可参考这篇博客 目录 Netty 简介Netty 使用 kryo 序列化传输对象案例客户端代码服务端代码编码器 Netty 简介 是什么&#xff1f; Netty 是一个基于 NIO (Non-blocking I/O&#xff0c;非阻塞I/O)的 client-server(客户端服务器…