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.pswp.cn/news/713783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713783.shtml
英文地址,請注明出處:http://en.pswp.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(客戶端服務器…