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.mzph.cn/news/285555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言试题104之输出 9乘9 口诀

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:输出 9乘9 口诀。 分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列 2 、温馨提…

【Envi风暴】基于ENVI平台提取ASTER DEM完整操作步骤(附案例数据)

本文讲解在Envi平台上,基于Aster影像数据,提取DEM的完整操作流程及注意事项,附实验数据下载练习。 文章目录 一、内容和目的二、提取DEM的原理三、ENVI平台提取DEM流程四、DEM质量评估五、注意事项六、案例数据下载地址一、内容和目的 采用ASTER立体像对提取DEM,数据源: …

HashCode和hashMap、hashTable

2019独角兽企业重金招聘Python工程师标准>>> 什么是哈希码(HashCode) 在Java中,哈希码代表对象的特征。 例如对象 String str1 “aa”, str1.hashCode 3104 String str2 “bb”, str2.hashCode 3106 String str3 “aa”, str3.hashCode 3104 根据Hash…

C语言试题108之打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方+5 的三次方+3 的三次方。

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该…

【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 …

为什么 Istio 要使用 SPIRE 做身份认证?

今年 6 月初,Istio 1.14 发布 [1] ,该版本中最值得关注的特性是新增对 SPIRE 的支持。SPIFFE[2] 和 SPIRE 都是 CNCF 孵化项目,其中 SPIRE 是 SPIFFE 的实现之一。本文将带你了解 SPIRE 对于零信任架构的意义,以及 Istio 是为何使…

C语言试题106之有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

1、题目 题目:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析:兔子的规律为数列 1,1,2,3,5,8,13,21… 2 、温馨提示 想获取更多C语言题目请猛搓这里==========》200个C语言…

【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])它用来监听对象的变化,当给该对象添加属性,修改属性时都会被依次记录下来 看一个示例 var person {} Object.observe(person, function(arr) {var change arr[0]console.log…

Kafka学习征途:.NET Core操作Kafka

【Kafka】| 总结/Edison Zhou1可用的Kafka .NET客户端作为一个.NET Developer,自然想要在.NET项目中集成Kafka实现发布订阅功能。那么,目前可用的Kafka客户端有哪些呢?目前.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("<格式化字符串>", <参量表&…

四叉树算法

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聚合…

2019年中国教育信息化行业研究报告

2019年中国教育信息化行业研究报告 教育行业丨研究报告 本文转自&#xff1a;艾瑞咨询 核心摘要&#xff1a; 教育信息化2.0时代&#xff0c;教育相关政府/学校以更开放的姿态对待社会各类业态的进入&#xff0c;共建共享优质教育资源&#xff0c;提升教育公平与教育质量。同…

C语言试题109之将一个正整数分解质因数。例如:输入 90,打印出 90=2乘3乘3乘5

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:将一个正整数分解质因数。例如:输入 90,打印出 90=233*5。 分析:对 n 进行分解质因…

dotnet 使用 Crossgen2 对 DLL 进行 ReadyToRun 提升启动性能

我对几个应用进行严格的启动性能评估&#xff0c;对比了在 .NET Framework 和 dotnet 6 下的应用启动性能&#xff0c;非常符合预期的可以看到&#xff0c;在用户的设备上&#xff0c;经过了 NGen 之后的 .NET Framework 可以提供非常优越的启动性能&#xff0c;再加上 .NET Fr…

使用myeclipse建立maven项目(重要)

maven是管理项目的&#xff0c;myeclipse是编写代码的。第一次写项目都要配置好多东西&#xff0c;很麻烦&#xff0c;now 来看看怎样新建一个maven项目。 工具/原料 myeclipsemaven方法/步骤 因为教程使用的maven是自己下载配置的&#xff0c;并没有使用myeclipse自带的&#…

LeetCode 每日一题 Day 22 || 枚举(数学方法)/二分

1954. 收集足够苹果的最小花园周长 给你一个用无限二维网格表示的花园&#xff0c;每一个 整数坐标处都有一棵苹果树。整数坐标 (i, j) 处的苹果树有 |i| |j| 个苹果。 你将会买下正中心坐标是 (0, 0) 的一块 正方形土地 &#xff0c;且每条边都与两条坐标轴之一平行。 给你…

不用@微信官网了,用python给自己的微信头像加个小国旗

国旗LOGO&#xff08;png透明格式&#xff09;&#xff1a; 微信头像 合成结果&#xff1a; import base64 import os import re from io import BytesIO from PIL import Image import tkinter as tk from tkinter import filedialog# 水印图片 可以自己指定 #markImageImage…