截至目前,我们已经了解了Kafka的核心概念。 现在让我们来看看Kafka的工作流程。
Kafka只是分成一个或多个分区的主题集合。 Kafka分区是消息的线性排序序列,每个消息由其索引标识(称为偏移量)。 Kafka集群中的所有数据都是不相关的分区联合。 传入消息写在分区的末尾,消费者依次读取消息。 通过将消息复制到不同的经纪人来提供持久性。
Kafka以快速,可靠,持久的容错和零停机方式提供基于发布订阅和队列的消息传递系统。 在这两种情况下,生产者只需将消息发送到一个主题,消费者就可以根据他们的需要选择任何一种消息传递系统。 可通过下一节中的步骤来了解消费者如何选择它们的消息系统。
以下是发布订阅消息工作流程的步骤 -
在队列消息系统(不是单个消费者)中,具有相同组ID的一组消费者将订阅主题。 简而言之,订阅具有相同组ID的主题的消费者被视为单个组,并且消息在他们之间共享。 让我们来看看一下这个系统的实际工作流程。
Apache Kafka的关键依赖是Apache Zookeeper,它是一个分布式配置和同步服务。 Zookeeper作为Kafka经纪人和消费者之间的协调接口。 Kafka服务器通过Zookeeper集群共享信息。 Kafka在Zookeeper中存储基本元数据,例如有关主题,经纪人,消费者偏移量(队列读取器)等的信息。
由于所有关键信息都存储在Zookeeper中,并且它通常在整个集群中复制这些数据,所以Kafka broker/Zookeeper的故障不会影响Kafka集群的状态。当Zookeeper重新启动,Kafka将恢复状态。 这给Kafka带来零停机时间。 Kafka经纪人之间的领导者选举也是通过在领导者失败的情况下,使用Zookeeper来完成的。
要了解Zookeeper的更多信息,请参阅zookeeper教程。
让我们继续,在下一章中学习如何安装Java,ZooKeeper和Kafka。