使用 Apache Kafka 构建 Rust 微服务

本文详细介绍了如何使用 Rust 语言和 Apache Kafka 构建微服务。从微服务和 Kafka 的基础知识开始,逐步讲解设置 Kafka 代理、创建主题、生产者和消费者,直至构建一个实际的文本操作微服务。通过示例代码展示了如何初始化 Rust 项目的 Kafka 客户端,以及如何处理添加和删除文本的事件。
摘要由CSDN通过智能技术生成

Apache Kafka是一个事件流平台,允许软件应用程序相互有效通信。它是将小型应用程序(例如微服务)连接在一起的绝佳选择。

在本文中,您将学习如何使用Rust和 Kafka 构建微服务。我们将涵盖:

  • 先决条件

  • 什么是微服务?

  • 什么是卡夫卡?

  • 开始使用卡夫卡

  • 设置 Kafka 主题、生产者和消费者

  • 创建 Rust 消费者和生产者

  • 使用 Kafka 构建 Rust 微服务

您可以在此 GitHub 存储库中查看最终项目。

先决条件

要继续阅读本文,您需要在系统中安装 Rust并了解 Rust 的基本知识。

什么是微服务?

微服务是执行特定任务的小型独立应用程序,这些任务对于解耦复杂应用程序的组件和促进分布式应用程序都很有用。

将微服务视为更大规模的对象。与对象类似,微服务是独立的,可以重用。但是,两者之间的显着区别在于它们返回数据的位置。对象直接获取和返回数据,而微服务将数据返回到池中。

微服务允许开发人员使用不同的编程语言构建应用程序。微服务中的错误很少会导致整个应用程序崩溃。

什么是卡夫卡?

Kafka 是一个用于读取和写入数据的事件流平台,可以轻松连接微服务。要了解有关 Kafka 的更多信息,请查看此Kafka 实时数据流应用教程。


超过 20 万开发人员使用 LogRocket 来创造更好的数字体验了解更多 →


在深入了解该平台之前,我们需要熟悉一些 Kafka 术语。

  • 事件:在Kafka中,数据被称为事件

  • 主题:主题是用于组织事件的标识符。生产者和消费者可以实时读取和写入主题

  • 生产者:Kafka 使用生产者将事件发布到主题

  • 消费者:这些从主题中读取的事件

  • Broker:Kafka中的服务器称为brokers

  • 集群:几个代理一起工作形成一个集群,保护事件不丢失。这很关键,因为事件和主题可以在一个或多个代理之间复制

开始使用卡夫卡

要继续阅读本文,您需要设置 Kafka 代理。请注意,您将在系统上使用本地代理。除了本地代理之外,Kafka 还提供了在云端或远程系统上使用代理的选项。

要在您的系统上设置 Kafka,请执行以下步骤:

首先,在这里下载最新的 Kafka 版本并解压压缩文件。之后,在终端中打开解压后的文件夹并使用以下命令启动ZooKeeper服务器:

$ bin / zookeeper-服务器-启动。sh 配置/动物园管理员。特性

然后,在解压后的文件夹中打开另一个终端会话并启动 Kafka 代理:

$ bin / kafka-服务器-启动。sh 配置/服务器。特性

Kafka 代理需要一个活动的 ZooKeeper 才能正常运行。ZooKeeper 维护代理,没有它,代理将生成错误消息。

设置 Kafka 主题、生产者和消费者

接下来,让我们通过设置主题、生产者和消费者来组织 Kafka 代理中发布的事件。

要在本地服务器中创建主题,请运行以下命令:

$ bin / kafka -主题。sh --创建--主题 主题-名称--引导程序-服务器本地主机:9092

第一个命令在控制台中启动一个消费者,并告诉消费者从. 告诉 Kafka 连接到您的本地服务器。--topic topic-nametopic-name--bootstrap-server localhost:9092``localhost:9092

--from-beginning`告诉消费者从最早发布的开始读取所有事件。您可以使用代替来实现相同的结果。如果您希望消费者只收听新事件,请使用.`--offset earliest``--from-beginning``--offset latest

Kafka 提供了可以在终端中运行的消费者和生产者:


来自 LogRocket 的更多精彩文章:

  • 不要错过来自 LogRocket 的精选时事通讯The Replay

  • 使用 React 的 useEffect优化应用程序的性能

  • 在多个 Node 版本之间切换

  • 了解如何使用 AnimXYZ 为您的 React 应用程序制作动画

  • 探索 Tauri,一个用于构建二进制文件的新框架

  • 比较NestJS 与 Express.js

  • 发现TypeScript 领域中使用的流行 ORM


# 从“topic-name”读取控制台消费者
$ bin / kafka - console - consumer 。sh --主题主题-名称-从-开始-引导-服务器本地主机:909
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pxr007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值