网站首页 > 技术文章 正文
这个实例做了些什么?
- 搭建了拥有 3 节点 kafka、 3 节点 zookeeper 的 docker 集群服务;
- 分别创建了 1 个消息发布者和 2 个相同消费组的消息订阅者的 docker 应用;
- 使用 ab 进行并发测试,验证该实例消息的订阅 / 发布功能;
通过这个实例,能够了解些什么?
- 使用 Docker Compose 构建 Kafka 集群
- 使用 Golang 创建 Kafka Pub/Sub 实例
- 使用 ApacheBench 进行并发测试
- 使用 Makefile 简化构建操作命令
如果这个实例,对你了解 kakfa 有所帮助,请为项目添加 star★,非常感谢!
接下来为大家进行项目介绍,想要进一步详细请教的,欢迎在文末获取项目地址为项目添加star。
项目获取:
$ git clone --depth=1 https://github.com/ErikJiang/kafka_cluster_example.git
项目依赖工具:
- Make
- Kafkacat
- ApacheBench
支持 make 构建:
$ make
Choose a command run in kafka_cluster_example:
Usage: make [target]
Valid target values are:
vendor Auto generate go vendor dir.
up Docker compose up for src.
down Docker compose down for src.
ps Docker compose ps for src.
logs Docker compose logs for src.
clean Clean up docker images for src.
test Apache benchmark test for src.
kafka-up Docker compose up for kafka services.
kafka-down Docker compose down for kafka services.
kafka-clean Clean up log and data files for kafka services.
kafka-test Check running state of the kafka service.
help print this help message and exit.
1、配置 hosts 域名
使用 ifconfig -a 查看本地IP地址;
配置 /etc/hosts 文件,将域名 kfk1、kfk2、kfk3 映射到当前本地 IP 地址,例如;
# 假设本地IP为: 192.168.0.166192.168.0.166 kfk1 kfk2 kfk3
2、构建 Kafka 集群
# docker compose 构建方式:
$ docker-compose -f kafka/docker-compose.yml up -d
# 或使用 make 构建方式:
$ make kafka-up
如若在构建下载过程中,出现等待连接超时,可尝试在 docker 的 daemon.json 中添加注册镜像:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
若构建完成,可使用 kafkacat 检测服务是否正常运行:
# 直接进行检测验证:
$ kafkacat -L -b kfk1:19092
# 或使用 make 方式验证:
$ make kafka-test
3. 构建 Produce & Consume 服务
为 produce 和 consume 生成 vendor 依赖:
$ make vendor
构建 Produce & Consume Docker 服务
# 使用 docker compose 直接构建方式:
$ docker-compose -f src/docker-compose.yml up -d
# 或者使用 make 构建方式:
$ make up
4. 最终测试
使用 ApacheBench 进行并发测试(并发数为10,总计100个请求):
# 直接使用 ab 命令进行测试:
$ ab -n100 -c10 -T application/json -p test/ab_post_test.json http://127.0.0.1:9000/api/v1/data
# 或者使用 make 方式测试:
$ make test
项目地址:https://github.com/ErikJiang/kafka_cluster_example
猜你喜欢
- 2024-10-03 Spring Boot API 如何获得 JSON 数据
- 2024-10-03 大白话 golang 教程-20-使用 RPC 远程调用
- 2024-10-03 软件更新速递:Go发布1.15版本,这些新特性抢先看
- 2024-10-03 掌握 Postman 工具发送请求的简易教程
- 2024-10-03 python接口自动化-Json数据处理(python接口自动化流程)
- 2024-10-03 python接口自动化(八)--发送post请求的接口(详解)
- 2024-10-03 Flink 在唯品会的实践(唯品会 分析)
- 2024-10-03 web开发之-ajax的基本使用(处理json数据)
- 2024-10-03 Java POST JSON 数据处理异常 (code 160)): was expecting double-quote
- 2024-10-03 使用Postman发送POST请求的指南(postman如何发送post请求)
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)