Kafka学习笔记(五):Brokers, Topics and Topic Replication, acks
Kafka Brokers
- 一个kafka集群由多个 brokers(servers)组成
- 每个代理由ID(整数)标识
- 每个代理只包含特定的主题分区
- 连接到任何kafka代理(也称为引导代理后),客户端、生产者或使用者将连接到整个kafka集群
- 最好是从3个代理开始,但在有些大型集群中会有超过100个代理
- 代理的编号可以选择从任意数开始
Kafka 代理机制
- 每个 kafka 代理也被称为“引导服务器”
- 每个代理知道所有的代理、主题和分区(元数据)
主题复制因子
- 主题应有一个复制因子>1(通常在2与3之间)
- 因此,万一有一个代理挂了,其他代理仍可以提供服务
分区领导者的概念
- 在任何时刻,一个分区只会有一个代理作为领导者
- 生产者只会把数据发送给作为分区领导者的代理
- 其他的代理会从分区领导者复制数据
- 因此,每个分区拥有一个领导者和多个ISR(in-sync replica 同步副本)
生产者、消费者和领导者之间的默认行为
- kafka 生产者只会向分区的领导者代理写入数据
- kafka 消费者默认会从分区的领导者读取数据
Kafka 消费者副本获取(Kafka v2.4+)
- 自从 Kafka 2.4,可以配置让消费者从最近的副本进行读取,这可以降低延迟,如果是在云上,则可以降低网络成本
生产者的确认机制 acks
生产者可以选择是否接受写入数据的确认消息:
- acks=0:生产者不会等待确认,如果代理崩溃,可能会导致数据丢失
- acks=1:生产者会等待领导者的确认,可能会导致有限的数据丢失
- acks=all:要求领导者和所有副本的确认,不会有数据丢失