登录 |  注册
首页 >  中间件 · 框架 >  Kafka基础教程·入门学习笔记 >  Kafka 的工作流程

Kafka 的工作流程

Kafka只是分为一个或多个分区的主题的集合。 Kafka分区是消息的线性有序序列,其中每个消息由它们的索引(称为偏移)来标识。 Kafka集群中的所有数据都是不相连的分区联合。 传入消息写在分区的末尾,消息由消费者顺序读取。 通过将消息复制到不同的代理提供持久性。

Kafka以快速,可靠,持久,容错和零停机的方式提供基于pub-sub和队列的消息系统。 在这两种情况下,生产者只需将消息发送到主题,消费者可以根据自己的需要选择任何一种类型的消息传递系统。 让我们按照下一节中的步骤来了解消费者如何选择他们选择的消息系统。

kafka.jpg

发布 - 订阅消息的工作流程

以下是Pub-Sub消息的逐步工作流程

  • 生产者定期向主题发送消息。

  • Kafka代理存储为该特定主题配置的分区中的所有消息。 它确保消息在分区之间平等共享。 如果生产者发送两个消息并且有两个分区,Kafka将在第一分区中存储一个消息,在第二分区中存储第二消息。

  • 消费者订阅特定主题。

  • 一旦消费者订阅主题,Kafka将向消费者提供主题的当前偏移,并且还将偏移保存在Zookeeper系综中。

  • 消费者将定期请求Kafka(如100 Ms)新消息。

  • 一旦Kafka收到来自生产者的消息,它将这些消息转发给消费者。

  • 消费者将收到消息并进行处理。

  • 一旦消息被处理,消费者将向Kafka代理发送确认。

  • 一旦Kafka收到确认,它将偏移更改为新值,并在Zookeeper中更新它。 由于偏移在Zookeeper中维护,消费者可以正确地读取下一封邮件,即使在服务器暴力期间。

  • 以上流程将重复,直到消费者停止请求。

  • 消费者可以随时回退/跳到所需的主题偏移量,并阅读所有后续消息。

队列消息/用户组的工作流

在队列消息传递系统而不是单个消费者中,具有相同的一组消费者将订阅主题。 简单来说,订阅具有相同的主题的消费者被认为是单个组,并且消息在它们之间共享。 让我们检查这个系统的实际工作流程。

  • 生产者以固定间隔向某个主题发送消息。

  • Kafka存储在为该特定主题配置的分区中的所有消息,类似于前面的方案。

  • 单个消费者订阅特定主题,假设为为。

  • Kafka以与发布 - 订阅消息相同的方式与消费者交互,直到新消费者以相同的订阅相同主题 1 。

  • 一旦新消费者到达,Kafka将其操作切换到共享模式,并在两个消费者之间共享数据。 此共享将继续,直到用户数达到为该特定主题配置的分区数。

  • 一旦消费者的数量超过分区的数量,新消费者将不会接收任何进一步的消息,直到现有消费者取消订阅任何一个消费者。 出现这种情况是因为Kafka中的每个消费者将被分配至少一个分区,并且一旦所有分区被分配给现有消费者,新消费者将必须等待。

  • 此功能也称为。 同样,Kafka将以非常简单和高效的方式提供两个系统中最好的。

ZooKeeper的作用

Apache Kafka的一个关键依赖是Apache Zookeeper,它是一个分布式配置和同步服务。 Zookeeper是Kafka代理和消费者之间的协调接口。 Kafka服务器通过Zookeeper集群共享信息。 Kafka在Zookeeper中存储基本元数据,例如关于主题,代理,消费者偏移(队列读取器)等的信息。

由于所有关键信息存储在Zookeeper中,并且它通常在其整体上复制此数据,因此Kafka代理/ Zookeeper的故障不会影响Kafka集群的状态。 Kafka将恢复状态,一旦Zookeeper重新启动。 这为Kafka带来了零停机时间。 Kafka代理之间的领导者选举也通过使用Zookeeper在领导者失败的情况下完成。

要了解有关Zookeeper的详细信息,请参阅 zookeeper

让我们继续进一步关于如何在您的机器上安装Java,ZooKeeper和Kafka在下一章。

上一篇: Kafka集群架构
下一篇: Kafka工具包(org.apache.kafka.tools)下的工具类介绍
推荐文章
  • 一、Kafka简介Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、sto
  • 1.环境清单CentOS7 Java8 Maven3.5 MySQL5.7 CAT2.0.0 Tomcat7.02.安装CAT2.0下载CAT安装包:CAT的官方github地址:https://github.com/dianping/cat/tree/master打开页面之后,进行如下操作:2.1
  • 一.安装并启动sendmailyum install -y sendmail systemctl start sendmail二.修改Grafana配置文件,设置发件人vim /etc/grafana/grafana.ini在[smtp]标签下修改配置[smtp] enabled = true ho
  • 想用最简单的方式去理解Elasticsearch能为你做什么,那就是使用它了,让我们开始吧!安装并运行Elasticsearch安装Elasticsearch之前,你需要先安装一个较新的版本的Java,最好的选择是,你可以从www.java.com获得官方提供的最新版本的Java。之后,你可以从el
  • 简介:Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为ElasticStack的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。版本说明Java环境:JDK1.8.0Elasticsearch:7.2.1OS环境:wi
  • Java9、Java10、Java12和Java13均为短期版本。我们建议您不要使用以上版本,除非您准备好应对这种快速发布节奏。有关JVM支持,请参见Oracle的时间表,网址为:http://www.oracle.com/technetwork/java/eol-135779.html**Elas
学习大纲