当前位置: 首页 > article >正文

CodeMagicianT奈

前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。写在前面Kafka 作为一个成熟的事件流平台有非常多的配置参数。详细的参数列表可以查看官方文档。本文我们列出一些个人认为比较重要的参数并对其进行详细的介绍。Broker 端参数第一个要介绍的参数是 log.dirs 它是 Broker 的一个最基本的参数用来指定数据存储的目录多个目录之间用逗号分隔。这个参数是必填参数且没有默认值。因此必须要手动配置。在生产环境中我们可以给这个目录配置挂载在多个不同磁盘的路径这样既可以提升读写性能又可以实现故障转移。Kafka 还提供了 log.dir 参数作为 log.dirs 的补充这个参数只能配置一个目录默认值是 /tmp/kafka-logs 通常情况下我们只需要配置 log.dirs 就好。第二个参数是 process.roles它用来指定 broker 的角色可以是 broker 或者 controller也可以同时指定为 broker,controller。第三个参数是 listeners它是 broker 的“耳朵”指定了 broker 如何监听外部连接。连接的配置是一个三元组包括协议名称主机名端口号。Kafka 目前支持四种安全协议PLAINTEXT明文传输SSL/TLS加密传输SASL_PLAINTEXT认证明文传输SASL_SSL认证加密传输为最高安全级别此外还可以自定义协议名称但需要配置 listener.security.protocol.map 参数。主机名可以指定为一个确定的主机名也可以是 0.0.0.0 这代表了 broker 会监听所有网卡。主机名也可以是空代表监听默认接口。第四个参数是 advertised.listeners 这组配置是 Broker 发布的监听也就是告诉别人“怎么找到我”。它的配置格式和 listeners 相同。再来看几个集群稳定性和元数据管理相关的参数。第五个是 auto.create.topics.enable表示是否允许自动创建 topic。在生产环境中一般设置为 false需要用户手动创建 topic方便管理。第六个是 unclean.leader.election.enable表示是否允许 unclean leader 选举。unclean 就是落后太多的副本如果允许这部分副本参与选举可能会造成数据丢失因此最好手动设置 false。在最新版本中它的默认值就是 false为什么还要手动设置呢因为不同的 Kafka 版本中这个参数的默认值是不一样的最开始是 false后来改成了 true现在又改回了 false。为了避免数据丢失我们还是手动设置成 false 比较放心。第七个参数是 auto.leader.rebalance.enable表示是否允许定期选举 leader这个参数最好也设置为 false如果设置为 true 的话即使当前 leader 一直运行的很稳定Kafka 也会重新选举出一个新的 leader 来替代它。替换 leader 的成本还是非常高的所有连接到旧 leader 的 client 都需要与新的 leader 重新建立连接。第八个参数是 min.insync.replicas 表示最小同步副本数它与生产者的 acksall 配合。如果存活的副本数小于这个值producer 在写入时会直接报错。这个配置可以保证我们在牺牲部分可用性的情况下确保数据的正确性。接下来我们再看几个数据生命周期相关的参数。第九个参数是 log.retention.hours / minutes / ms这其实是三个参数表示的意思一样都是数据留存时长只是时间单位不同。如果三个参数都配置了优先级是 ms minutes hours。第十个参数 log.retention.bytes它表示单个 broker 上存储的最大字节数默认是 -1也就是没有限制。在数据激增时它可以是保护磁盘不溢出的最后防线。第十一个参数是 log.segment.bytes它表示单个日志文件的大小默认是 1GB。Topic 参数Topic 级别的参数会覆盖 Broker 参数的值它的主要作用针对不同的 topic 灵活的配置参数。最常见的是我们在生产环境中针对不同的 topic 会配置不同的数据保留时长。这也是我们要介绍的第一个参数 retention.ms它对应的 broker 端的参数就是 log.retention.ms。第二个参数是 retention.bytes 它对应的是 log.retention.bytes。第三个参数是 cleanup.policy它对应的是 broker 端的 log.cleanup.policy这个参数代表了数据清理策略默认值是 delete即直接物理删除。也可以配置为 compact对每个 key 只保留最新的值这种策略比较适合一些状态保存的场景。第四个参数是 segment.bytes 与之对应的 broker 参数是 log.segment.bytes同样是控制 Log Segment 文件的大小默认是 1GB。调小可以让 Kafka 更及时的回收磁盘空间但容易产生大量小文件增大索引压力。一般保持默认值就好。第五个参数是 max.message.bytes 它限制了该 Topic 能接收的最大单条消息的大小默认是 1MB对个别业务可以适当调大。需要注意的是它和消费端参数 fetch.max.bytes 的大小应该合理配置。如果 max.message.bytes 设置为 10MBfetch.max.bytes 设置为 5MB当 Topic 中有超过 5MB 的消息时就会导致无法消费的问题。Producer 参数首先第一个参数是 acks它有几个值0不管是否写入成功1Leader 写入成功即可all / -1ISR 都要写入成功默认值是 all如果设置成 0 或 1 性能会提高但有可能丢失数据。第二个参数是 retries 它控制请求的重试次数默认是 2147483647约等于无限重试了。第三个参数是 batch.size默认是 16KB调大会提升吞吐量但是会增加内存占用。第四个参数是 linger.ms它用来控制发送等待时间也就是“攒批”的时间Kafka 4.0 把它的默认值从 0 调成了 5。它可以和 batch.size 配合使用同时调大会提高吞吐但数据会有一定的延迟。在生产环境中我们可以根据不同的场景对其进行调整如果数据量极大但对延迟要求不高则可以考虑调大这两个参数。最后第五个参数是 compression.type 生产端的压缩算法默认不开启压缩目前支持的值为none、gzip、snappy、lz4、zstd。Consumer 参数最后我们再来看几个 Consumer 端的参数。第一个是 group.id用来标识这个 consumer 属于哪个消费组。第二个是 auto.offset.reset它用来标识 offset 的重置策略。支持以下几个值earliest从最早的 offset 开始消费latest从最新的 offset 开始消费by_duration需要配置为 by_duration:ISO-8601 格式的时间例如 by_duration:PT1H 即从 1 小时前的位移开始消费none如果没找到消费组的 offset就会抛出异常第三个参数是 enable.auto.commit是否自动提交 offset默认是 true。在调用 poll 方法时会提交上一批次的 offset。也可以设置为 false这样就是手动提交自己控制在什么时候提交具体的细节我们以后再聊。第四个参数是 max.poll.records 表示单次拉取的消息条数默认是 500。如果单条数据的处理逻辑比较重可以调小这个值防止消费超时的情况。第五个参数是 session.timeout.ms表示心跳超时时间默认是 45000即 45 秒。如果 Broker 超过 45 秒没收到 Consumer 的心跳就认为这个 Consumer 挂了会将它踢出消费组然后进行 Rebalance。总结本文我们一起学习了涉及 Broker、Topic、Producer、Consumer 端的共 26 个配置参数这些都是我认为比较重要的。掌握之后可以对生产环境的调优有比较大的帮助。除了上面提到的这些你还知道有哪些比较重要的配置参数吗匾凭难好

相关文章:

CodeMagicianT奈

前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知,本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台,有非常多的配置参数。详细的参数列表可以…...

从 Apache SeaTunnel 走向 ASF Member:一位开发者的长期主义样本悔

一、中间件是啥?咱用“餐厅”打个比方 想象一下,你的FastAPI应用是个高级餐厅。 ?? 顾客(客户端请求)来到门口。- 迎宾(CORS中间件):先看你是不是从允许的街区(域名)来…...

如何突破抖音视频下载限制:douyin-downloader的全方位解决方案

如何突破抖音视频下载限制:douyin-downloader的全方位解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallba…...

开源工具Free-NTFS-for-Mac:跨平台NTFS设备高效管理指南

开源工具Free-NTFS-for-Mac:跨平台NTFS设备高效管理指南 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management …...

Matlab七次非均匀B样条轨迹规划及基于NSGAII的优化方法

matlab-B样条轨迹规划-1 七次非均匀B样条轨迹规划, 基于NSGAII的时间-能量-冲击最优。 换上自己的关节值和时间就能用,简单好用,最近在搞机器人轨迹规划,发现七次非均匀B样条真是个好东西。它不仅能保证轨迹的平滑性,还…...

8大AI核心概念,让你秒懂智能体、多智能体系统、RAG、工作流、微调、函数调用、MCP和A2A!

本文介绍了8个AI核心概念,包括智能体(Agent)和多智能体系统(Multi-Agent System),以及如何通过RAG(Retrieval-Augmented Generation)、工作流(Work Flow)、微…...

2026 年深度测评:立体库品牌哪家权威?

“立体库用得好是降本神器,用不好就是百万窟窿。”这是我在仓储物流行业摸爬滚打 15 年来最深的体会。当企业投入巨资上马自动化立体库,最核心的疑问只有一个:立体库品牌哪家好、哪家强、选哪家更放心?是选低价集成商,…...

09 华夏之光永存:带领华为盘古大模型走向世界巅峰

09 华夏之光永存:带领华为盘古大模型走向世界巅峰 小标题:鸿蒙生态深度协同:端侧大模型原生融合方案 文章摘要 本文作为系列专栏第九篇,聚焦华为盘古大模型与鸿蒙生态端侧原生适配、端边云全域协同核心痛点,针对当前端…...

基于核密度估计的CNN-LSTM-Attention-KDE多输入单输出回归模型【MATLAB】

基于核密度估计的CNN-LSTM-Attention-KDE多输入单输出回归模型 在深度学习时间序列预测与回归分析中,传统的模型往往只能给出一个确定的“点预测”结果(例如:预测明天的温度是25度)。然而,在许多高风险的工程和金融场景…...

Chat Smith 7.1.0 vs 原生ChatGPT:哪个更适合你的日常AI需求?

Chat Smith 7.1.0与原生ChatGPT深度评测:如何选择你的AI助手? 在AI助手遍地开花的今天,选择一款适合自己的工具就像在糖果店挑选最合口味的糖果——眼花缭乱却难以抉择。Chat Smith 7.1.0和原生ChatGPT无疑是当前最受关注的两款产品&#xff…...

高光谱成像基础(十一)异常检测算法 RX 与 KRX胸

一、简化查询 1. 先看一下查询的例子 /// /// 账户获取服务 /// /// /// public class AccountGetService(AccountTable table, IShadowBuilder builder) {private readonly SqlSource _source new(builder.DataSource);private readonly IParamQuery _accountQuery build…...

c语言错题

c 错题#include <iostream> using namespace std;int bitCount(int x){int y0;for(; x>0;){y x & 1;x >>1;}return y; } int main() {// 请在此输入您的代码int i, n, m, j;scanf("%d",&n);int a[n];for(i0;i<n;i){scanf("%d",…...

AppImageLauncher:5分钟掌握Linux AppImage应用的终极管理方案

AppImageLauncher&#xff1a;5分钟掌握Linux AppImage应用的终极管理方案 【免费下载链接】AppImageLauncher Helper application for Linux distributions serving as a kind of "entry point" for running and integrating AppImages 项目地址: https://gitcode…...

如何永久保存微信聊天记录?这个免费工具让你轻松备份和分析所有对话![特殊字符]

如何永久保存微信聊天记录&#xff1f;这个免费工具让你轻松备份和分析所有对话&#xff01;&#x1f680; 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https:…...

Noise2Noise 去噪程序完整运行指南:从环境配置到模型部署

Noise2Noise 去噪程序完整运行指南:从环境配置到模型部署 摘要 本文旨在为深度学习研究者和开发者提供一份完整、详尽的 Noise2Noise 去噪程序运行指南。Noise2Noise(噪声到噪声)是由 NVIDIA 研究团队在 ICML 2018 发表的一种突破性图像恢复方法,其核心创新在于仅使用带噪…...

GIL终结者来了!Python原生无锁并发的3大工业级模式:MPMC队列、无等待哈希表、RCU读写分离实战(含perf火焰图验证)

第一章&#xff1a;GIL终结者&#xff1a;Python原生无锁并发的范式革命长久以来&#xff0c;CPython解释器中的全局解释器锁&#xff08;GIL&#xff09;被视为Python高并发能力的天然枷锁——它强制同一时刻仅有一个线程执行Python字节码&#xff0c;即便在多核CPU上也无法真…...

C# 13主构造函数+Records+With表达式三重组合技(.NET 8.0正式版实测):DTO层代码减少83%,但需绕过这个编译器Bug

第一章&#xff1a;C# 13主构造函数案例C# 13 引入了主构造函数&#xff08;Primary Constructor&#xff09;语法&#xff0c;允许在类或结构体声明时直接定义构造参数&#xff0c;并自动将参数提升为类型成员&#xff08;如只读字段或属性&#xff09;&#xff0c;显著简化了…...

【苍穹外卖】Mac前端开发环境搭建:从零到部署的完整指南

1. 为什么选择Mac搭建前端开发环境&#xff1f; 作为一个长期使用Mac进行前端开发的程序员&#xff0c;我可以很负责任地说&#xff0c;Mac确实是前端开发的绝佳选择。首先&#xff0c;Mac基于Unix系统&#xff0c;命令行环境对开发者极其友好&#xff0c;很多工具和命令与Linu…...

零基础玩转OpenClaw:Qwen3.5-9B镜像云端体验指南

零基础玩转OpenClaw&#xff1a;Qwen3.5-9B镜像云端体验指南 1. 为什么选择云端体验OpenClaw 作为一个长期在本地折腾AI工具的开发者&#xff0c;我完全理解新手面对环境配置时的恐惧。记得第一次尝试部署本地AI助手时&#xff0c;光是解决Python版本冲突就花了两天时间。直到…...

SpringBoot集成Flyway:从多数据库适配到生产环境实战

1. 为什么你的微服务需要Flyway&#xff1f; 第一次遇到数据库迁移问题是在2018年&#xff0c;当时我们团队维护着一个需要同时支持MySQL和Oracle的SaaS产品。每次发版前&#xff0c;DBA都要手动执行几十个SQL脚本&#xff0c;经常出现测试环境执行成功但生产环境漏掉某个脚本的…...

可视化监控OpenClaw:Qwen3-14B任务执行看板搭建

可视化监控OpenClaw&#xff1a;Qwen3-14B任务执行看板搭建 1. 为什么需要监控OpenClaw&#xff1f; 去年冬天的一个深夜&#xff0c;我被连续不断的微信消息惊醒——团队部署的OpenClaw自动化流程突然陷入死循环。由于缺乏实时监控&#xff0c;这个消耗了上千Token的异常任务…...

从原理到实践:使用Cost733完成天气环流分型的完整指南

1. Cost733软件基础解析 天气环流分型是气象研究中的一项关键技术&#xff0c;它能帮助我们将复杂多变的大气环流状态归纳为有限的几种典型模式。这就好比把每天变化的天气照片整理成几本相册&#xff0c;每本相册代表一种典型的天气类型。Cost733正是完成这项工作的专业工具&a…...

AI:词向量模型详解(Word Embedding)

词向量模型详解&#xff08;Word Embedding&#xff09; 词向量&#xff08;Word Embedding&#xff09;是自然语言处理&#xff08;NLP&#xff09;中最基础且影响深远的表示学习方法之一。它将离散的词汇映射为低维、稠密的实数向量&#xff0c;使计算机能够“理解”词语之间…...

springboot基于java搭建网站框架音乐系统_714i0lac

前言 SpringBoot基于Java搭建的音乐系统是一个集音乐播放、管理、推荐和社交功能于一体的综合性Web应用。该系统利用SpringBoot框架的快速开发特性&#xff0c;结合Java语言的稳定性和强大的生态系统&#xff0c;为音乐爱好者提供一个功能丰富、用户体验良好的在线音乐平台。一…...

HappyHorse-1.0空降榜首碾压Seedance 2.0:60分断层领先,开源可商用,音视频联合生成新王诞生!

文章目录引言第1章&#xff1a;榜单屠榜&#xff0c;数据说话1.1 Artificial Analysis 榜单成绩1.2 为什么60分的差距如此恐怖&#xff1f;1.3 唯一短板&#xff1a;音频赛道第2章&#xff1a;技术亮点详解2.1 核心参数&#xff1a;150亿参数的庞然大物2.2 音视频联合生成&…...

3. 函数新增了哪些扩展?

一、先给一个面试开场思路如果面试官问&#xff1a;ES6 对函数新增了哪些扩展&#xff1f;不要一上来就堆概念。 比较好的回答方式是先分类&#xff1a;ES6 对函数的扩展&#xff0c;我一般会从 参数、作用域、函数写法、this 绑定、尾调用、函数名、rest/spread 这几个方面来说…...

kotlin协程取消执行

取消启动协程的整个scope&#xff0c;该scope下面的所有协程都会被取消。协程内部是通过抛出一个特殊的异常来实现取消的&#xff1a;CancellationException。如果想在取消时传递取消的原因&#xff0c;可以在调用cancel时主动提供一个CancellationException的实例&#xff1a;…...

阻塞和非阻塞、同步和异步、挂起

阻塞和非阻塞阻塞和非阻塞指的是线程在调用后&#xff0c;线程是否干等。挂起的是任务&#xff0c;阻塞的是线程&#xff0c;任务在线程中处理&#xff0c;线程可以处理不同的任务。即任务挂起、线程阻塞。阻塞的特征&#xff1a;线程完全工作或干等在语句从调用开始到返回结果…...

OpenClaw多通道管理:千问3.5-9B同时服务飞书与钉钉机器人

OpenClaw多通道管理&#xff1a;千问3.5-9B同时服务飞书与钉钉机器人 1. 为什么需要多通道管理&#xff1f; 去年我接手了一个跨部门协作项目&#xff0c;团队同时使用飞书和钉钉两种沟通工具。每次需要查询数据或生成报告时&#xff0c;成员们要么在飞书群里我&#xff0c;要…...

终极指南:如何高效使用geerlingguy/dotfiles提升开发效率

终极指南&#xff1a;如何高效使用geerlingguy/dotfiles提升开发效率 【免费下载链接】dotfiles My configuration. Minimalist, but helps save a few thousand keystrokes a day. 项目地址: https://gitcode.com/gh_mirrors/dotfiles52/dotfiles 在软件开发领域&#…...