Zookeeper系統性學習-應用場景以及單機、集群安裝

Zookeeper 是什么?

Zookeeper 為分布式應用提供高效且可靠的分布式協調服務,提供了諸如統一命名服務、配置管理和分布式鎖等分布式的基礎服務。在解決分布式數據一致性方面,ZooKeeper 并沒有直接采用 Paxos 算法,而是采用了名為 ZAB 的一致性協議

ZooKeeper 主要用來解決分布式集群中應用系統的一致性問題,它能提供基于類似于文件系統的目錄節點樹方式的數據存儲。但是 ZooKeeper 并不是用來專門存儲數據的,它的作用主要是用來維護和監控存儲數據的狀態變化。通過監控這些數據狀態的變化,從而可以達到基于數據的集群管理

很多大名鼎鼎的框架都基于 ZooKeeper 來實現分布式高可用,如:Dubbo、Kafka 等

Zookeeper 一個最常用的使用場景就是用于擔任服務生產者和服務消費者的注冊中心

Zookeeper 數據結構

Zookeeper 數據結構為一棵樹,每一個節點成為 ZNode,每個 ZNode 默認存儲 1MB 數據

在這里插入圖片描述

Zookeeper 應用場景

統一命名服務

對多個相同服務進行統一命名,可以負載均衡以及提高可用性

在這里插入圖片描述

統一配置管理

在分布式環境下,保證所有節點配置信息一致,并保證在修改配置文件之后,快速可以同步到各個節點中

實現:在 Zookeeper 中維護一份配置文件,客戶端監聽配置文件,保證配置文件修改后可以同步到最新配置

在這里插入圖片描述

Zookeeper 安裝

https://zookeeper.apache.org/

去官網下載 3.5.7-bin-tar.gz

單機

  1. 安裝 jdk
  2. 下載 bin.tar.gz 包
  3. 解壓 tar -zxvf xxxbin-tar.gz -C /解壓目錄

修改 zookeeper 配置文件 ./conf/zoo.cfg

cd conf
# 將示例配置文件復制一份
cp zoo_sample.cfg zoo.cfg
# 修改配置文件
vi zoo.cfg
# 修改 dataDir 數據存儲目錄,可以在安裝的zookeeper目錄下創建 zkData 目錄,將數據存儲目錄設置為 zkData 目錄
dataDir= # 啟動服務
./bin/zkServer.sh start
# 查看是否啟動
jps -l# 啟動客戶端
./bin/zkCli.sh# 查看 zookeeper 狀態
bin/zkServer.sh status

配置文件解析

Zookeeper 配置文件內容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
  • tickTime

    通信心跳時間,單位毫秒,是 Zookeeper 服務器與客戶端心跳事件

  • initLimit

    LF 初始通信時間,Leader 和 Follower 初始連接時能容忍的最多心跳數

    即如果 initLimit=2,tickTime=2000,那么 Leader 和 Follower 初始連接時間最大不能超過 2 * 2000ms = 2秒

  • syncLimit

    LF 同步通信時限

    Leader 和 Follower 之間通信如果超過 syncLimit * tickTime,則 Leader 認為 Follower 掛掉,從服務器列表中刪除 Follower

  • dataDir:保存 Zookeeper 中的數據

    默認 tmp 目錄,Limux 中 tmp 目錄定期刪除,一般不用默認目錄

Zookeeper 集群安裝

在 3 臺服務器上部署 zookeeper,假設服務器分別為:zk1、zk2、zk3

部署流程為:

1、解壓安裝

解壓安裝到 /develop/ 目錄下,并且改名為 zookeeper,最終 zookeeper 目錄為 /develop/zookeeper/

2、配置服務器編號

單臺服務器編號配置

# 在 /develop/zookeeper/ 目錄下創建目錄 zkData,用于存放數據
cd /develop/zookeeper
mkdir zkData# 在 zkData 目錄下創建 myid 文件
vi myid# myid 文件內容,作為身份標識
1

將上述的 zookeeper 目錄拷貝到其他兩臺服務器,并且修改 myid 內容分別為 2、3

3、配置 zoo.cfg 文件

# 在每一臺服務器將 zoo_sample.cfg 命名為 zoo.cfg
mv zoo_sample.cfg zoo.cfg
vim zoo_cfg# 修改數據存儲路徑
dataDir=/develop/zookeeper/zkData
# 增加集群配置
server.1=ip:2888:3888
server.2=ip:2888:3888
server.3=ip:2888:3888

上邊集群配置參數解釋:

server.A=B:C:D

A 表示為服務器的 myid

B 表示服務器 ip

C 表示服務器 Follower 和集群中的 Leader 服務器交換信息的端口

D 表示集群中 Leader 如果掛了,需要用來選舉的通信端口

4、啟動集群

在每臺服務器中進行啟動

zkServer.sh start

可以使用命令 zkServer.sh status 查看啟動狀態,當集群超過半數節點啟動后,狀態才為正常(如果不超過半數啟動,無法選舉 Leader)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213008.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213008.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213008.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android Studio Gradle下載慢解決方法

Android Studio Gradle下載慢解決方法 最近在練習模型部署,主要是在手機端部署,所以使用到了Android Studio,但是在創建項目的時候,一致在下載gradle,而且網速還很慢,不對,是極慢哪種&#xff0…

MQTT發布、訂閱和取消訂閱

在本文中,我們將深入了解MQTT發布、訂閱和取消訂閱相關的內容。如果你剛接觸發布/訂閱模型,建議閱讀本專欄之前的文章。 什么是MQTT發布消息 在MQTT中,一個客戶端連接到代理(broker)之后可以立即發布消息。這些消息依…

NetSuite預算管理實踐

NetSuite預算相關的原生功能有兩個: 一個是Expense Commitments And Budget Validation這個SuiteApp,我們在一年前寫過一篇文章介紹過。它強調預算的過程控制,但由于功能很有限,沒有實際用處。 NetSuite Budget功能包_netsuite …

Vue3 pinia的基本使用

pinia的使用跟vuex很像,去除了很多沒用的api,寫法有兩種,一種老式的選項式api還有一種組合式api,用哪種根據自己喜好來,以下示例為組合式api 更多教程參考官網:pinia官網https://pinia.vuejs.org/zh/ 安裝…

機器學習基本概念2

資料來源: https://www.youtube.com/watch?vYe018rCVvOo&listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index1 https://www.youtube.com/watch?vbHcJCp2Fyxs&listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index2 分三步 1、 定義function b和w是需要透…

linux之autoconf(1)基礎介紹

Linux之autoconf(1)基礎介紹 Author:Onceday Date:2023年2023年12月10日 漫漫長路,才剛剛開始… 本文主要內容翻譯自Autoconf官方文檔,僅供學習交流之用。 全系列文章請查看專欄: buildroot編譯框架_Once_day的博客-CSDN博客。…

FL Studio21最新FL水果編曲軟件中文版在哪下載?

FL Studio21水果編曲軟件是一款專業的音樂制作軟件,被廣泛地應用于電子音樂、hip-hop、流行樂等多種音樂類型的制作。該軟件提供了豐富的音頻編曲工具和音樂效果器,讓用戶可以輕松地創作出高品質的音樂作品。同時,這也是一款非常易于上手的軟…

[ 云計算 | Azure 實踐 ] 在 Azure 門戶中創建 VM 虛擬機并進行驗證

文章目錄 一、前言二、在 Azure Portal 中創建 VM三、驗證已創建的虛擬機資源3.1 方法一:在虛擬機服務中查看驗證3.1 方法二:在資源組服務中查看驗證 四、文末總結 一、前言 本文會開始創建新系列的專欄,專門更新 Azure 云實踐相關的文章。 …

7-7 求補碼

整數在內存中以二進制補碼形式存儲。對于給定的整數n,要求輸出其4個字節長的補碼。1個字節8個二進制位。 輸入格式: 輸入一個整數n(?231≤n≤231?1)。 輸出格式: 輸出n的補碼。 輸入樣例1: 123輸出樣例1: 00000000000000000000000001111011輸入樣例2: -12…

YOLOv8改進 | 2023檢測頭篇 | 利用AFPN改進檢測頭適配YOLOv8版(全網獨家創新)

一、本文介紹 本文給大家帶來的改進機制是利用今年新推出的AFPN(漸近特征金字塔網絡)來優化檢測頭,AFPN的核心思想是通過引入一種漸近的特征融合策略,將底層、高層和頂層的特征逐漸整合到目標檢測過程中。這種漸近融合方式有助于…

【react hook】ahook的useThrottleEffect 是干嘛的

import { useThrottleEffect } from ahooks;useThrottleEffect 是 React Hooks 中的一個自定義 Hook,用于創建具有節流效果的副作用函數。 在 React 組件中,副作用函數通常在組件生命周期方法中執行,如 componentDidMount、componentDidUpda…

軟件無線電SDR-頻譜采集python實現

sdr做的頻譜采集,保存的500張頻譜圖,能看出來是什么東西嗎?

VC++使用GetProcessTimes獲取進程創建時間、銷毀時間、用戶態時間、內核態時間

一、GetProcessTimes函數簡介(微軟MSDN) 微軟提供了一個非常有用的API函數GetProcessTimes用來獲取進程創建時間、銷毀時間、用戶態時間、內核態時間,msdn連接為:GetProcessTimes 函數 (processthreadsapi.h) 其函數原型為&#…

Linux內核--內存管理(六)補充--內核頁表及內核虛擬空間

目錄 一、引言 二、內核頁表的結構 ------>2.1、頁表項結構 ------>2.2、swapper_pg_dir ------>2.3、內核頁表布局 ------>2.4、物理/虛擬 地址轉換 ------>2.5、頁表容量及表項偏移 ------>2.6、表項掩碼及控制區域 ------>2.7、頁標志位 ---…

【測試發布】

學習目標: 提示:這里可以添加學習目標 例如: 一周掌握 Java 入門知識 學習內容: 提示:這里可以添加要學的內容 例如: 搭建 Java 開發環境掌握 Java 基本語法掌握條件語句掌握循環語句 學習時間&#x…

基于NIQE算法的圖像無參考質量評價算法matlab仿真

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 4.1 空域NSS特征提取 4.2 圖像塊選取 4.3 MVG模型 4.4 NIQE指標 5.算法完整程序工程 1.算法運行效果圖預覽 2.算法運行軟件版本 MATLAB2022a 3.部分核心程序 clc; clear; close all; …

輕量封裝WebGPU渲染系統示例<46>- 材質組裝管線(MaterialPipeline)燈光、陰影、霧以及多Pass(源碼)

當前示例源碼github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MaterialPipelineMultiPasses.ts 當前示例運行效果: 此示例基于此渲染系統實現,當前示例TypeScript源碼如下: export class MaterialPipelin…

Python----內置模塊

1、什么是Python模塊 Python 模塊(Module),是一個Python 文件,以 .py 結尾,包含了 Python 對象定義和Python語句。模塊能定義函數,類和變量,模塊里也能包含可執行的代碼。 2、模塊的分類 在Python中,模塊…

[ffmpeg] AVFrame 功能整理

背景 AVFrame 主要用來存儲編碼前的原始數據。 AVFrame 結構體 在 frame.h 文件中 主要變量 uint8_t *data[AV_NUM_DATA_POINTERS]; // 存儲每個 planes 的數據 int linesize[AV_NUM_DATA_POINTERS]; // 每一行的音視頻數據 uint8_t **extended_data; // 視頻,…

java實現網絡聊天

網絡聊天實現步驟(從功能談論方法): 客戶端: 1.登錄面板:注冊提醒用戶注冊格式,登錄賬號密碼不為空,點擊登錄的時候需要連接服務器端,啟動聊天面板。(監聽用戶點擊登錄…