Apache Kafka工作流程

1. 什么是Apache Kafka工作流程? 

Apache Kafka 工作流程中,Kafka是主题的集合,主题被分成一个或多个分区,而分区是一系列消息,我们用索引标识每条消息(也称为偏移量)。但是,在Kafka集群中,所有数据都在不相交的分区上。传入的消息出现在分区的末尾,因此消费者可以读取它们。 此外,消息可以被复制到不同的代理,这样消息可以保持持久性。

Kafka以非常快速,可靠,持久,容错和零停机的方式提供基于发布订阅(Pub-sub)和基于队列的消息传递系统。生产者将消息发送到主题,消费者可以根据他们的意愿选择其中的一个消息系统。

2. 发布订阅消息系统的工作流程 

  • Kafka 生产者定期将消息发送给主题。

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

  • Kafka 消费者订阅了一个特定主题。

  • 消费者订阅主题后,Kafka会向消费者提供主题的当前偏移量,并将偏移量保存在Zookeeper中。

  • 消费者定期请求Kafka(例如每隔100 Ms),以获取新消息。

  • Kafka在收到生产者发送的消息后马上将消息转发给消费者。

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

  • 然后Kafka代理收到消息已被处理的确认。

  • 一旦Kafka收到确认,就会更改偏移量并将其更新为新值。即使在服务器不稳定期间,消费者也可以正确读取下一条消息,因为ZooKeeper会维护偏移量。

  • 流程重复上述步骤直到消费者停止请求。

  • 一个优点是:消费者可以随时回退到或者略过主题的任意一个偏移量,然后读取该偏移量的所有后续消息。

3. Kafka队列消息系统的工作流程

具有相同组ID的一组Kafka消费者可以在队列消息传递系统中订阅主题,这些消费者被视为一个组并且共享消息。队列消息系统的工作流程如下

  • Kafka 生产者定期将消息发送给主题。

  • 与发布订阅系统类似,Kafka 代理将所有消息存储在为该特定主题配置的分区中。

  • 一个消费者订阅了一个特定主题。

  • 与发布订阅消息系统相同,Kafka与消费者一直交互,直到有新消费者订阅同一主题。

  • 随着新消费者的到来,共享模式开始,并在两个Kafka消费者之间共享数据。在Kafka消费者的数量等于为该特定主题配置的分区数量之前,共享过程重复。

  • 一旦Kafka消费者的数量超过分区数量,新的消费者将不会收到任何消息,除非一个现有的消费者取消订阅该主题。出现这种情况是因为在Kafka中存在一个条件:即每个Kafka消费者将至少关联一个分区,如果所有分区都被分配了消费者,则新消费者将不得不等待。

  • 我们把这些消费者成为一个消费者组。Kakfa以简单而有效的方式向消费者组同时提供了这两种消息系统(发布订阅和队列)。

4. ZookeeperKakfa中的角色

Apache Zookeeper充当Kafka代理和消费者之间的协调接口,它是分布式配置的,提供同步服务。ZooKeeper集群与Kafka服务器共享信息,KafkaZooKeeper中存储基本元数据信息,例如主题,代理,消费者偏移等。

Zookeeper的失败不会影响Kafka集群,因为存储在ZooKeeper中的关键信息在其整个集群中被复制。当ZooKeeper重新启动后,Kafka恢复Zookeeper故障前的状态,因此可以认为Kafka的停机时间为零。如果Kafka代理中的领导者出现故障,Zookeeper会进行领导者选举。

Apache Kafka工作流程

发表评论

邮箱地址不会被公开。 必填项已用*标注

8 × 一 =

滚动到顶部