尚硅谷Zookeeper学习笔记(一)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 尚硅谷Zookeeper学习笔记

第 1 章 Zookeeper 入门

1.1概述

Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目。

7fc2de9548244fa0be65a9f1583c4841.png

f9b2ad8fa7484b81889b2c5030f3e05b.png


1.2 特点

cff204eaf84448349991b4584aaa60d7.png

1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。

2)集群中只要有 半数以上节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。

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

4)更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。

5)数据更新原子性,一次数据更新要么成功,要么失败。

6)实时性,在一定时间范围内,Client能读到最新数据。

1.3 数据结构

ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个 ZNode。每一个 ZNode 默认能够存储 1MB 的数据,每个 ZNode 都可以通过其路径唯一标识。

7d107359f3334810a47484d90dbc1929.png

1.4 应用场景

提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。


34472a15ce5242da9c052f996e32795b.png

78d09e72bef14506b744def4f06b7cdb.png



afd716c044924f409397ea74b24393b0.png

c62314835c3545758766db8e53773848.png

5a729112dd5b489cbf2fce8268ae446b.png

1.5 下载地址

1) 官网首页:

https://zookeeper.apache.org/

2) 下载截图

f9b189d2bcff403cbc941197a85ffddb.png

e44bf80669964112a0bee119474db3ba.png

a1bbeef957a049f38b2a0b35370a3450.png


第 2 章 Zookeeper 本地 安装

2.1 本地模式 安装

1) 安装前准备

(1)安装 JDK

(2)拷贝 apache-zookeeper-3.5.7-bin.tar.gz 安装包到 Linux 系统下

(3)解压到指定目录

[atguigu@hadoop102 software]$ tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/

(4)修改名称

[atguigu@hadoop102 module]$ mv apache-zookeeper-3.5.7 -bin/
zookeeper-3.5.7

2) 配置修改

(1)将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg;

[atguigu@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg

(2)打开 zoo.cfg 文件,修改 dataDir 路径:

[atguigu@hadoop102 zookeeper-3.5.7]$ vim zoo.cfg

修改如下内容:

dataDir=/opt/module/zookeeper-3.5.7/zkData

(3)在/opt/module/zookeeper-3.5.7/这个目录上创建 zkData 文件夹

[atguigu@hadoop102 zookeeper-3.5.7]$ mkdir zkData

3) 操作 Zookeeper

(1)启动 Zookeeper

[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start

(2)查看进程是否启动

[atguigu@hadoop102 zookeeper-3.5.7]$ jps

4020 Jps

4001 QuorumPeerMain

(3)查看状态

[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /opt/module/zookeeper-3.5.7/bin/…/conf/zoo.cfg

Mode: standalone

(4)启动客户端

[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh

(5)退出客户端:

[zk: localhost:2181(CONNECTED) 0] quit

(6)停止 Zookeeper

[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh stop


2.2 配置参数 解读

Zookeeper中的配置文件zoo.cfg中参数含义解读如下:

1 )tickTime = 2000:通信心跳 时间,Zookeeper 服务器 与 客户端 心跳时间,单位毫秒

9675e347ff1e4675a7ccd6b76d5d04f7.png

2 )initLimit = 10 :LF初始通信时限

b7248ef7af82428bb9c5f2ff0561758f.png

3 )syncLimit = 5 :LF 同步通信时限


cf05990f93124018ba2c0849a4cec5da.png

Leader和Follower之间通信时间如果超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

4 )dataDir :保存Zookeeper中的数据


注意:默认的tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录


5 )clientPort = 2181 :客户端连接端口,通常不做修改。


第 3 章 Zookeeper 集群

3.1 集群操作

3.1.1 集群安装

1) 集群 规划

在 hadoop102、hadoop103 和 hadoop104 三个节点上都部署 Zookeeper。

思考:如果是 10 台服务器,需要部署多少台 Zookeeper ?


2) 解压安装

(1)在 hadoop102 解压 Zookeeper 安装包到/opt/module/目录下

[atguigu@hadoop102 software]$ tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/

(2)修改 apache-zookeeper-3.5.7-bin 名称为 zookeeper-3.5.7

[atguigu@hadoop102 module]$ mv apache-zookeeper-3.5.7-bin/zookeeper-3.5.7
3) 配置服务器 编号

(1)在/opt/module/zookeeper-3.5.7/这个目录下创建 zkData

[atguigu@hadoop102 zookeeper-3.5.7]$ mkdir zkData

2)在/opt/module/zookeeper-3.5.7/zkData 目录下创建一个 myid 的文件

[atguigu@hadoop102 zkData]$ vi myid

在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格)

2

注意:添加 myid 文件,一定要在 Linux 里面创建,在 notepad++里面很可能乱码

(3)拷贝配置好的 zookeeper 到其他机器上

[atguigu@hadoop102 module ]$ xsync zookeeper-3.5.7

并分别在 hadoop103、hadoop104 上修改 myid 文件中内容为 3、4

4) 配置zoo.cfg 文件

(1)重命名/opt/module/zookeeper-3.5.7/conf 这个目录下的 zoo_sample.cfg 为 zoo.cfg

[atguigu@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg


(2)打开 zoo.cfg 文件

[atguigu@hadoop102 conf]$ vim zoo.cfg

#修改数据存储路径配置

dataDir=/opt/module/zookeeper-3.5.7/zkData

#增加如下配置

#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

(3)配置参数解读

server.A=B:C:D。


A 是一个数字,表示这个是第几号服务器;

集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据

就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比

较从而判断到底是哪个 server。


B 是这个服务器的地址;


C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;


D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。


(4)同步 zoo.cfg 配置文件


[atguigu@hadoop102 conf]$ xsync zoo.cfg


5) 集群操作

(1)分别启动 Zookeeper


[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start
[atguigu@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start
[atguigu@hadoop104 zookeeper-3.5.7]$ bin/zkServer.sh start

(2)查看状态

[atguigu@hadoop102 zookeeper-3.5.7]# bin/zkServer.sh status


JMX enabled by default

Using config: /opt/module/zookeeper-3.5.7/bin/…/conf/zoo.cfg

Mode: follower


[atguigu@hadoop103 zookeeper-3.5.7]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.5.7/bin/…/conf/zoo.cfg

Mode: leader

[atguigu@hadoop104 zookeeper-3.4.5]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.5.7/bin/…/conf/zoo.cfg

Mode: follower

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
10月前
|
监控 Dubbo 网络协议
【SpringBoot学习笔记 十四】SpringBoot+Dubbo+Zookeeper集成开发(下)
【SpringBoot学习笔记 十四】SpringBoot+Dubbo+Zookeeper集成开发(下)
156 0
|
10月前
|
消息中间件 监控 Dubbo
【SpringBoot学习笔记 十四】SpringBoot+Dubbo+Zookeeper集成开发
【SpringBoot学习笔记 十四】SpringBoot+Dubbo+Zookeeper集成开发
121 0
|
缓存 监控 网络协议
MSE 风险分布管理功能发布(二)| 学习笔记
快速学习 MSE 风险分布管理功能发布。
185 0
MSE 风险分布管理功能发布(二)| 学习笔记
|
Java Linux API
|
API 数据安全/隐私保护
|
数据可视化 Dubbo Java
MSE 微服务测试---自动化回归最佳实践|学习笔记
快速学习 MSE 微服务测试---自动化回归最佳实践
294 0
MSE 微服务测试---自动化回归最佳实践|学习笔记
|
敏捷开发 弹性计算 Kubernetes
MSE 开发环境隔离功能介绍|学习笔记(二)
快速学习 MSE 开发环境隔离功能介绍
263 0
MSE 开发环境隔离功能介绍|学习笔记(二)
|
弹性计算 Kubernetes 安全
MSE 开发环境隔离功能介绍|学习笔记(一)
快速学习 MSE 开发环境隔离功能介绍
355 0
MSE 开发环境隔离功能介绍|学习笔记(一)
|
缓存 弹性计算 安全
MSE Nacos 配置安全最佳实践|学习笔记(二)
快速学习 MSE Nacos 配置安全最佳实践
591 0
MSE Nacos 配置安全最佳实践|学习笔记(二)
|
13天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
30 2