【星海随笔】分布式管理Zookeeper

news/2024/11/22 16:15:22/

高可用集群

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

TPS既每秒系统吞吐量
QPS即每秒查询率

Zookeeper的选举机制

确保所有节点对外表现为一个统一的服务。
选举机制分为两个阶段:Leader选举和投票确认

Zookeeper 的选举机制确保集群中的所有节点对外表现为一个统一的服务。选举机制分为两个阶段:Leader 选举和投票确认。

  1. 服务器1启动,发起一次选举。服务器1投自己一票。此时服务器1票数一票,不够半数以上票),选举无法完成,服务器1状态保持为LOOKING;
  1. 服务器2启动,再发起一次选举。服务器1和2分别投自己一票并交换选票信息:此时服务器1发现服务器2的myid比自己目前投票推举的(服务器1)大,更改选票为推举服务器2。此时服务器1票数0 票,服务器2票数2票,没有半数以上结果,选举无法完成,服务器1,2状态保持LOOKING
  1. 服务器3启动,发起一次选举。此时服务器1和2都会更改选票为服务器3。此次投票结果:服务器1为0票,服务器2为0票,服务器3为3票。此时服务器3的票数已经超过半数,服务器3当选Leader。 服务器1,2更改状态为FOLLOWING,服务器3更改状态为LEADING;
  1. 服务器4启动,发起一次选举。此时服务器1,2,3已经不是LOOKING状态,不会更改选票信息。交换选票信息结果:服务器3为3票,服务器4为1票。此时服务器4服从多数,更改选票信息为服务器3,并更改状态FOLLOWING;
  1. 服务器5启动,同4一样当小弟。但是如果sever3没有选举的时候(不是leader的时候),server4就进来选举,那结果就不一样了(突发状态)

安装篇

tar  -xzvf  apache-zookeeper-x.x.x-bin.tar.gz  -C  /export/servers/
cd  /export/servers/ 切换到/export/servers/ 目录配置
mv  ./apache-zookeeper-x.x.x-bin/  /usr/zookeeper配置环境变量: vim /etc/profile
export ZK_HOME=/usr/zookeeper
export JAVA_HOME=/path_to_your/java/jdkx.x.x_xxx/
export PATH=$JAVA_HOME/bin:$ZK_HOME/bin:$PATHcp  /export/servers/conf/zoo_sample.cfg  /export/servers/conf/zoo.cfg
tickTime=2000  ##Client-Server通信心跳时间,单位是毫秒
initLimit=10   ##集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数
syncLimit=5    ##集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数
clientPort=2181   ## 监听端口
maxClientCnxns=100  ## 最大连接数
dataDir=/export/servers/zookeeper-x.x.x/data ## 数据目录
dataLogDir=/export/servers/zookeeper-x.x.x/log  ## 日志目录
# 添加如下内容
server.1=<IP1>:2881:3881  ## zk节点1
server.2=<IP1>:2881:3881  ## zk节点2
server.3=<IP3>:2881:3881  ## zk节点3
在/export/servers/zookeeper-x.x.x 下创建两个文件夹,分别是data和log
然后分别在zk节点,/export/servers/zookeeper-x.x.x/data目录下,创建文本myid,内容分别是1、2、3序号
IP1  写入1
IP2  写入2
IP3  写入3
对分节点去分发
scp -r /export/servers/zookper-x.x.x  hadoop02:$PWD
scp -r /export/servers/zookper-x.x.x  hadoop03:$PWD
启动之前,jdk7以上的版本一定要安装合适,然后在环境变量里配置ZK_HOME
zookeeper bin目录下的脚本执行 zkServer.sh  start  启动
执行 zkServer.sh  status 查看各个zk节点的状态jps #查看是否启动了zk
zkServer.sh stop 是停掉zk节点服务
启动zk之后,在任意一台服务上,运行:zkCli.sh进入zk的命令行模式

zk创建的节点叫znode,znode四种节点类型:持久节点、持久序列节点、暂时节点、暂时序列节点。

create   -e /app   111  创建一个暂时的znode节点
create   -s /app/test1  222  创建一个持久的,带有序列号的znode节点
get  /app/test  得到创建的节点中的数据
执行ls  /可以看到根节点下面所有子节点
ls /app/test watch  监听这个节点下的变化,我在另一个服务器下也打开了zk的命令行,

http://www.ppmy.cn/news/1549076.html

相关文章

前端开发调试之移动端调试学习笔记

一、引言 随着移动互联网的飞速发展&#xff0c;移动端页面和应用的开发变得越发重要。而在前端开发移动端项目时&#xff0c;有效的调试手段能帮助我们及时发现并解决诸多问题&#xff0c;确保项目在移动端设备上能够正常运行且提供良好的用户体验。以下就是关于前端开发中移动…

springboot第83集:理解SaaS多租户应用的架构和设计,设备介入,网关设备,安全,实时实现,序列化...

springboot第83集&#xff1a;理解SaaS多租户应用的架构和设计&#xff0c;设备介入&#xff0c;网关设备&#xff0c;安全&#xff0c;实时实现&#xff0c;序列化&#xff0c;数据交换&#xff0c;存储与查询&#xff0c;流处理&#xff0c;消息队列 [什么是多租户] 聊到PaaS…

快速掌握企业开发之Git基础操作及安装

目录 1. Git概念2. 安装git2.1 centos环境2.2 ubuntu环境 3. Git基本操作(基于ubuntu环境)3.1 创建本地仓库3.2 配置本地仓库1. 针对单个仓库2. 针对一台电脑下所有仓库 3.3 认识工作区&#xff0c;暂存区及版本库3.4 添加文件底层原理剖析 3.5 修改文件3.6 版本回退3.7 撤销修…

Cmake 编译QT4工程 Linux下 Cmake 编译Qt5

open Object 按钮不好使 可能是没有选择默认打开方式 寻找qt库路径 需要再跟节点的CMAKELIST 下编写 find_package(Qt4 REQUIRED QtCore QtGui QtXml) 错误总结 报错 无法打开 ui_xxx.h 寻找ui_xxx.h 文件 也需要再根节点下编写 如果在具体项目文件夹下编写 也会找到不到…

【JavaSE】【多线程】定时器

目录 一、定时器简介1.1 Timer类1.2 使用案例 二、实现简易定时器2.1 MyTimerTask类2.2 实现schedule方法2.3 构造方法2.4 总代码2.5 测试 一、定时器简介 定时器&#xff1a;就相当于一个闹钟&#xff0c;当我们定的时间到了&#xff0c;那么就执行一些逻辑。 1.1 Timer类 …

修改docker0默认IP地址

第一步&#xff1a;vim /etc/docker/daemon.json { “registry-mirrors”: [“​ ​https://docker.mirrors.ustc.edu.cn​​”] , “bip”:“172.31.0.1/16” } &#xff0c;该地址就是docker0启动后的IP地址 第二步&#xff1a;重启docker服务 systemctl restart dock

Uniapp 简单配置鸿蒙

Uniapp 简单配置鸿蒙 前言下载并配置鸿蒙IDEHbuilder X 配置基本的信息生成相关证书登录官网获取证书IDE配置证书添加调试设备可能出现的问题前言 如今鸿蒙的盛起,作为多端开发的代表也是开始兼容鸿蒙应用的开发,接下来我将介绍如何在uniapp中配置鸿蒙。 注意:hbuilder X的…

Vue 3 组件通信:深入理解 Props 和 Emits 的使用与最佳实践

Vue 3 中的 props 和 emits 是组件通信的基础&#xff0c;它们允许组件之间的数据流动和事件触发。以下是 Vue 3 中 props 和 emits 的详细知识点&#xff1a; Props 一. 基础用法 在Vue中&#xff0c;props 是父组件传递给子组件的数据。以下是在父组件中定义和传递 props …