消息代理是一种软件,充当在不同应用程序之间发送消息的中介。它的功能类似于服务器,从一个应用程序(称为生产者)接收消息,并将其路由到一个或多个其他应用程序(称为消费者)。消息代理的主要目的是确保不同系统之间进行稳健可靠的通信,而无需这些系统始终可用或直接连接。这使得应用程序可以异步工作,提供容错能力和实时操作能力。消息代理可以接受来自多个来源的消息,并高效地将其路由到合适的接收者。根据所需的业务逻辑,消息可以分组到主题或队列中。
市面上有很多不同的消息代理,每种都有各自的特性和优势。本文我们将重点介绍 Kafka。
Apache Kafka 是一个快速且可扩展的消息代理,每秒能够处理数百万条消息。它尤其因其高容错能力和长时间存储数据的能力而备受推崇。Kafka 最初由 LinkedIn 开发,现已成为消息代理领域最受欢迎的开源解决方案,并获得了 Apache 软件基金会的许可。它被广泛用于构建实时数据管道和流式传输应用程序。在系统或应用程序之间移动和处理数据流是一项关键任务,而 Kafka 擅长帮助用户以最小的延迟实时处理数据流。作为一个分布式系统,Kafka 分布在多个服务器上,这些服务器可以并行存储和处理数据流。这种分布使 Kafka 能够为许多不同的数据源提供实时数据处理,从而确保可靠性和对系统故障的弹性。
在本文中,我们将探讨如何在 Windows 上安装和配置 Kafka,以便您可以在项目中充分利用它。
系列文章:
1、在 Docker 上安装和配置 Kafka、选择用于部署 Kafka 的操作系统
https://blog.youkuaiyun.com/hefeng_aspnet/article/details/148921848
2、在 MacOS 上安装和配置 Kafka
https://blog.youkuaiyun.com/hefeng_aspnet/article/details/148921644
3、在 Ubuntu 上安装和配置 Kafka
https://blog.youkuaiyun.com/hefeng_aspnet/article/details/148921303
4、在 Windows 上安装和配置 Kafka
https://blog.youkuaiyun.com/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.youkuaiyun.com/download/hefeng_aspnet/90295463
https://download.youkuaiyun.com/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 异常关闭,临时文件夹中可能仍会残留一些数据。如果您在启动过程中遇到问题,请尝试清除临时文件。
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。