Kafka实战(一)|8月更文挑战

589 阅读2分钟

这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战

一、角色分工

1. Producer|生产者

1.1 关键参数

1.1.1 request.required.asks
  1. 值 = 0:生产者无需等待 broker 确认,直接发送下一条【可靠性最低,吞吐量最大】;
  2. 值 = 1:生产者须等待 ISP 中的 leader 成功收到后,再发送下一条【若 leader 宕机则丢失数据】;
  3. 值 = -1:生产者须等待 ISP 中的所有 follower 都确认后,才发送下一条【最可靠,吞吐量最小】;
1.1.2 retries
  1. 重试提交消息的次数【0-N】。
1.1.3 batch.size
  1. 批量提交消息的数量。
1.1.4 linger.ms
  1. 凑齐批量之前等待的毫秒数【0-N】。
  2. 值 = 0:即使缓冲区未满一批的最大值,也会提交消息。
  3. 值 > 0:缓冲区未满时等待一定的时间后再提交消息,可减少提交次数。
1.1.5 buffer.memory
  1. 缓冲区大小(KB)。
1.1.6 key.serializer
  1. 指定消息 Key 的序列化类。
  2. 一般可选 org.apache.kafka.common.serialization.StringSerializer
1.1.7 value.serializer
  1. 指定消息 Value 的序列化类。
  2. 一般可选 org.apache.kafka.common.serialization.StringSerializer

2. Consumer|消费者

2.1 关键参数

2.1.1 fetch.min.bytes
  1. 含义:每次取数据最小字节数;
  2. 适当调大:减少消息处理次数;
2.1.2 fetch.max.wait.ms
  1. 含义:每次取数据最大的等待时间;
  2. 适当调大:减少 broker 工作负载;
  3. 适当调小:提高消息处理实时性;
2.1.3 max.partition.fetch.bytes
  1. 含义:从每个分区返回的最大字节数;
  2. 适当调大:提高吞吐量;
2.1.4 session.timeout.ms
  1. 含义:会话超时时间,超时则服务端断开连接,触发 rebalance 等;
  2. 通常设置值 = 3 * hartbeat.interval.ms
2.1.5 auto.offset.reset
  1. 含义:消费数据的偏移量起始位置,
  2. latest:从最新位置开始消费;
  3. earliest:从头开始消费(Kafka中存储的全部数据);
2.1.6 enable.auto.commit
  1. 含义:是否开启 自动提交偏移量 模式;
2.1.7 partition.assignment.strategy
  1. 含义:分片分配策略;
  2. Range:连续分区分配;
  3. RoundRobin:逐个分区分配;
2.1.8 max.poll.records
  1. 含义:每次 poll 最多拉取的数据条数;