Kafka 架构介绍
Kafka 基本组成
生产者 — 将消息发送给以 Topic 命名的消息队列 Queue 中
消费者 — 订阅以 Topic 命名的消息队列 Queue 中的消息
Kafka 集群由多个 Broker 组成,Topic 由多个 Partition 组成,每个 Partition 里的消息通过 Offset 来获取。
1)Broker:一台 kafka 机器就是一个 Broker,一个集群由多个 Broker 组成,一个 Broker 可以容纳多个 Topic,每个 Broker 之间地位平等。
2)Topic:物理上不同 Topic 的消息分开存储,逻辑上一个 Topic 虽然保存在一个或多个 Broker 上,但是用户指定 Topic 即可生成或消费,而不需要关心数据存放何处;
3)Partition:为了可扩展性,一个大的 Topic 会被分为多个 Partition,从而分布到多台 Broker 上。Partition 中的每条消息都会被分配一个自增 Id(offset),Kafka 只保证按一个 Partition 中的顺序将消息发送给消费者,但不保证单个 Topic 中的多个 Partition 间的顺序;
4)Offset:消息在 Topic 的 Partition 中的位置。同一个 Partition 中的消息随着消息的写入,其对应的 Offset 也自增
5)Replica:副本。Topic 的 Partition 含有 N 个 Replica,N 为副本因子。其中一个 Replica 为 Leader,其他都为 Follower,Leader 处理 Partition 的所有读写请求,Follower 会定期同步 Leader 上的数据。
6)Message:消息,通信的基本单元。每个 Producer 可以向一个 Topic 发布一些消息。
7)Producer:消息生产者
8)Consumer:消息消费者
9)Consumer Group:消费者组,每个 Consumer 属于一个 Consumer Group;反过来,每个 Consumer Group 中可以包含多个 Consumer。一个 Partition 中的消息只会被相同的 Consumer Group 中的某个 Consumer 消费,每个 Consumer Group 消息消费是相互独立的。
10)Zookeeper:存放 kafka 集群相关元数据的组件。会保存 Topic 的状态信息,例如:分区个数,分区组成,分区的分布情况等;保存 Broker 的状态信息;保存消费者的消费信息。通过这些,kafka 可以很好的将消息生产、存储、消费过程结合起来。
版权声明: 本文为 InfoQ 作者【架构精进之路】的原创文章。
原文链接:【http://xie.infoq.cn/article/446d3e4996f67444d23f9bf54】。文章转载请联系作者。
评论