消息代理是一种软件,充当在不同应用程序之间发送消息的中介。它的功能类似于服务器,从一个应用程序(称为生产者)接收消息,并将其路由到一个或多个其他应用程序(称为消费者)。消息代理的主要目的是确保不同系统之间进行稳健可靠的通信,而无需这些系统始终可用或直接连接。这使得应用程序可以异步工作,提供容错能力和实时操作能力。消息代理可以接受来自多个来源的消息,并高效地将其路由到合适的接收者。根据所需的业务逻辑,消息可以分组到主题或队列中。

市面上有很多不同的消息代理,每种都有各自的特性和优势。本文我们将重点介绍 Kafka。

Apache Kafka 是一个快速且可扩展的消息代理,每秒能够处理数百万条消息。它尤其因其高容错能力和长时间存储数据的能力而备受推崇。Kafka 最初由 LinkedIn 开发,现已成为消息代理领域最受欢迎的开源解决方案,并获得了 Apache 软件基金会的许可。它被广泛用于构建实时数据管道和流式传输应用程序。在系统或应用程序之间移动和处理数据流是一项关键任务,而 Kafka 擅长帮助用户以最小的延迟实时处理数据流。作为一个分布式系统,Kafka 分布在多个服务器上,这些服务器可以并行存储和处理数据流。这种分布使 Kafka 能够为许多不同的数据源提供实时数据处理,从而确保可靠性和对系统故障的弹性。

在本文中,我们将探讨如何在 Windows 上安装和配置 Kafka,以便您可以在项目中充分利用它。 

 系列文章:

1、在 Docker 上安装和配置 Kafka、选择用于部署 Kafka 的操作系统
https://blog.csdn.net/hefeng_aspnet/article/details/148921848

2、在 MacOS 上安装和配置 Kafka
https://blog.csdn.net/hefeng_aspnet/article/details/148921644

3、在 Ubuntu 上安装和配置 Kafka
https://blog.csdn.net/hefeng_aspnet/article/details/148921303

4、在 Windows 上安装和配置 Kafka
https://blog.csdn.net/hefeng_aspnet/article/details/148920233

系统要求

Apache Kafka 旨在最大限度地提高其运行硬件的效率。但是,在设置与 Kafka Broker 配合使用的系统时,需要牢记一些一般建议:

    • 处理器 (CPU):Kafka 通常不需要太多处理能力,因为大多数操作都是通过直接磁盘访问(零拷贝)执行的。但是,CPU 核心的数量会影响吞吐量。

    • 内存(RAM):建议至少配备 8GB RAM,但最终数量在很大程度上取决于数据负载和并行操作的数量。

    • 磁盘空间:Kafka 高效利用文件系统和直接磁盘写入功能。建议使用读写速度较快的 SSD 固态硬盘。此外,建议使用单独的磁盘,以将其操作与其他进程隔离。

    • 网络:Kafka 积极使用网络进行数据传输。建议使用高带宽的稳定连接。

    • 操作系统:Apache Kafka 一般运行在 Linux 等类 Unix 系统上,但并不限制用户选择其他操作系统。

    • Java:由于 Kafka 是用 Java 编写的,因此您需要 Java 开发工具包 (JDK) 8 或更高版本。

虽然 Linux 在性能和可扩展性方面为 Kafka 带来了关键优势,但该代理在 Windows 和 macOS 上都能良好运行。稍后我们将讨论每种解决方案的优缺点,但现在,让我们继续安装。

在 Windows 上安装和配置 Kafka

在 Windows 上安装 Kafka 的过程很简单,但需要注意一些事项。以下是分步指南:

    1、下载并安装 Java 开发工具包 (JDK)

Apache Kafka 在 Java 上运行,因此第一步是安装开发工具(如果尚未安装)。您可以从Oracle 官方网站或

https://download.csdn.net/download/hefeng_aspnet/90295463

https://download.csdn.net/download/hefeng_aspnet/90295429

下载 JDK 。安装后,请在命令提示符 (cmd) 中输入以下命令来验证其功能:

java -version

    2、下载 Apache Kafka

您可以从项目官方网站下载适用于 Windows 的 Apache Kafka (查找“二进制下载”)。建议您选择最新的稳定版本(本文撰写时为 3.7.0)。不过,不同版本的安装过程差别不大,因此本指南也适用于其他版本。

    3、解压

下载压缩包后,将其解压并移动到方便的位置。解压发行版后,您将看到各种文件夹,例如:

    • bin:此文件夹包含用于启动和管理分布式消息系统的可执行文件。/windows子文件夹包含专门用于 Windows 操作系统的文件版本。

    • config:此文件夹包含 Kafka 配置文件,包括zookeeper.properties和server.properties,可以编辑这些文件以进行更精确的设置。

    • libs:此文件夹包含运行 Kafka 所需的所有库。

    • logs:此文件夹包含工作日志,可用于解决问题和查找组件之间的依赖关系。

    • site-docs:此文件夹包含您安装的 Kafka 版本的文档,这对初学者很有帮助。

    • LICENSE和NOTICE:这些文件包含许可协议和法律声明。

    4、数据和日志目录的基本配置

默认情况下,日志文件和数据目录保存在/tmp文件夹中,这可能会导致性能、安全性和数据管理问题。建议将默认路径更改为自定义路径:

    • 导航到/config/server.properties任何文本编辑器(例如 VSCode)并打开该文件。

    • 找到该log.dirs字段(您可以按 Ctrl+F 使用搜索功能)。

    • 将默认路径更改/tmp/kafka-logs为永久路径,例如c:/kafka/kafka-logs。保存文件并关闭它。

对data目录执行类似的操作:

    • 导航到/config/zookeeper.properties该文件并在任意文本编辑器中打开它。

    • 在dataDir参数中,将默认路径更改为自定义路径。下面的屏幕截图显示了永久路径的示例。

基本设置现已完成。这足以启动 Zookeeper 和 Kafka 服务器并验证系统是否正常运行。

5、启动 Zookeeper 和 Kafka 服务器

首先,导航到解压后的存档文件夹,然后打开命令提示符。要启动 Zookeeper,请使用以下命令:

.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties 

请注意,我们的 Zookeeper 在端口 2181 上运行,这是此服务的默认端口。

如果遇到“输入行太长。命令语法不正确”的错误,请将 Kafka 文件夹移至更靠近磁盘根目录的位置。在 启动过程中zookeeper-server-start.bat,CLASSPATH会被多次调用,导致 变量溢出。cmd.exe环境支持的字符数不超过 8191 个。

打开一个新的终端窗口启动Kafka服务器并使用以下命令:

.\bin\windows\kafka-server-start.bat .\config\server.properties

6、验证功能

要验证一切正常,请尝试使用以下命令创建主题:

.\bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1 --topic TestTopic

请注意,端口 2181 与 Zookeeper 的开放端口相匹配。

为了便于可视化,请创建另一个名为 的主题NewTopic。现在使用以下命令检查存在哪些主题:

.\bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092

您可以在新的命令提示符中通过创建和阅读多条消息来与主题进行交互。为此,请在新窗口中输入以下命令:

.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic TestTopic

命令启动后,就可以发送任意消息。

要开始接收消息,请在新控制台窗口中输入以下命令:

.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic TestTopic --from-beginning

如截图所示,我们在 上收到了消息TestTopic。

这是一个简单的功能,可以帮助您了解和熟悉 Kafka 工具。但是,在安装和测试过程中可能会出现问题。以下是一些可能出现的常见问题:

    • JDK 问题:请确保您已安装 JDK,而不仅仅是 JRE。此外,请确保 JDK 版本为 8 或更高版本。

    • 环境变量检查:安装 Java 后,确保JAVA_HOME变量设置正确,并且 bin 目录的路径包含在系统路径中。

    • 防火墙和防病毒软件问题:有时,第三方防病毒软件或防火墙可能会阻止 Kafka。如果您遇到连接问题,请尝试暂时禁用它们。

    • 端口:默认情况下,Zookeeper 监听端口 2181,Kafka 监听端口 9092。请确保这些端口是空闲的,或者重新分配这些服务的默认端口。

    • 在启动 Kafka 之前启动 Zookeeper:启动 Kafka 之前,请确保 Zookeeper 已启动。如果没有启动,请先启动 Zookeeper。

    • Kafka 异常关闭:如果 Kafka 异常关闭,临时文件夹中可能仍会残留一些数据。如果您在启动过程中遇到问题,请尝试清除临时文件。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 

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

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

相关文章

FPGA实现SDI转LVDS视频发送,基于GTP+OSERDES2原语架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目本博已有的 SDI 编解码方案FPGA实现LVDS视频收发方案 3、工程详细设计方案工程设计原理框图SDI 输入设备Gv8601a 均衡器GTP 高速接口-->解串SMPTE SD/HD/3G SDI IP…

uniapp+vue3项目实现:H5的文件预览、文件下载功能(文章参考)

uniappvue3项目实现:H5的文件预览、文件下载功能(文章参考) 文章参考: uniapp的移动端h5实现文件下载兼容手机各版本浏览器 uni-app之微信小程序实现‘下载保存至本地预览’功能 uniapp:h5和微信小程序文件下载方式

汽车功能安全-软件单元验证 (Software Unit Verification)【定义、目的、要求建议】6

文章目录1 软件单元验证 (Software Unit Verification)2 ISO 26262-6对单元验证的实施要求和建议2.1 要求和建议2.2 通俗易懂的解释与总结2.3 示例2.3.1 场景1:电动助力转向系统 (EPS)2.3.2 场景2:自动紧急制动系统 (AEB)2.3.3 示例模型验证2.4 核心要点…

提示工程:突破Transformer极限的计算科学

Why Prompt Design Matters and Works: A Complexity Analysis of Prompt Search Space in LLMs 提示工程如何从经验技巧升级为系统科学 一、Transformer的先天缺陷:计算深度固化与信息丢失 原理 Transformer架构的计算能力存在固有局限: 计算深度固化:其隐状态仅在层间…

【2025/07/11】GitHub 今日热门项目

GitHub 今日热门项目 🚀 每日精选优质开源项目 | 发现优质开源项目,跟上技术发展趋势 📋 报告概览 📊 统计项📈 数值📝 说明📅 报告日期2025-07-11 (周五)GitHub Trending 每日快照&#x1f55…

LeetCode 278. 第一个错误的版本

LeetCode 278. 第一个错误的版本 解析 这个问题要求找到第一个错误的版本,其中给定一个 API isBadVersion(version) 可以判断某个版本是否错误。由于版本号是有序的,且错误版本之后的所有版本都是错误的,因此可以使用二分查找高效地定位第一个…

【RK3568+PG2L50H开发板实验例程】FPGA部分 | Pango 的时钟资源——锁相环

本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 1.实验简介 实验目的: 了解 PLL IP 的基本使用方法。 实验环境: Window11 PDS2022.2-SP6.4…

Graph Contrastive Learning with Generative Adversarial Network基于生成对抗网络的图对比学习

1. 什么是图?(Graph)想象一下社交网络,每个人是一个“点”(节点),他们之间的朋友关系是“线”(边)。这样的点和线组成的结构就是“图”。在计算机科学中,图被…

PyTorch中的torch.argmax()和torch.max()区别

在PyTorch中,torch.argmax()和torch.max()都是针对张量操作的函数,但它们的核心区别在于返回值的类型和用途:1. torch.argmax() 作用:仅返回张量中最大值所在的索引位置(下标)。返回值:一个整数…

WebSocket主从服务器架构完整教程

目录 1. 前言:为什么要学习WebSocket主从架构 第一章:基础知识准备 2.1 什么是WebSocket 生活中的例子 技术特点 2.2 WebSocket vs HTTP 什么时候用WebSocket? 2.3 什么是主从架构 生活中的例子 技术架构图 2.4 环境准备 需要的软件 项目结构 第二章:WebSock…

Java的extends通配符

在Java泛型中,extends通配符用于限定泛型类型的上界,即指定泛型可以是某个类型或其子类型。它有两种常见用法:类型参数限定和通配符限定,下面详细介绍: 1. 类型参数限定(在类/方法定义中) 在定义…

vue自定义提示框组件

不想要elementui的消息提示&#xff0c;自定义一个组件系统统一使用 一、写页面 vue &#xff08;我放的目录是src/plugins/message.vue&#xff09;&#xff08;这里面使用elementui 里面icon 需要单独引入&#xff09; <template><Transition name"down"&…

自动驾驶数据集综述:统计特征、标注质量与未来展望

自动驾驶数据集综述&#xff1a;统计特征、标注质量与未来展望 A Survey on Autonomous Driving Datasets: Statistics, Annotation Quality, and a Future Outlook 得益于硬件和深度学习技术的快速进步&#xff0c;自动驾驶近年来迅速发展并展现出良好的性能。高质量的数据集…

redis数据结构和数据类型

1.动态字符串SIMPLE DYNAMIC STRING(SDS)观察上图中的SDS结构&#xff0c;头部包含字符串长度和分配的空间&#xff0c;可以以O&#xff08;1&#xff09;的时间复杂度计算出字符串长度&#xff0c;并且有了字符串长度后可以无视c语言的字符串缺陷&#xff08;\0作为结尾标识&a…

深度学习--神经网络

一、深度学习的简单概念深度学习是一种模仿人类大脑的运行方式&#xff0c;从大量数据中学习特征的学习模式。深度学习是机器学习的子集&#xff0c;它与机器学习的关系如下&#xff1a;二、感知神经网络2.1简单定义神经网络&#xff08;Neural Networks&#xff09;是一种模拟…

.NET 程序的强名称签名与安全防护技术干货

在 .NET 开发领域&#xff0c;保障程序的安全性和完整性至关重要。强名称签名和有效的安全防护措施是实现这一目标的关键手段。下面将详细介绍 .NET 程序的强名称签名以及相关的安全防护方法。一、什么是强名称签名强名称签名是 .NET 框架提供的一种安全机制&#xff0c;其主要…

DNS(Domain Name System,域名系统)

目录 **一、DNS的核心功能****二、DNS的工作原理****1. 解析流程(以车载导航请求为例)****2. 关键机制****三、车载以太网中DNS的特殊性**1. **高可靠性要求**2. **低延迟优化**3. **安全挑战与防护****四、DNS相关协议与技术****五、车载DNS配置示例****六、DNS故障排查工具…

优化 ECharts 多条折线:折线数据不完整导致的X轴日期错乱问题

目录 一、简单介绍 1.1 常见类型 二、时间轴错乱问题 2.1 示例 2.2 示例完整代码 2.3 问题分析 2.4 修复方法 第一步 第二步 2.5 优化后完整代码 一、简单介绍 ECharts 是一款基于 JavaScript 的数据可视化图表库&#xff0c;动态图表是 ECharts 的一个重要应用场景…

网络安全之注入攻击:原理、危害与防御之道

网络安全之注入攻击&#xff1a;原理、危害与防御之道 引言 在OWASP Top 10安全风险榜单中&#xff0c;注入攻击常年占据首位。2023年Verizon数据泄露调查报告显示&#xff0c;67%的Web应用漏洞与注入类攻击直接相关。本文从技术视角系统解析注入攻击的核心原理、典型场景及防御…

Python爬虫动态IP代理报错全解析:从问题定位到实战优化

目录 一、代理IP失效&#xff1a;爬虫的"隐形杀手" 1.1 失效场景复现 1.2 解决方案 二、403封禁&#xff1a;反爬机制的"精准打击" 2.1 封禁原理剖析 2.2 破解方案 三、速度瓶颈&#xff1a;代理性能的"致命短板" 3.1 性能对比测试 3.2…