Ubuntu18.04 docker kafka 本地测试环境搭建

news2024/11/25 0:34:27

文章目录

  • 一、kafka 介绍
  • 二、Ubuntu docker kafka 本地测试环境搭建
    • 2.1 docker kafka 启动
      • 2.1.1 下载镜像
      • 2.1.2 启动 wurstmeister/zookeeper
      • 2.1.3 启动 wurstmeister/kafka
    • 2.2 docker kafka 测试数据收发
      • 2.2.1 docker kafka 测试数据收发
      • 2.2.2 windows验证
  • 三、嵌入式集成
  • 四、kafka 原理
  • 五、参考资料

一、kafka 介绍

Kafka是一种分布式流处理平台,也是一个高吞吐量的分布式发布订阅消息系统。它由LinkedIn开发,并于2011年成为Apache软件基金会的顶级项目。

Kafka的设计目标是能够处理大规模的消息流,并提供持久性、高吞吐量和低延迟的特性。它的核心概念是发布-订阅模型,其中消息被组织成一个或多个主题(Topics),生产者(Producers)将消息发布到主题中,而消费者(Consumers)从主题中订阅并处理消息。

Kafka的主要特点包括:

  1. 高吞吐量:Kafka能够处理大规模的消息流,每秒可以处理数百万条消息。

  2. 持久性:Kafka将消息持久化存储在磁盘上,确保消息的可靠性和持久性。

  3. 可扩展性:Kafka采用分布式架构,可以在集群中添加更多的节点来扩展容量和吞吐量。

  4. 容错性:Kafka使用分布式复制机制来保证数据的可靠性,即使某个节点故障,数据仍然可用。

  5. 多语言支持:Kafka提供了多种编程语言的客户端接口,包括Java、Python、Go等,方便开发者使用。

Kafka在实时数据处理、日志收集、事件驱动架构等场景中被广泛应用。它被许多大型互联网公司用于构建高性能、可靠的数据管道和实时流处理系统。

二、Ubuntu docker kafka 本地测试环境搭建

2.1 docker kafka 启动

2.1.1 下载镜像

kafka需要zookeeper管理,所以需要先安装zookeeper

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka

# 查看镜像是否下载成功
docker images

2.1.2 启动 wurstmeister/zookeeper

# 启动镜像生成容器
docker run -d --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 wurstmeister/zookeeper

这个Docker命令是用来启动一个名为"zookeeper"的容器,容器的镜像是"wurstmeister/zookeeper"。下面是对命令中各个参数的详细解释:

  • -d:表示将容器以后台模式运行,即在后台运行容器而不占用当前终端窗口。
  • –name zookeeper:指定容器的名称为"zookeeper",这个名称可以自定义。
  • -p 2181:2181:指定将容器的2181端口映射到主机的2181端口,这是Zookeeper的客户端端口。
  • -p 2888:2888:指定将容器的2888端口映射到主机的2888端口,这是Zookeeper的服务器之间通信的端口。
  • -p 3888:3888:指定将容器的3888端口映射到主机的3888端口,这是Zookeeper的选举端口。
  • wurstmeister/zookeeper:指定了容器的镜像,即使用"wurstmeister/zookeeper"镜像来创建容器。

通过运行这个Docker命令,你将在后台启动一个Zookeeper容器,并将其相关端口映射到主机的相应端口上,以便访问和使用Zookeeper服务。

# 进入容器
docker exec -it kafka bash

# 其他示例
docker run -d --name zookeeper -p 0.0.0.0:2181:2181 -p 0.0.0.0:2888:2888 -p 0.0.0.0:3888:3888 wurstmeister/zookeeper

2.1.3 启动 wurstmeister/kafka

docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=10.1.36.108 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka

以下是docker run命令中各个参数的详细说明:

-d:将容器设置为后台运行模式。

–name kafka:给容器命名为"kafka"。

–publish 9092:9092:将主机的9092端口映射到容器的9092端口,用于Kafka的通信。

–link zookeeper:将容器连接到名为"zookeeper"的另一个容器。

–env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181:设置环境变量KAFKA_ZOOKEEPER_CONNECT为"zookeeper:2181",指定Kafka连接到的Zookeeper的地址。

–env KAFKA_ADVERTISED_HOST_NAME=10.1.36.108:设置环境变量KAFKA_ADVERTISED_HOST_NAME为"10.1.36.108",指定Kafka广告的主机名,即Kafka对外公开的主机名。

–env KAFKA_ADVERTISED_PORT=9092:设置环境变量KAFKA_ADVERTISED_PORT为"9092",指定Kafka广告的端口号,即Kafka对外公开的端口号。

–volume /etc/localtime:/etc/localtime:将主机的/etc/localtime文件挂载到容器的/etc/localtime文件,用于设置容器的时区与主机相同。

wurstmeister/kafka:指定要使用的Kafka镜像。

这些参数用于在Docker中运行一个名为"kafka"的容器,并配置Kafka与Zookeeper的连接以及对外公开的主机名和端口号。

2.2 docker kafka 测试数据收发

2.2.1 docker kafka 测试数据收发

docker kafka 已运行,要测试Kafka的收发数据功能,可以按照以下详细步骤进行操作:

  1. 创建一个名为"test"的topic:
docker exec -it kafka kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
  1. 在一个终端窗口中,启动一个Kafka消费者来接收消息:
docker exec -it kafka kafka-console-consumer.sh --topic test --bootstrap-server localhost:9092
  1. 在另一个终端窗口中,启动一个Kafka生产者来发送消息:
docker exec -it kafka kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
  1. 现在你可以在Kafka生产者的终端窗口中输入消息,并按下回车键发送。你会在消费者的终端窗口中看到接收到的消息。

这样,你就可以测试Kafka的收发数据功能了。记得在测试完成后,使用Ctrl+C来停止消费者和生产者的终端进程,并可以使用以下命令删除测试topic:

docker exec -it kafka kafka-topics.sh --delete --topic test --bootstrap-server localhost:9092

希望这些步骤和命令对你有帮助!如果有任何问题,请随时告诉我。

2.2.2 windows验证

windows上下载kafkatool,然后做验证:
在这里插入图片描述

三、嵌入式集成

在嵌入式 C/C++ 中集成 Kafka,有几个开源库可以使用。以下是其中一些常用的库:

  1. librdkafka:librdkafka 是一个功能强大且广泛使用的 C/C++ 客户端库,用于与 Kafka 集群进行通信。它提供了生产者和消费者的 API,支持高性能、低延迟的消息传递。

  2. libkafka:libkafka 是一个轻量级的 C++ 客户端库,用于与 Kafka 进行通信。它提供了生产者和消费者的 API,支持异步和同步消息传递。

  3. rdkafka:rdkafka 是 librdkafka 的 C++ 封装库,提供了更方便的 C++ 接口。它保持了 librdkafka 的高性能和稳定性,并提供了更易用的面向对象的编程接口。

这些库都是开源的,并且在大量项目中得到了广泛的使用和验证。你可以根据你的具体需求选择适合你的库,并参考它们的文档和示例代码以获取更多详细信息和用法示例。

四、kafka 原理

五、参考资料

  • ubuntu18.04 docker安装kafka
  • Docker安装kafka
  • Kafka Listeners - Explained
  • 在UBUNTU中禁用IPV6协议的两种办法.MD

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/747025.html

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

相关文章

加密劫持者攻击教育机构

我们的专家分析了2023年第一季度的当前网络威胁。研究表明,独特事件的数量增加,勒索软件活动激增,特别是针对学术和教育机构。我们记录了大量与就业有关的网络钓鱼邮件,出现了QR网络钓鱼和恶意广告的增加。 我们的研究表明&#…

「2023 最新版」Java 工程师面试题总结 (1000 道题含答案解析)

作为一名优秀的程序员,技术面试都是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 如果你参加过一些大厂面试,肯定会遇到一些这样的问题: 1、看你项目都用的框架,熟悉…

AIGC:文生图stable-diffusion-webui部署及使用

1 stable-diffusion-webui介绍 Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用,利用 gradio 模块搭建出交互程序,可以在低代码 GUI 中立即访问 Stable Diffusion Stable Diffusion 是一个画像生成 AI,能够模拟和重建几乎…

Linux(centos7)下安装mariadb10详解

MariaDB 和 MySQL 之间存在紧密的关系。 起源:MariaDB 最初是作为 MySQL 的一个分支而创建的。它的初始目标是保持与 MySQL 的兼容性,并提供额外的功能和性能改进。 共同的代码基础:MariaDB 使用了 MySQL 的代码基础,并在此基础上…

PYTHON 解码 IP 层

PYTHON 解码 IP 层 引言1.编写流量嗅探器1.1 Windows 和 Linux 上的包嗅探2.解码 IP 层2.1 struct 库3.编写 IP 解码器4.解码 ICMP5.总结 作者:高玉涵 时间:2023.7.12 环境:Windows 10 专业版 22H2,Python 3.10.4 引言 IP 是 …

JWT的深入理解

1、JWT是什么 JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在不同实体之间安全地传输信息。它由三部分组成,即头部(Header)、载荷(Payload)和签名&…

获取QT界面坐标的各种方法

链接 ract() 获取rect所在部件的尺寸。 rect()返回的QRect对象可以用来做什么

openResty的Redis模块踩坑记录

OpenResty提供了操作Redis的模块,我们只要引入该模块就能直接使用。说是这样说,但是实践起来好像并不太顺利。 1.设置了密码的redis,lua业务逻辑中需要添加身份认证代码 网上很多资料、文章似乎都是没有设置redis密码,说来也奇怪…

JS区域滤镜

思路 简单一点的&#xff0c;像素点X坐标小于图宽1/3和大于2/3的点变灰&#xff0c;中间的点不变。 复杂的暂时不会搞。 原图 处理后 <html> <style> #canvas { width:100%; } </style> <body> <input id"file" type"file" …

python中的生成器(generator)

一、生成器 生成器是 Python 中非常有用的一种数据类型&#xff0c;它可以让你在 Python 中更加高效地处理大量数据。生成器可以让你一次生成一个值&#xff0c;而不是一次生成一个序列&#xff0c;这样可以节省内存并提高性能 二、实现generator的两种方式 python中的gener…

SAP从放弃到入门系列之WIP Batch(Work-in-Process ) -Part1

目录 一、 概述二、 系统配置三、 数据设置最后 ERP系统的复杂性并不单是架构设计和技术造成的&#xff0c;而是它所要支撑的业务场景&#xff0c;涉及行业越广泛越复杂软件功能越复杂&#xff0c;复杂的背后是业务实践沉淀和优化的流程。平时看着部分系统功能很复杂&#xff0…

47.判断类关键字 if else switch case default

目录 1 if 2 else 3 判断的嵌套 4 switch,case,default 4.1 基本使用 4.2 需要注意的点 1 if if后面的括号加表达式的内容&#xff0c;大括号中加入 条件为true 时要运行的代码 经测试如果我们将a的值设置为0&#xff0c;则不会弹出警告框 2 else 和if配合使用…

ubuntu netplan工具原理(网络配置、ip修改ip、固定ip)(NetworkManager)

https://netplan.io/ 文章目录 netplan工作原理netplan -h原翻译命令释义- help&#xff1a;显示netplan的帮助消息。- apply&#xff1a;将当前netplan配置应用到运行系统。示例命令&#xff1a;netplan apply --debug- generate&#xff1a;从/etc/netplan/*.yaml生成特定于后…

iOS开发 - NotificationService语音播报

iOS NotificationService语音播报 最近碰到个接收到推送要实现语音播报的需求&#xff0c;需要后台推送通知&#xff0c;APP客户端收到通知之后语音播放&#xff1a;“您的账户收到一笔巨款”的功能。 因为工程之前已经集成了极光推送服务。这里直接使用Notification Service…

【科研绘图】MacOS系统OmniGraffle实用指南

用过不少绘图软件&#xff0c;包括Visio (only for Windows)、ProcessOn、draw.io等主流软件&#xff0c;然后换Mac后尝试了实验室在用的OmniGraffle&#xff0c;才第一次感受到了绘图软件的人性化和强大&#xff01; 实用操作总结 按住Shift后调整元素位置或调整线段&#x…

使用STM32 再实现感应开关盖垃圾桶

硬件介绍 SG90舵机 如上图所示的舵机SG90&#xff0c;橙线对应PWM信号&#xff0c;而PWM波的频率不能太高&#xff0c;大约50Hz&#xff0c;即周期0.02s&#xff0c;20ms左右。 在20ms的周期内&#xff0c;高电平占多少秒和舵机转到多少度的关系如下&#xff1a; 0.5ms-----0度…

性能测试持续学习 Docker 新建镜像,启动 POD

目录 前言&#xff1a; 1、构建镜像 2、使用已有镜像启动 Pod 前言&#xff1a; 在进行性能测试时&#xff0c;持续学习Docker的使用可以帮助测试团队更好地管理测试环境和资源。通过使用Docker&#xff0c;可以轻松创建和管理测试环境的镜像&#xff0c;并通过启动POD来快…

win32汇编资源编译RC2103错误 - end of file in string literal

现在有如下的一个资源rc文件&#xff0c; #include <resource.h>#define DLG_MAIN 1 #define IDC_COUNT 101DLG_MAIN DIALOG 50, 50, 113, 40 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "例子" FONT 9, "宋体&…

什么是端口号【图解TCP/IP(笔记十一)】

文章目录 端口号端口号定义根据端口号识别应用通过IP地址、端口号、协议号进行通信识别端口号如何确定端口号与协议 TCP具有代表性的知名端口号UDP具有代表性的知名端口号 端口号 端口号定义 数据链路和IP中的地址&#xff0c;分别指的是MAC地址和IP地址。前者用来识别同一链…

【论文笔记】Guided Skill Learning and Abstraction for Long-Horizon Manipulation

【论文笔记】Guided Skill Learning and Abstraction for Long-Horizon Manipulation 更多笔记&#xff08;在耕&#xff09;&#xff1a;这里 文章目录 【论文笔记】Guided Skill Learning and Abstraction for Long-Horizon ManipulationAbstractI. INTRODUCTIONII. RELATED…