Kafka 單機多 Broker 實例集群搭建 | 詳情

全文目錄:

    • 開篇語
    • 前言
    • 1. Kafka 集群架構
    • 2. 環境要求
      • 2.1 安裝 Java
      • 2.2 安裝 Zookeeper
    • 3. 安裝 Kafka
    • 4. 創建 Topic
      • 4.1 查看創建的 Topic
    • 5. 測試 Kafka 集群
      • 5.1 生產者(Producer)測試
      • 5.2 消費者(Consumer)測試
    • 6. 小結
    • 文末

開篇語

哈嘍,各位小伙伴們,你們好呀,我是喵手。運營社區:C站/掘金/騰訊云/阿里云/華為云/51CTO;歡迎大家常來逛逛

??今天我要給大家分享一些自己日常學習到的一些知識點,并以文字的形式跟大家一起交流,互相學習,一個人雖可以走的更快,但一群人可以走的更遠。

??我是一名后端開發愛好者,工作日常接觸到最多的就是Java語言啦,所以我都盡量抽業余時間把自己所學到所會的,通過文章的形式進行輸出,希望以這種方式幫助到更多的初學者或者想入門的小伙伴們,同時也能對自己的技術進行沉淀,加以復盤,查缺補漏。

小伙伴們在批閱的過程中,如果覺得文章不錯,歡迎點贊、收藏、關注哦。三連即是對作者我寫作道路上最好的鼓勵與支持!

前言

Apache Kafka 是一個分布式流式平臺,廣泛用于構建高吞吐量的消息傳遞系統。Kafka 可以作為消息隊列、日志收集系統等進行使用。通常,Kafka 集群由多個 Broker 實例組成,以實現負載均衡和容錯能力。在本文中,我們將詳細介紹如何在本地機器上搭建一個包含多個 Kafka Broker 的集群,并為你提供相應的配置步驟和技巧。

1. Kafka 集群架構

Kafka 集群由多個 Broker 實例組成,每個 Broker 實例都管理著一部分數據。Kafka 允許集群中的多個 Broker 共同工作,通過分區(Partition)和副本(Replica)機制來保證數據的高可用性和擴展性。

  • Broker:Kafka 集群中的每個節點(服務)稱為 Broker。每個 Broker 負責處理一部分的生產者和消費者請求。
  • Topic:Kafka 中的消息流是通過 Topic 來組織的,每個 Topic 可以包含多個分區(Partition),而每個分區又可以有多個副本。
  • Partition:每個 Topic 可以分為多個分區,分區內的消息是有序的。分區能夠實現數據的并行處理。
  • Replica:每個分區有多個副本(Replica),副本之間在不同的 Broker 上,以確保數據的可靠性和高可用性。

2. 環境要求

在本地搭建 Kafka 多 Broker 集群,需要以下環境:

  • Java:Kafka 是用 Java 開發的,因此需要安裝 Java(推薦使用 JDK 8 版本)。
  • Zookeeper:Kafka 使用 Zookeeper 來管理集群的元數據和協調各個 Broker 實例。我們需要配置 Zookeeper。

2.1 安裝 Java

Kafka 需要 Java 環境來運行。你可以通過以下命令檢查是否已安裝 Java:

java -version

如果沒有安裝 Java,可以從 Oracle 官方網站 下載并安裝 JDK。

2.2 安裝 Zookeeper

Kafka 依賴 Zookeeper 來管理集群狀態。雖然 Kafka 2.8.0 及以上版本開始支持 KRaft 模式(不依賴 Zookeeper),但在本地多 Broker 集群的搭建中,我們通常還是使用 Zookeeper。

你可以通過下載并配置 Zookeeper 來進行集群管理:

  1. 下載 Zookeeper:

    wget https://mirror.bit.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.7.0-bin.tar.gz
    tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
    cd apache-zookeeper-3.7.0-bin
    
  2. 配置 Zookeeper:編輯 conf/zoo.cfg 配置文件,至少指定數據目錄。

    cp conf/zoo_sample.cfg conf/zoo.cfg
    

    打開 zoo.cfg 文件,并配置數據目錄和端口(默認端口是 2181):

    dataDir=/var/lib/zookeeper
    clientPort=2181
    
  3. 啟動 Zookeeper:

    bin/zkServer.sh start
    

    使用以下命令查看 Zookeeper 狀態:

    bin/zkServer.sh status
    

3. 安裝 Kafka

  1. 下載 Kafka:

    wget https://mirror.bit.edu.cn/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz
    tar -zxvf kafka_2.13-2.8.0.tgz
    cd kafka_2.13-2.8.0
    
  2. 配置 Kafka:

    打開 config/server.properties 配置文件,配置以下項:

    • broker.id:每個 Broker 實例必須指定唯一的 ID。對于每個 Kafka Broker 實例,設置不同的 broker.id
    • listeners:Kafka Broker 啟動時的監聽地址,可以使用 PLAINTEXT://hostname:9092PLAINTEXT://0.0.0.0:9092
    • zookeeper.connect:配置 Zookeeper 地址,用于 Kafka 集群中的協調。

    配置示例如下:

    broker.id=1
    listeners=PLAINTEXT://localhost:9092
    zookeeper.connect=localhost:2181
    log.dirs=/tmp/kafka-logs
    num.partitions=1
    

    對于其他 Kafka 實例,只需更改 broker.idlisteners 配置。例如,第二個實例的配置文件可以如下:

    broker.id=2
    listeners=PLAINTEXT://localhost:9093
    zookeeper.connect=localhost:2181
    log.dirs=/tmp/kafka-logs-2
    num.partitions=1
    

    以上配置意味著第二個 Kafka Broker 實例將監聽 localhost:9093,并且 broker.id 為 2。

  3. 啟動 Kafka Broker:

    啟動 Kafka Broker 時,指定不同的 server.properties 配置文件。分別啟動多個 Kafka Broker 實例:

    • 啟動第一個 Broker:

      bin/kafka-server-start.sh config/server.properties
      
    • 啟動第二個 Broker(更改配置文件中的 broker.id 和端口):

      bin/kafka-server-start.sh config/server-2.properties
      

4. 創建 Topic

Kafka 中的數據是按 Topic 來組織的,每個 Topic 又可以劃分成多個 Partition。我們可以使用以下命令創建 Topic:

bin/kafka-topics.sh --create --topic my_topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 2

解釋:

  • --topic:指定 Topic 名稱。
  • --partitions:指定 Partition 數量。
  • --replication-factor:指定副本數。
  • --bootstrap-server:指定 Kafka Broker 地址。

4.1 查看創建的 Topic

可以通過以下命令查看當前 Kafka 集群中的所有 Topic:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092

5. 測試 Kafka 集群

5.1 生產者(Producer)測試

通過 Kafka 提供的生產者工具來發送消息:

bin/kafka-console-producer.sh --topic my_topic --bootstrap-server localhost:9092

輸入消息并按回車,消息將被發送到 Kafka 集群的 my_topic Topic 中。

5.2 消費者(Consumer)測試

通過 Kafka 提供的消費者工具來接收消息:

bin/kafka-console-consumer.sh --topic my_topic --bootstrap-server localhost:9092 --from-beginning

這個命令會消費從 my_topic Topic 中開始的所有消息。

6. 小結

通過以上步驟,我們成功在本地搭建了一個包含多個 Broker 實例的 Kafka 集群。Kafka 的高可用性和分布式特性可以幫助我們處理大規模的數據流和消息系統。本文介紹了如何在單機環境下啟動一個多 Broker 的 Kafka 集群,配置 Zookeeper,啟動多個 Kafka Broker,并測試生產者和消費者。

搭建和配置 Kafka 集群時,需要特別注意 Broker 的 ID、端口的配置,以及 Zookeeper 的連接。通過合理配置,我們可以實現 Kafka 集群的高可用和負載均衡,滿足大規模數據處理和消息傳輸的需求。

… …

文末

好啦,以上就是我這期的全部內容,如果有任何疑問,歡迎下方留言哦,咱們下期見。

… …

學習不分先后,知識不分多少;事無巨細,當以虛心求教;三人行,必有我師焉!!!

wished for you successed !!!


??若喜歡我,就請關注我叭。

??若對您有用,就請點贊叭。
??若有疑問,就請評論留言告訴我叭。


版權聲明:本文由作者原創,轉載請注明出處,謝謝支持!

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

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

相關文章

Ajax——異步前后端交互提升OA系統性能體驗

本文介紹了Ajax中的基礎使用,包括XMLHttpRequest的狀態變化、并使用BMI 場景的示例進行介紹,以及結合 DAO 和 Servlet 處理OA系統復雜業務邏輯和JSON數據的處理等等。 本文目錄一、Ajax 基礎html頁面二、 XMLHttpRequestXMLHttpRequest的狀態變化同步和異…

【最后一個單詞的長度】

思路 逆向遍歷: 從字符串末尾開始向前遍歷,跳過末尾的空格,直到找到非空格字符。 遇到非空格字符時開始計數,直到再次遇到空格或字符串開頭。 狀態標記: 使用 state 標記是否已經進入最后一個單詞的計數階段&#xff1…

OpenCV學習 day3

一、灰度實驗 將彩色圖像轉換為灰度圖像的過程稱為灰度化,這種做法在圖像處理中和計算機視覺領域非常常見 1、灰度圖 灰度圖是一種 單通道圖像,每個像素僅存儲 亮度信息(0純黑,255純白),沒有顏色信息&#…

基于單片機一氧化碳CO檢測/煤氣防中毒檢測報警系統

傳送門 👉👉👉👉其他作品題目速選一覽表 👉👉👉👉其他作品題目功能速覽 概述 基于單片機的CO檢測系統通過傳感器實時監測環境中的一氧化碳濃度,結合信號處理電路與…

前端-移動Web-day3

目錄 1、視口 2、rem體驗 3、rem基本使用 4、媒體查詢 5、rem適配 6、rem布局 7、less-體驗 8、less-注釋 9、less-運算 10、less-嵌套 11、less-變量 12、less-導入 13、less-導出 14、less-禁止導出 15、案例-極速問診 1、視口 <!DOCTYPE html> <htm…

【正點原子K210連載】第二十四章 按鍵輸入實驗 摘自【正點原子】DNK210使用指南-CanMV版指南

第二十四章 按鍵輸入實驗 本章實驗將介紹如何使用CanMV讓Kendryte K210獲取板載按鍵的狀態。通過本章的學習&#xff0c;讀者將學習到在CanMV下讀取Kendryte K210的GPIO上的高低電平狀態。 本章分為如下幾個小節&#xff1a; 14.1 maix.GPIO模塊介紹 14.2 硬件設計 14.3 程序設…

基于springboot/java/VUE的旅游管理系統/旅游網站的設計與實現

用戶&#xff1a;注冊&#xff0c;登錄&#xff0c;旅游景點&#xff0c;酒店信息&#xff0c;旅游線路&#xff0c;公告信息&#xff0c;留言板&#xff0c;后臺管理&#xff0c;個人中心&#xff0c;門票預訂管理&#xff0c;酒店預訂管理管理員&#xff1a;登錄&#xff0c;…

Python Excel 高階教程:使用 Spire.XLS 插入、修改和刪除迷你圖

Python 操作 Word 文檔&#xff1a;主流庫對比與選擇指南 在辦公自動化、報告生成、數據處理等領域&#xff0c;利用 Python 程序化地創建、讀取或修改 Microsoft Word 文檔 (.docx 格式) 是一項非常實用的技能。Python 生態中有多個優秀的庫可以完成這項任務&#xff0c;但它…

WebPages PHP:深入解析PHP在網頁開發中的應用

WebPages PHP&#xff1a;深入解析PHP在網頁開發中的應用 引言 隨著互聯網技術的飛速發展&#xff0c;PHP作為一種開源的腳本語言&#xff0c;已經在網頁開發領域占據了舉足輕重的地位。本文將深入探討PHP在網頁開發中的應用&#xff0c;包括其優勢、常用框架、開發流程以及未來…

【深度學習】【三維重建】windows11環境配置PyTorch3d詳細教程

【深度學習】【三維重建】windows11環境配置PyTorch3d詳細教程 文章目錄【深度學習】【三維重建】windows11環境配置PyTorch3d詳細教程前言確定版本對應關系源碼編譯安裝Pytorch3d總結前言 本人windows11下使用搭建PyTorch3d環境&#xff0c;故此以詳細教程以該算法依賴的環境…

SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分離版:日志管理(四)集成Spring Security

目錄 一、前言 二、后端開發及調整 1.日志管理開發 2.配置調整 3.日志入庫&#xff08;注解、切面&#xff09; 三、前端調整 1.日志管理開發 四、附&#xff1a;源碼 1.源碼下載地址 五、結語 一、前言 此文章在上次調整的基礎上開發后端管理系統的用戶請求日志功能&…

ceph 14.2.22 nautilus Balancer 數據平衡

Ceph Balancer (upmap 模式) 啟用與配置 在 Ceph Nautilus (14.2.22) 版本中啟用和配置 Balancer 的完整步驟 1. 前提檢查 檢查集群的初始狀態和版本。 集群狀態 (ceph -s)cluster:id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxhealth: HEALTH_OKservices:mon: 3 daemons, quo…

在Linux上對固態硬盤進行分區、格式化和掛載的步驟

在Linux上對固態硬盤進行分區、格式化和掛載的步驟如下&#xff1a; 插入固態硬盤&#xff1a;將固態硬盤插入計算機的SATA或M.2接口。 確認固態硬盤被識別&#xff1a;打開終端&#xff0c;輸入以下命令查看硬盤是否被系統識別 fdisk -l 查找硬盤列表中的固態硬盤&#xf…

用Unity結合VCC更改人物模型出現的BUG

1、上傳模型時出現錯誤經過排查是因為服裝發型預制體放到人物模型上之后&#xff0c;物體上自動多了一個空腳本&#xff0c;懷疑是VRC工具箱自動添加的。解決方法&#xff1a;在上傳前將帶有空腳本的物體上的組件刪除即可2、添加頭發時出現模型碰撞錯誤按照【【VRCHAT】從零開始…

k8s之DevicePlugin

解密 Kubernetes Device Plugin&#xff1a;讓容器輕松駕馭特殊硬件 在容器化技術飛速發展的今天&#xff0c;容器憑借輕量、隔離、可移植的特性成為應用部署的主流選擇。但在實際應用中&#xff0c;當容器需要訪問 GPU、FPGA 等特殊硬件資源時&#xff0c;事情就變得不那么簡單…

動態規劃Day7學習心得

今天給動態規劃掃個尾&#xff0c;還有兩題。 第一道&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 暴力解法 兩層for循環&#xff0c;遍歷區間起始位置和終止位置&#xff0c;然后還需要一層遍歷判斷這個區間是不是回文。所以時間復雜度&#xff1a;O…

SpringCloud實戰:機器人對戰系統架構

基于Spring Cloud的機器人對戰 以下是基于Spring Cloud的機器人對戰實例相關案例和技術實現方向的整理,涵蓋微服務架構設計、通信機制及典型應用場景: 分布式對戰系統架構 采用Spring Cloud Alibaba+Nacos實現服務注冊與發現,每個機器人實例作為獨立微服務部署。通過Open…

LLM 核心能力解構與項目實踐指南

大語言模型&#xff08;LLM&#xff09;的爆發式發展&#xff0c;本質上是其核心能力在產業場景中的規模化驗證。作為技術博主&#xff0c;本文將系統拆解 LLM 的六大核心能力&#xff0c;結合工業級項目案例&#xff0c;提供從能力映射到工程實現的完整技術路徑&#xff0c;并…

retro-go 1.45 編譯及顯示中文

最近做了個使用 retro-go 的開源掌機 基于ESP32-S3的C19掌機&#xff08;適配GBC外殼&#xff09; - 立創開源硬件平臺 &#xff0c;做完后用提供的固件發現屏幕反顯了&#xff0c;估計是屏幕型號不太對&#xff0c;隨即自己拉 retro-go 官方庫來編譯&#xff0c;拉取的最新的 …

中州養老項目:Mybatis自動填充攔截器

功能:在新增護理項目的時候,創建人,創建時間和修改時間字段會自動攔截填充,這些公共字段可以省去我們一個一個處理的麻煩依靠:AutoFillInterceptor攔截器,MybatisConfig配置類第一步:我們需要借助一個MybatisConfig,configuration標志著這是一個配置類,我們需要將autoFillInter…