资料内容:
2. 架构
Kafka 存储的消息来自任意多被称为 Producer 生产者的进程。数据从而可以被发布到不同的 Topic 主题下
的不同 Partition 分区。在一个分区内,这些消息被索引并连同时间戳存储在一起。其它被称为 Consumer
消费者的进程可以从分区订阅消息。Kafka 运行在一个由一台或多台服务器组成的集群上,并且分区可以跨
集群结点分布。
下面给出 Kafka 一些重要概念,让大家对 Kafka 有个整体的认识和感知,后面还会详细的解析每一个概念的
作用以及更深入的原理。
● Producer: 消息生产者,向 Kafka Broker 发消息的客户端。
● Consumer: 消息消费者,从 Kafka Broker 取消息的客户端。
● Consumer Group: 消费者组(CG),消费者组内每个消费者负责消费不同分区的数据,提高消费能
力。一个分区只能由组内一个消费者消费,消费者组之间互不影响。所有的消费者都属于某个消费者组,即
消费者组是逻辑上的一个订阅者。
● Broker: 一台 Kafka 机器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个
topic。
● Topic: 可以理解为一个队列,topic 将消息分类,生产者和消费者面向的是同一个 topic。
● Partition: 为了实现扩展性,提高并发能力,一个非常大的 topic 可以分布到多个 broker (即服务器)
上,一个 topic 可以分为多个 partition,每个 partition 是一个 有序的队列, 可以理解为将标准 MQ 的
Queue 的消息进行拆分, 来实现高可用
Producer 发送的 Message, 根据 key 和 partition 数进行 hash, 然后进行投递,一个分区只能被同一个
Consumer Group 中的一个 Consumer 消费. 分区内消费有序 。
● Replica: 副本,为实现备份的功能,保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢
失,且 Kafka 仍然能够继续工作,Kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个
leader 和若干个 follower。
● Leader: 每个分区多个副本的“主”副本,生产者发送数据的对象,以及消费者消费数据的对象,都是
leader。
● Follower: 每个分区多个副本的“从”副本,实时从 leader 中同步数据,保持和 leader 数据的同步。
leader 发生故障时,某个 follower 还会成为新的 leader。
● offset: 消费者消费的位置信息,监控数据消费到什么位置,当消费者挂掉再重新恢复的时候,可以从消
费位置继续消费。
● Zookeeper: Kafka 集群能够正常工作,需要依赖于 zookeeper,zookeeper 帮助 Kafka 存储和管理集
群信息。