Kafka學習征途:基于Docker搭建Kafka環境

168f969ab17cc25f025e0d3ca8c827b6.png

【Kafka】|?總結/Edison Zhou

1準備工作

這里我們使用一臺Linux CentOS系統的服務器來模擬三個Kafka Broker的偽集群(即一臺server上開三個不同端口)環境用于學習測試,大概的準備工作有兩個:

安裝Docker

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O
/etc/yum.repos.d/docker-ce.repo
# yum -y install docker
# systemctl enable docker && systemctl start docker
# docker --version

安裝Docker Compose

# sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# sudo chmod +x /usr/local/bin/docker-compose
# docker-compose --version

2部署Kafka環境

準備docker-compose.yml文件

這里我的宿主機IP是172.16.16.4,你需要改為你自己的。

具體的 docker-compose.yml 文件內容如下:

version: '3.8'
services:zookeeper:image: wurstmeister/zookeepercontainer_name: zookeeperports:- "2181:2181"restart: alwayskafka1:image: wurstmeister/kafkadepends_on: [ zookeeper ]container_name: kafka1ports:- "9091:9091"environment:HOSTNAME: kafka1KAFKA_BROKER_ID: 0KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9091KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9091KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181/kafkaextra_hosts:kafka1: 172.16.16.4kafka2:image: wurstmeister/kafkadepends_on: [ zookeeper ]container_name: kafka2ports:- "9092:9092"environment:HOSTNAME: kafka2KAFKA_BROKER_ID: 1KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9092KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181/kafkaextra_hosts:kafka2: 172.16.16.4kafka3:image: wurstmeister/kafkadepends_on: [ zookeeper ]container_name: kafka3ports:- "9093:9093"environment:HOSTNAME: kafka3KAFKA_BROKER_ID: 2KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka3:9093KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181/kafkaextra_hosts:kafka3: 172.16.16.4

部署Zookeeper和Kafka

將docker-compose.yml文件拷貝到服務器,緊接著在該文件目錄下執行:docker-compose up -d 即可快速完成部署。

# docker-compose up -d
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Creating network "kafka_default" with the default driver
Creating zookeeper ... done
Creating kafka1    ... done
Creating kafka3    ... done
Creating kafka2    ... done

部署完成后,通過執行:docker-compose ps 來驗證一下。

# docker-compose psName                 Command               State                                  Ports                                
-------------------------------------------------------------------------------------------------------------------------
kafka1      start-kafka.sh                   Up      0.0.0.0:9091->9091/tcp,:::9091->9091/tcp                            
kafka2      start-kafka.sh                   Up      0.0.0.0:9092->9092/tcp,:::9092->9092/tcp                            
kafka3      start-kafka.sh                   Up      0.0.0.0:9093->9093/tcp,:::9093->9093/tcp                            
zookeeper   /bin/sh -c /usr/sbin/sshd  ...   Up      0.0.0.0:2181->2181/tcp,:::2181->2181/tcp, 22/tcp, 2888/tcp, 3888/tcp

其中,docker-compose.yml中HOSTNAME和extra_hosts的結合使用,會在容器中的/etc/hosts中增加一條記錄,通過執行:docker exec -it kafka1 cat /etc/hosts 來驗證一下。

# docker exec -it kafka1 cat /etc/hosts
.....
172.16.16.4  kafka1
.....

3容器內驗證與測試

安裝部署完成后,首先,我們進入容器內部,來驗證和測試一下。

docker exec -it kafka1 bash

創建測試Topic

創建一個測試用的topic:testtopic,此topic配置了2個分區,無額外的副本

kafka-topics.sh --create --zookeeper 172.16.16.4:2181/kafka --replication-factor 1 --partitions 2 --topic testtopic

模擬Producer

重新打開一個窗口,進入容器內部,模擬一個producer,在控制臺隨意發送一些字符串消息。

kafka-console-producer.sh --topic=testtopic --broker-list kafka1:9091,kafka2:9092,kafka3:9093
>tests^H
>haha

模擬Consumer

重新打開一個窗口,進入容器內部,模擬一個consumer,設置從頭開始消費,會收到producer發來的字符串消息。

kafka-console-consumer.sh --bootstrap-server kafka1:9091,kafka2:9092,kafka3:9093 --from-beginning --topic testtopic
tests
haha

可以看到,consumer成功接收到了producer發來的兩個string類型的message。

4使用GUI工具:Kafka Tool

Kafka Tool是一個用于管理和使用Apache Kafka集群的GUI應用程序。Kafka Tool提供了一個較為直觀的UI可讓用戶快速查看Kafka集群中的對象以及存儲在topic中的消息,提供了一些專門面向開發人員和管理員的功能。

NOTE:目前Kafka Tool已改名為Offset Explorer,不過我還是傾向于叫它 Kafka Tool。

下載地址:https://www.kafkatool.com/download.html

使用方式比較簡單,首先創建一個Connection,需要填寫的配置如下:

5fee576e285b1f47103bc0a8dd4fbe06.png

4b789d5486f2be35b4498430d3c4e45b.png

NOTE:這里bootstrap-servers參數列表填寫的是主機名,你可以先在自己電腦上的hosts文件中添加這個映射

然后點擊Test測試無誤就進入了以下界面,可以看到我們剛剛創建的topic有兩個分區已經可以顯示出來了。

f897d8df0a8ebf573c14e5485ae082fa.png

然后更改一下顯示內容的類型:從Byte Array改為String,方便查看。

0dfb357a2392e7134dfb0311a136b56d.png

通過上面的producer.sh再發送一些消息,然后通過kafka tool來查看一下消息:

d5de10823a29e6ee6243fbf033009989.png

End總結

本文總結了Kafka的測試環境搭建過程,本文選擇的是基于Docker來搭建非宿主機直接搭建,加之官方并沒有推出官方的Docker鏡像,因此建議生產環境還是不要通過Docker來搭建,開發/測試環境是可以的,快速且高效。

參考資料

極客時間,胡夕《Kafka核心技術與實戰》

B站,尚硅谷《Kafka 3.x入門到精通教程》

b9face7b3b2bc6ea3865ec40d15db059.gif

年終總結:Edison的2020年終總結

數字化轉型:我在傳統企業做數字化轉型

C#刷題:C#刷劍指Offer算法題系列文章目錄

.NET面試:.NET開發面試知識體系

.NET大會:2020年中國.NET開發者大會PDF資料

260272107568e3f53bfe55de37e291fc.png

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

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

相關文章

C語言試題104之輸出 9乘9 口訣

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:輸出 9乘9 口訣。 分析:分行與列考慮,共 9 行 9 列,i 控制行,j 控制列 2 、溫馨提…

160809308周子濟第7次作業

#include<stdio.h> #include<string.h> int main() {char name[20];int length,i,count[26]{0};printf("輸自己名拼音&#xff1a;");scanf("%s",name);lengthstrlen(name);for(i0;i<length;i)count[name[i]-a];for(i0;i<26;i)printf(&…

【Envi風暴】基于ENVI平臺提取ASTER DEM完整操作步驟(附案例數據)

本文講解在Envi平臺上,基于Aster影像數據,提取DEM的完整操作流程及注意事項,附實驗數據下載練習。 文章目錄 一、內容和目的二、提取DEM的原理三、ENVI平臺提取DEM流程四、DEM質量評估五、注意事項六、案例數據下載地址一、內容和目的 采用ASTER立體像對提取DEM,數據源: …

HashCode和hashMap、hashTable

2019獨角獸企業重金招聘Python工程師標準>>> 什么是哈希碼(HashCode) 在Java中&#xff0c;哈希碼代表對象的特征。 例如對象 String str1 “aa”, str1.hashCode 3104 String str2 “bb”, str2.hashCode 3106 String str3 “aa”, str3.hashCode 3104 根據Hash…

在OpenCloudOS使用snap安裝.NET 6

開源操作系統社區 OpenCloudOS 由騰訊與合作伙伴共同倡議發起&#xff0c;是完全中立、全面開放、安全穩定、高性能的操作系統及生態。OpenCloudOS 沉淀了多家廠商在軟件和開源生態的優勢&#xff0c;繼承了騰訊在操作系統和內核層面超過10年的技術積累&#xff0c;在云原生、穩…

C語言試題108之打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數 本身。例如:153 是一個“水仙花數”,因為 153=1 的三次方+5 的三次方+3 的三次方。

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該…

code vs1517 求一次函數解析式(數論 純數學知識)

1517 求一次函數解析式 時間限制: 1 s空間限制: 128000 KB題目等級 : 白銀 Silver題解查看運行結果題目描述 Description相信大家都做過練習冊上的這種 題吧&#xff1a; 已知一個一次函數的圖像經過點&#xff08;x1,y1&#xff09;、&#xff08;x2,y2&#xff09;,求該函數的…

【ArcGIS風暴】ArcGIS Editor for OSM中文教程(1):軟件下載及安裝

OpenStreetMap ArcGIS編輯器允許你使用ArcGIS工具為OpenStreetMap數據工作。這個桌面工具允許你加載OpenStreetMap數據并將其存儲在地理數據庫中 。你可以使用ArcMap熟悉的編輯環境的創建,修改,做網絡分析,或者更新數據。一旦您完成編輯后,你可以回到編輯修改OSM使它們提供…

使用Scrapy時出現雖然隊列里有很多Request但是卻不下載,造成假死狀態

2019獨角獸企業重金招聘Python工程師標準>>> DOWNLOAD_TIMEOUT Default: 180 The amount of time (in secs) that the downloader will wait before timing out. Note This timeout can be set per spider using download_timeoutspider attribute and per-request …

[轉]maven與java命名規則

MAVEN 與 JAVA 包命名規范 拋出問題 在使用MAVEN搭建模塊化項目時&#xff0c;我的組織結構如下&#xff1a; root模塊 文件夾名&#xff1a;package-module-project pom.xml文件&#xff1a; <project><groupId>com.chuillusion</groupId><artifactId>…

為什么 Istio 要使用 SPIRE 做身份認證?

今年 6 月初&#xff0c;Istio 1.14 發布 [1] &#xff0c;該版本中最值得關注的特性是新增對 SPIRE 的支持。SPIFFE[2] 和 SPIRE 都是 CNCF 孵化項目&#xff0c;其中 SPIRE 是 SPIFFE 的實現之一。本文將帶你了解 SPIRE 對于零信任架構的意義&#xff0c;以及 Istio 是為何使…

C語言試題106之有一對兔子,從出生后第 3 個月起每個月都生一對兔子,小兔子長到第三個月 后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

1、題目 題目:有一對兔子,從出生后第 3 個月起每個月都生一對兔子,小兔子長到第三個月 后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 分析:兔子的規律為數列 1,1,2,3,5,8,13,21… 2 、溫馨提示 想獲取更多C語言題目請猛搓這里==========》200個C語言…

顯式強制類型轉換

1. 日期顯式轉換為數字new Date; //1478845373322javascript有個奇特的語法&#xff0c;即構造函數沒有參數時可以不用帶()。不過最好還是使用ES5中新加入的靜態方法&#xff1a;Date.now()。2. ~運算符按位運算符只適用于32位整數&#xff0c;運算符會強制操作數使用32位格式。…

【ArcGIS風暴】ArcGIS Editor for OSM中文教程(2):下載及加載OSM數據

本文講解在ArcGIS中借助OpenStreetMap工具下載并加載OSM數據。 文章目錄 1. 下載OSM數據2. 加載OSM數據1. 下載OSM數據 在工具箱中雙擊Download OSM Data(XAPI)工具。 Download URL:http://www.overpass-api.de/api/xapi_meta? Downlaod Extent:與圖層lanzhou相同

Object.observe將不加入到ES7

先請看 Object.observe 的 API Object.observe(obj, callback[, acceptList])它用來監聽對象的變化&#xff0c;當給該對象添加屬性&#xff0c;修改屬性時都會被依次記錄下來 看一個示例 var person {} Object.observe(person, function(arr) {var change arr[0]console.log…

Kafka學習征途:.NET Core操作Kafka

【Kafka】| 總結/Edison Zhou1可用的Kafka .NET客戶端作為一個.NET Developer&#xff0c;自然想要在.NET項目中集成Kafka實現發布訂閱功能。那么&#xff0c;目前可用的Kafka客戶端有哪些呢&#xff1f;目前.NET圈子主流使用的是 Confluent.Kafkaconfluent-kafka-dotnet : htt…

C語言試題107之判斷 101至200 之間有多少個素數,并輸出所有素數。

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:判斷 101至200 之間有多少個素數,并輸出所有素數 分析:判斷素數的方法:用一個數分…

C語言將十進制輸出二進制、八進制、十六進制的方法總結

文章目錄 方法一:直接輸出方法二:itoa函數方法一:直接輸出 C語言中,控制printf函數輸出格式的是格式字符,printf沒有直接打出2進制數的格式符,直接打出16進制的格式符是x格式符,即%x。 printf函數中輸出的格式為printf("<格式化字符串>", <參量表&…

[Android] 修改ImageView的圖片顏色

有兩種方法&#xff1a; 方法1&#xff1a; ImageView imageView (ImageView) findViewById(R.id.arrow_image); Drawable tipsArrow imageView.getDrawable(); tipsArrow.setColorFilter(mContext.getResources().getColor(R.color.red_bg1), PorterDuf…

四叉樹算法

2019獨角獸企業重金招聘Python工程師標準>>> title: 四叉樹算法 date: 2016-1-11 15:10 categories: IOS tags: 算法 小小程序猿我的博客&#xff1a;http://daycoding.com 轉載&#xff1a;http://blog.csdn.net/zhanxinhang/article/details/6706217 高德iOS聚合…