[7-02-16].第16节:生产调优 - 生产者

发布于:2025-04-17 ⋅ 阅读:(25) ⋅ 点赞:(0)

Kafka学习大纲


Kafka每个参数配置下面都有这3个参数,其含义是:

  • read-only:集群务重启后,配置更新生效
  • per-broker: 针对单个Broker节点单独的配置生效,不需要重启
  • cluster-wide:针对集群服务中的每个节点全部生效

在这里插入图片描述


1.1.Kafka 生产者核心参数配置:

a.发送流程

在这里插入图片描述

b.参数配置:

参数名称 描述
bootstrap.servers 生 产 者 连 接 集 群 所 需 的 broker 地 址 清 单 。 例 如 hadoop102:9092,hadoop103:9092,hadoop104:9092,可以设置 1 个或者多个,中间逗号隔开。注意这里并非需要所有的 broker 地址,因为生产者从给定的 broker 里查找到其他 broker 信息。
key.serializer 和 value.serializer 指定发送消息的 key 和 value 的序列化类型。一定要写全类名
batch.size 指定发送消息的 key 和 value 的序列化类型。一定要写全类名
linger.ms 指定发送消息的 key 和 value 的序列化类型。一定要写全类名
key.serializer 和 value.serializer 指定发送消息的 key 和 value 的序列化类型。一定要写全类名
buffer.memory RecordAccumulator 缓冲区总大小,默认 32m
batch.size 缓冲区一批数据最大值,默认 16k。适当增加该值,可以提高吞吐量,但是如果该值设置太大,会导致数据传输延迟增加
linger.ms 如果数据迟迟未达到 batch.size,sender 等待 linger.time之后就会发送数据。单位 ms,默认值是 0ms,表示没有延迟。生产环境建议该值大小为 5-100ms 之间
acks 0:生产者发送过来的数据,不需要等数据落盘应答;1:生产者发送过来的数据,Leader 收到数据后应答;-1(all):生产者发送过来的数据,Leader+和 isr 队列里面的所有节点收齐数据后应答。默认值是-1,-1 和 all是等价的
max.in.flight.requests.per.connection 允许最多没有返回 ack 的次数,默认为 5,开启幂等性要保证该值是 1-5 的数字
retries 当消息发送出现错误的时候,系统会重发消息。retries 表示重试次数。默认是 int 最大值,2147483647。如果设置了重试,还想保证消息的有序性,需要设置MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION=1否则在重试此失败消息的时候,其他的消息可能发送成功了
retry.backoff.ms 两次重试之间的时间间隔,默认是 100ms
enable.idempotence 是否开启幂等性,默认 true,开启幂等性
compression.type 生产者发送的所有数据的压缩方式。默认是 none,也就是不压缩

1.2.生产者如何提高吞吐量:

参数名称 描述
buffer.memory RecordAccumulator 缓冲区总大小,默认 32m
batch.size 缓冲区一批数据最大值,默认 16k。适当增加该值,可以提高吞吐量,但是如果该值设置太大,会导致数据传输延迟增加
linger.ms 如果数据迟迟未达到 batch.size,sender 等待 linger.time之后就会发送数据。单位 ms,默认值是 0ms,表示没有延迟。生产环境建议该值大小为 5-100ms 之间
compression.type 生产者发送的所有数据的压缩方式。默认是 none,也就是不压缩。支持压缩类型:none、gzip、snappy、lz4 和 zstd

1.3.数据可靠性

参数名称 描述
acks 0:生产者发送过来的数据,不需要等数据落盘应答。1:生产者发送过来的数据,Leader 收到数据后应答。-1(all):生产者发送过来的数据,Leader+和 isr 队列里面的所有节点收齐数据后应答。默认值是-1,-1 和 all是等价的。
  • 至少一次(At Least Once)= ACK 级别设置为-1 + 分区副本大于等于 2 + ISR 里应答的最小副本数量大于等于 2

1.4 数据去重:

a.数据去重:开启幂等性 + 事务

  • 1.开启幂等性配置参数:
参数名称 描述
enable.idempotence 是否开启幂等性,默认 true,表示开启幂等性
  • 2.Kafka 的事务一共有如下 5 个 API
    在这里插入图片描述

1.5 数据有序

  • 单分区内,有序(有条件的,不能乱序)
  • 多分区,分区与分区间无序

1.6.数据乱序

参数名称 描述
enable.idempotence 是否开启幂等性,默认 true,表示开启幂等性
max.in.flight.requests.per.connection 允许最多没有返回 ack 的次数,默认为 5,开启幂等性要保证该值是 1-5 的数字

网站公告

今日签到

点亮在社区的每一天
去签到