这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
一、角色分工
1. Producer|生产者
1.1 关键参数
1.1.1 request.required.asks
- 值 = 0:生产者无需等待 broker 确认,直接发送下一条【可靠性最低,吞吐量最大】;
- 值 = 1:生产者须等待 ISP 中的 leader 成功收到后,再发送下一条【若 leader 宕机则丢失数据】;
- 值 = -1:生产者须等待 ISP 中的所有 follower 都确认后,才发送下一条【最可靠,吞吐量最小】;
1.1.2 retries
- 重试提交消息的次数【0-N】。
1.1.3 batch.size
- 批量提交消息的数量。
1.1.4 linger.ms
- 凑齐批量之前等待的毫秒数【0-N】。
- 值 = 0:即使缓冲区未满一批的最大值,也会提交消息。
- 值 > 0:缓冲区未满时等待一定的时间后再提交消息,可减少提交次数。
1.1.5 buffer.memory
- 缓冲区大小(KB)。
1.1.6 key.serializer
- 指定消息 Key 的序列化类。
- 一般可选
org.apache.kafka.common.serialization.StringSerializer
1.1.7 value.serializer
- 指定消息 Value 的序列化类。
- 一般可选
org.apache.kafka.common.serialization.StringSerializer
2. Consumer|消费者
2.1 关键参数
2.1.1 fetch.min.bytes
- 含义:每次取数据最小字节数;
- 适当调大:减少消息处理次数;
2.1.2 fetch.max.wait.ms
- 含义:每次取数据最大的等待时间;
- 适当调大:减少 broker 工作负载;
- 适当调小:提高消息处理实时性;
2.1.3 max.partition.fetch.bytes
- 含义:从每个分区返回的最大字节数;
- 适当调大:提高吞吐量;
2.1.4 session.timeout.ms
- 含义:会话超时时间,超时则服务端断开连接,触发 rebalance 等;
- 通常设置值 = 3 * hartbeat.interval.ms
2.1.5 auto.offset.reset
- 含义:消费数据的偏移量起始位置,
- latest:从最新位置开始消费;
- earliest:从头开始消费(Kafka中存储的全部数据);
2.1.6 enable.auto.commit
- 含义:是否开启 自动提交偏移量 模式;
2.1.7 partition.assignment.strategy
- 含义:分片分配策略;
- Range:连续分区分配;
- RoundRobin:逐个分区分配;
2.1.8 max.poll.records
- 含义:每次 poll 最多拉取的数据条数;