Apache Kafka工作流程| Kafka Pub-Sub Messaging

1.目标

在我们上一篇Kafka教程中,我们讨论了Kafka Docker。今天,我们将讨论Kafka Workflow。此外,我们将详细介绍Pub-Sub Messaging的工作流程以及Queue Messaging / Consumer Group的工作流程。此外,我们将看到ZooKeeper在Apache Kafka中的作用。
那么,让我们从Kafka Workflow开始吧。

Apache Kafka工作流程| Kafka Pub-Sub Messaging

2.什么是Kafka Workflow?

在Kafka Workflow中,Kafka是主题的集合,它们被分成一个或多个分区,而分区是一系列消息,其中index标识每条消息(我们也称为偏移量)。但是,在Kafka集群中,所有数据都是分区的不相交联合。传入消息出现在分区的末尾,因此消费者可以读取它们。此外,通过将消息复制到不同的代理,它可以保持持久性。
让我们修改Apache Kafka架构Kafka
以非常快速,可靠,持久,容错和零停机的方式提供基于Pub-sub和队列的消息传递系统。此外,生产者将消息发送到主题,并且消费者可以根据他们的愿望选择任何一个消息系统。

3. Pub-Sub Messaging的工作流程

在Apache Kafka中,Pub-Sub Messaging的逐步工作流程是:

  • Kafka Producers定期将消息发送给主题。
  • Kafka Brokers将所有消息存储在为该特定主题配置的分区中,从而确保在分区之间平均分配消息。例如,如果生产者发送两条消息并且有两个分区,则Kafka将在第一个分区中存储一条消息而在第二个分区中存储第二条消息。
  • 此外,Kafka Consumer订阅了一个特定主题。
  • 消费者订阅主题后,Kafka会向消费者提供主题的当前偏移量,并将偏移量保存在Zookeeper集合中。
  • 此外,消费者将定期请求Kafka,以获取新消息(如100 Ms)。
  • Kafka将在收到生产者后立即将消息转发给消费者。
  • 消费者将收到消息并进行处理。
  • 然后Kafka经纪人收到已处理邮件的确认。
  • 此外,一旦Kafka收到确认,就会更改偏移并将其更新为新值。即使在服务器暴动期间,消费者也可以正确读取下一条消息,因为ZooKeeper会维护偏移量。
  • 但是,在消费者停止请求之前,流程会重复。
  • 作为一种好处,消费者可以随时回放/跳过主题的任何偏移,并且还可以阅读所有后续消息,作为一个标准的愿望。

阅读Kafka Performance Tuning

4. Kafka Queue消息/消费者组的工作流程

具有相同组ID的一组Kafka消费者可以在队列消息传递系统中订阅主题而不是单个消费者。但是,对于所有使用者具有相同的组ID,订阅主题的用户被视为单个组并共享消息。该系统的工作流程是:

  • Kafka Producers定期发送消息给Kafka主题。
  • 与前面的场景类似,此处Kafka还会在为该特定主题配置的分区中存储所有消息。
  • 此外,Kafka中的单个消费者订阅了特定主题。
  • 与Pub-Sub Messaging相同,Kafka与消费者交互,直到新消费者订阅同一主题。
  • 随着新客户的到来,共享模式从操作开始,并在两个Kafka消费者之间共享数据。此外,在Kafka使用者的数量等于为该特定主题配置的分区数量之前,共享重复。
  • 虽然,一旦Kafka消费者的数量超过分区数量,Kafka的新消费者将不会收到任何进一步的消息。它发生在任何一个现有的消费者取消订阅之前。出现这种情况是因为在Kafka中存在一个条件,即每个Kafka消费者将至少有一个分区,如果没有分区保持空白,那么新消费者将不得不等待。
  • 此外,我们还称其为Kafka Consumer Group。因此,Apache Kafka将以非常简单和有效的方式提供两种系统中的最佳系统。

学习Apache Kafka Streams | 流处理拓扑

5. ZooKeeper在Apache Kafka中的作用

Apache Zookeeper充当Kafka代理和消费者之间的协调接口。此外,我们可以说它是一个分布式配置和同步服务。基本上,ZooKeeper集群与Kafka服务器共享信息。此外,Kafka在ZooKeeper Kafka中存储基本元数据信息,例如主题,代理,消费者偏移(队列读取器)等。
点击链接,了解有关Zookeeper在Kafka中的角色的更多信息
此外,Kafka Zookeeper / broker的故障不会影响Kafka集群。这是因为存储在ZooKeeper中的关键信息会在其集合中复制。然后Kafka在ZooKeeper重新启动时恢复状态,导致Kafka零停机。然而,在领导失败的情况下,Zookeeper还在Kafka经纪人之间进行领导选举。
因此,这完全是关于Apache Kafka Workflow。希望你喜欢我们的解释。

六,结论

因此,我们已经看到了Apache Kafka Workflow的概念。此外,在这个Kafka Workflow教程中,我们讨论了Pub-Sub Messaging系统的Workflow,以及Kafka Queue Messaging系统的工作流程。最后,我们看到了Zookeeper在Apache Kafka中的作用。不过,如果对Kafka Workflow有任何疑问,请随时在评论部分询问。
另请参阅 -  
具有薪资趋势的Apache Kafka职业范围
供参考

原文地址:https://www.cnblogs.com/a00ium/p/10849961.html

时间: 2024-08-07 11:46:28

Apache Kafka工作流程| Kafka Pub-Sub Messaging的相关文章

大数据技术之_10_Kafka学习_Kafka概述+Kafka集群部署+Kafka工作流程分析+Kafka API实战+Kafka Producer拦截器+Kafka Streams

第1章 Kafka概述1.1 消息队列1.2 为什么需要消息队列1.3 什么是Kafka1.4 Kafka架构第2章 Kafka集群部署2.1 环境准备2.1.1 集群规划2.1.2 jar包下载2.2 Kafka集群部署2.3 Kafka命令行操作第3章 Kafka工作流程分析3.1 Kafka 生产过程分析3.1.1 写入方式3.1.2 分区(Partition)3.1.3 副本(Replication)3.1.4 写入流程3.2 Broker 保存消息3.2.1 存储方式3.2.2 存储策

Apache kafka 工作原理介绍

消息队列 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上, 队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待接收程序接收此消息.在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段.为了管理需要共享的信息,对应用提供公共的信息交换机制是重要的.常用的消息队列技术是 Message Queue. Message Queue 的通讯模式 点对点通讯:点对

Apache kafka 工作原理介绍(作者原创文章已发表在IBM开发者论坛)

插个广告:本人的<大话Java性能优化>一书99万字,已经在亚马逊.当当.京东.天猫,感谢对技术推广梦想者的支持,谢谢! 消息队列 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上, 队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待接收程序接收此消息.在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段.为了管理需要共享的信息,对应用提供公共的信息交

Kafka工作原理

消息队列 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上, 队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待接收程序接收此消息.在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段.为了管理需要共享的信息,对应用提供公共的信息交换机制是重要的.常用的消息队列技术是 Message Queue. Message Queue 的通讯模式 点对点通讯:点对

Apache Kafka系列(五) Kafka Connect及FileConnector示例

Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 Apache Kafka系列(四) 多线程Consumer方案 Apache Kafka系列(五) Kafka Connect及FileConnector示例 一. Kafka Connect简介 Kafka是一个使用越来越广的消息系统,尤其是在大数据开发中(实时数据处理和分析).为何集成其他系统和解耦应用,经常使用Producer来发送消

apache shiro的工作流程分析

本文基于shiro的web环境,用宏观(也就是不精确)的角度去理解shiro的工作流程,先看shiro官方的一张图. 和应用程序直接交互的对象是Subject,securitymanager为Subject服务.可以把Subject看成一个用户,你的所有的代码都由用户来执行.suject.execute(callable),这个callable里面就是你的代码. 一.shiro如何介入你的webapp 它是如何初始化的?servletContextListener.它是如何在每个http请求中介

kafka工作原理介绍

两张图读懂kafka应用: Kafka 中的术语 broker:中间的kafka cluster,存储消息,是由多个server组成的集群. topic:kafka给消息提供的分类方式.broker用来存储不同topic的消息数据. producer:往broker中某个topic里面生产数据. consumer:从broker中某个topic获取数据. Kafka 中的术语设计: 1.Broker 中间的kafka cluster,存储消息,是由多个server组成的集群. 2.topic与消

LogAgen的工作流程

LogAgen的工作流程: 一.读日志 --tailf 第三方库 新建tail_test/main.go package main import ( "fmt" "github.com/hpcloud/tail" "time" ) func main() { fileName := "./my.log" //fileName := "/tmp/kafka-logs/web_log-0/0000000000000000

Kafka剖析:Kafka背景及架构介绍

<Kafka剖析:Kafka背景及架构介绍> <Kafka设计解析:Kafka High Availability(上)> <Kafka设计解析:Kafka High Availability (下)> <Kafka设计解析:Replication工具> <Kafka设计解析:Kafka Consumer解析> Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分