目录
💟这里是CS大白话专场,让枯燥的学习变得有趣!
💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话!
💟好记性不如烂键盘,自己总结不如收藏别人!
🧡生产者调优
💌重要参数列表:
参数 | 描述 |
bootstrap.servers | 生产者连接集群所需的 Broker 地址清单。例如 hadoop102:9092,hadoop103:9092,hadoop104:9092。 |
key.serializer &value.serializer | 指定发送消息的 key 和 value 的序列化类型。 |
buffer.memory | RecordAccumulator 缓冲区总大小,默认 32M。 可适当调大到 64M。 |
batch.size | 缓冲区一批数据最大值,默认 16K。 可适当调大到 32K。 |
linger.ms | 如果数据迟迟未达到 batch.size,sender 等待 linger.time之后就会发送数据,默认 0ms。 生产环境建议 5-100ms 之间。 |
acks | http://t.csdn.cn/lKk5F |
max.in.flight.requests.per.connection | 允许最多没有返回 ack 的次数,默认为 5。 开启幂等性要保证该值为 1-5,不开则为 1。 |
retries | 重试次数,默认 int最大值,2147483647。一般3次, 如果设置了重试,还想保证消息的有序性,需要设置 max.in.flight.requests.per.connection = 1。 |
retry.backoff.ms | 两次重试之间的时间间隔,默认 100ms。 |
enable.idempotence | 是否开启幂等性,默认 true。 |
compression.type | 生产者发送的所有数据的压缩方式,默认 none。 支持压缩类型:none、gzip、snappy、lz4 和 zstd。 |
🍠提高吞吐量:黑色加粗。
🍠数据可靠:acks = -1。
🍠数据重复:幂等性+事务。
🍠数据有序:单分区内,紫色加粗。
🧡Broker调优
💌重要参数列表:
参数 | 描述 |
replica.lag.time.max.ms | Follower 长时间未向 Leader 发送通信请求或同步数据,则该 Follower 将被踢出ISR, 默认 30s。 |
auto.leader.rebalance.enable | 自动平衡,默认 true。建议关闭。 |
leader.imbalance.per.broker.percentage | 不平衡Leader比率,默认 10%。 |
leader.imbalance.check.interval.seconds | 检查是否平衡,默认值 300s。 |
log.segment.bytes | log日志划分成segment的大小,默认 1G。 |
log.index.interval.bytes | 默认 4Kb。每写入了 4kb log日志 ,往 index文件里记录一个索引。 |
log.retention.hours | 数据保存的时间,默认 7 天。实际可调整成几个小时。 |
log.retention.minutes | 数据保存的时间,分钟级别,默认关闭。 |
log.retention.ms | 数据保存的时间,毫秒级别,默认关闭。 |
log.retention.check.interval.ms | 检查数据是否保存超时的间隔,默认 5 分钟。 |
log.retention.bytes | 日志大小阈值,默认 -1,表示无穷大。 |
log.cleanup.policy | 默认是 delete,表示所有数据启用删除策略;compact 表示启用压缩策略。 |
num.io.threads | 负责写磁盘的线程数,默认 8。 整个参数值要占总核数的 50%。 |
num.replica.fetchers | 副本拉取线程数,默认 1。占总核数的 50%的 1/3。 |
num.network.threads | 数据传输线程数,默认 3。占总核数的50%的 2/3 。 |
log.flush.interval.messages | 强制页缓存刷写到磁盘的条数,默认 long 的最大值,9223372036854775807。一般不建议修改,交给系统自己管理。 |
log.flush.interval.ms | 每隔多久,刷数据到磁盘,默认 null。一般不建议修改,交给系统自己管理。 |
auto.create.topics.enable | 自动创建主题,默认 true。建议关闭。 |
🍠数据可靠:http://t.csdn.cn/lKk5F。
🧡消费者调优
💌重要参数列表:
参数 | 描述 |
bootstrap.servers | 消费者连接集群所需的 Broker 地址清单。 |
key.deserializer & value.deserializer | 指定接收消息的 key 和 value 的反序列化类型。 |
group.id | 标记消费者所属的消费者组。 |
enable.auto.commit | 自动周期性地向服务器提交offset,默认值 true。 |
auto.commit.interval.ms | 消费者offset向 Kafka 提交的频率,如果设置了 enable.auto.commit 为 true,则默认 5s。 |
auto.offset.reset | 当 Kafka 中没有初始offset或当前offset在服务器中不存在。earliest:自动重置offset到最早的offset。 latest:默认,自动重置offset为最新的offset。 none:如果消费组原来的offset不存在,则向消费者抛异常。 anything:向消费者抛异常。 |
offsets.topic.num.partitions | __consumer_offsets 的分区数,默认 50 。 |
heartbeat.interval.ms | 消费者和 coordinator 之间的心跳时间,默认 3s。 必须小于 session.timeout.ms ,也不应该高于 session.timeout.ms 的 1/3。 |
session.timeout.ms | 消费者和 coordinator 之间连接超时时间,默认 45s。 超过该值,该消费者被移除,消费者组执行再平衡。 |
max.poll.interval.ms | 消费者处理消息的最大时长,默认 5 分钟。超过该值,该 消费者被移除,消费者组执行再平衡。 |
fetch.min.bytes | 消费者获取服务器端一批消息最小的字节数,默认 1 个字节。 |
fetch.max.wait.ms | 默认 500ms。如果没有从服务器端获取到一批数据的最小字 节数,该时间到,仍然会返回数据。 |
fetch.max.bytes | 消费者拉取服务器端一批消息最大的字节数,默认 52428800(50 M)。 |
max.poll.records | 一次 poll 拉取数据返回消息的最大条数,默认 500 条。 |
partition.assignment.strategy | 分区分配策略,默认 Range+CooperativeSticky。 |
🍠提高吞吐量:增加分区,黑色加粗,增加下游消费者处理能力。
🍠数据精确一次:事务+手动offset,输出目的地支持事务。
🍠再平衡:紫色加粗。