kafka压缩

最近有幸公司参与kafka消息压缩,背景是日志消息量比较大。kafka版本2.4.1

一、确认压缩算法

根据场景不同选择不同。如果是带宽敏感患者推荐高压缩比的zstd,如果是cpu敏感患者推荐lz4

lz4和zstd底层都使用的是lz77算法,具体实现逻辑不同,根据我们现有日志消息计算最高压缩比。

最终结合我们生产环境最终是确认了使用lz4压缩算法。

二、压缩相关的参数

除了这几个基本的参数外,还需要相应的调整kafka的参数。

参数 作用范围 描述 默认值 关键依赖关系 场景/注意事项
message.max.bytes Broker Broker 允许接收的单个消息最大大小(含消息头、键、值)。 1048588 (1MB) 生产者需设置 max.request.size ≤ 此值;消费者需设置 max.partition.fetch.bytes ≥ 此值 若消息超过此值,生产者会被 Broker 拒绝。需与生产者和消费者参数协同配置。
replica.fetch.max.bytes 副本同步(Broker) 副本从 Leader 分区单次拉取数据的最大字节数。 1048576 (1MB) 必须 ≥ message.max.bytes,否则副本无法同步大消息 若设置过小,可能导致副本频繁掉出 ISR 列表。
fetch.message.max.bytes 消费者(旧版本) 已弃用 ,替代参数为 max.partition.fetch.bytes 旧版本默认同 max.partition.fetch.bytes 无(建议使用新参数) 旧版本兼容性参数,新版本无需关注。
max.partition.fetch.bytes 消费者 消费者从单个分区单次拉取数据的最大字节数。 1048576 (1MB) 必须 ≥ message.max.bytes,否则无法消费大消息 若分区中某条消息大小超过此值,消费者会抛出异常。
num.replica.fetchers 副本同步(Broker) Broker 用于副本同步的线程数。增加此值可提升副本同步并行度。 1 无直接依赖,但需根据集群负载调整 分区数多或吞吐量高时,增大此值可加速副本同步。
replica.lag.time.max.ms 副本同步(Broker) 副本若在此时间内未向 Leader 同步数据,则被标记为不同步(移出 ISR)。 30000 (30秒) 无直接依赖 设置过短可能导致副本频繁移出 ISR;过长可能容忍滞后副本(影响可靠性)。

接着就是根据prometheus图 不断调整参数找到最适合的参数

相关推荐
YOU OU6 小时前
Redis基础常识与命令
数据库·redis·缓存
Database_Cool_8 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森8 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_9 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白10 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面10 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧10 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈10 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy10 小时前
log4net 数据库存日志正确配置
数据库