产品架构
更新时间:2022-06-15
服务架构
kafka 集群服务由多个 broker 组成,服务架构如下:
- 主题(Topic): 用于分类消息,可视为特定的消息流或消息队列,生产者向指定主题推送消息,消费者订阅主题并拉取消息。
- 消息节点(Kafka Broker): 组成 Kafka 集群服务的单个 kafka 进程,对应一台独立的 BCC 云主机。
- 生产者(Producer): 生产消息的系统或者服务,向服务推送消息,写入到指定的主题。
- 消费组(Consumer Group): 消费组由一个或多个消息者(Consumer)组成,消费者订阅单个或多个主题,主动从 Broker 拉取消息。
数据分布
- 分区(Partition): 每个 Topic 由多个 Partition 组成,Partition 对应实际存储消息的文件,可以分布在集群的多个 Broker 上,以此增加读写并发性,提高服务吞吐量。
- 副本(Replica): 每个 Partition 可以配置多个 Replica,同一 Partition 的不同副本必须分布在不同的 Broker 上。同一个 Partition 的多个 Replica,只有一个 Replica 作为 Leader 提供读写服务,其他 Replica 都作为 Follower 从 Leader 同步数据。当作为 Leader 的 Replica 因故障下线后,其他同步的 Follower 会重新选举 Leader 提供服务,确保数据安全并提高服务的可靠性。
消费组规则
- 任何消费者必须加入一个消费组。
- 同一个消费组下,不同消费者会被分配到不同的 Partition,每个 Partition 最多只能被分配给一个消费者,因此每条消息只会被一个消费者处理,此时相当于点对点模式。
- 同一个消费组下 Partition 只能分配到 1 个消费者,因此同一个消费组下消费者数量不要超过订阅的分区数。
- 一个 Topic 可以同时被多个消费组订阅,不同消费组维护独立的消费记录,Topic 中的消息相当于广播给所有订阅的消费组,此时相当于发布/订阅模式。