- 发布-订阅消息传递 →在这种类型的消息传递系统中,消息被发送到一个主题,然后广播给对该主题感兴趣的所有订阅者。
- 点对点消息传递 →在这种类型的消息传递系统中,消息被发送到特定的目的地(队列)并仅由一个消费者使用。
生产者
Kafka 生产者是一个将数据写入 Kafka 主题的客户端应用程序。它负责将数据以记录的形式发布到Kafka集群。当生产者向 Kafka 主题发送消息时,它会指定主题名称和消息键值对。然后,生产者将消息发送到集群中的 Kafka 代理,该代理根据分区方案将消息附加到适当的分区。
消费者
消费者是从 Kafka 主题读取数据的应用程序。消费者订阅一个或多个主题并读取发布到这些主题的消息(记录)。
以下是该过程的高级概述:
- 消费者订阅一个或多个主题,并由 Kafka 代理分配一个或多个分区。
- 消费者定期向代理发送获取请求,从其分配的分区请求新消息。
- 代理以批量消息进行响应,然后消费者对其进行处理。
- 消费者通过存储它处理的最后一条消息的偏移量来跟踪它在每个分区中的位置。下一节将详细介绍这一点。
- 如果消费者关闭或崩溃,它可以在重新启动时从上次存储的偏移量恢复。
当消费者从分区获取消息时,它可以指定获取的起始偏移量。这允许消费者从特定时间点或特定消息偏移量开始读取消息,而不是从分区的开头读取。
按照我们的示例,这里的通知服务和奖励服务成为消费者,因为它们需要在交易成功时执行一些处理。消费者的数量将根据处理交易消息的速度要求而增加。
消费者偏移量是消费者在主题的分区中成功处理的最后一条消息的位置。它由每个消费者组维护,跟踪其消费的每个分区的偏移量。
当消费者开始从分区消费消息时,它将其消费者偏移量初始化为特定值(通常是该分区的最后提交的偏移量)。当它消费消息时,它会更新其消费者偏移量以反映它已成功处理的最后一条消息的位置。这确保了消费者在发生故障或重新平衡时可以从中断处恢复消费。
Kafka 消息处理的端到端示例
这个端到端的示例将帮助我们逐步了解如何在 Kafka 架构的帮助下实际生成和处理消息/记录。
- 付款服务为客户创建新的付款记录,并将其作为 Kafka 消息发送到服务器集群上运行的 Kafka 代理。它通过联系存储此数据的Kafka ZooKeeper来获取代理的身份和位置。
- Kafka 代理接收消息并将其附加到基于活动分区方案(如循环、哈希等)指定消息的主题的适当分区。
- 该消息现在被分配了一个偏移量,并附加到它正在处理的分区的最新活动段。
- 然后,生产者根据 Kafka 客户端上已完成的生产者确认设置等待确认或不等待。
- Zookeeper在后台持续工作,为每个分区选择或更新领导者,并等待其副本定期同步。
- 奖励服务有一个或多个消费者进程,这些进程订阅支付服务已向其生成消息的主题。消费者进程是消费者组的一部分,负责从 Kafka 读取消息。
- Rewards服务使用者处理来自Kafka Broker的新消息的轮询。当他们收到新消息时,他们会进行相应的处理。对于消费者来说,每个分区内的读取始终是连续的。例如,在这种情况下,消费者进程将读取付款记录,检查其是否满足奖励要求,如果满足,则会为客户创建一个新的 10 美元现金返还交易。
- 一旦奖励服务处理完消息,它就会向 Kafka 发送成功或失败确认。该确认称为消费者偏移量,它告诉Kafka Broker消息已成功处理。
- 一旦Kafka Broker收到偏移量,它就会更新该分区的消费者组的偏移量。这允许消费者组跟踪它在分区中的读取位置,以便在重新启动时可以从正确的位置恢复处理。
猜你喜欢
- 4小时前073:vue+mapbox 加载here地图(影像瓦片图 v3版)
- 4小时前Vue常见错误---Error in mounted hook
- 4小时前前端实现(excel)xlsx文件预览
- 4小时前unity 浏览器插件【embedded browser(原zfbrowser)】简单教程,使unity支持web h5页面,附软件下载链接
- 4小时前阿里云OSS存储图片在上传的时候设置过期时间
- 4小时前linux搭建LAMP服务
- 4小时前清华大学操作系统rCore实验-第零章-Lab环境搭建
- 4小时前Hive的更新和删除
- 4小时前【车载开发系列】诊断故障码DTC中的扩展数据信息
- 58分钟前你是我的优乐美(你是我的优乐美是什么歌)
网友评论
- 搜索
- 最新文章
- 热门文章