kafka调优参考建议 —— 筑梦之路

这里主要是从不同使用场景来调优,仅供参考。

吞吐量优先

吞吐量优先使用场景如采集日志。

1. broker配置调优

num.partitions:分区个数,设置为与消费者的线程数基本相等

2. producer配置调优

 

  • batch.size

    批量提交消息的字节数,发送消息累计大小达到该值时才会发送(或者达到linger.ms),默认16k,如果 batch 设置太小,会导致频繁网络请求,吞吐量下降;如果 batch 太大,会导致一条消息需要等待很久才能被发送出去,增加网络延时;建议设置为1M。

  • linger.ms

    发送间隔时间,默认是 0,意思就是消息必须立即被发送。如果 linger.ms 设置的太小,会导致频繁网络请求,吞吐量下降;如果 linger.ms 太长,会导致一条消息需要等待很久才能被发送出去,增加网络延时;建议设置为100ms以上。

  • compression.type

    压缩类型,默认是 none,不压缩,但是也可以使用 lz4 压缩,效率还是不错的,压缩之后可以减小数据量,提升吞吐量,但是会加大 producer 端的 CPU 开销。

  • acks

    应答机制,默认是all(0.8.x之前,默认为1),即等待所有的副本收到消息后再返回成功,可以设置成1,即leader副本确认接收到消息后,生产者会收到返回成功的信息。但如果恰好此时leader失效,该条消息就会丢失。

  • buffer.memory

    内存缓冲区大小,默认32M,当消息写入过快或者写入量过大时,Sender 线程来不及处理,造成缓存区堆积,此时会阻塞用户线程,禁止往 kafka 写入消息,一般需要根据业务场景估算一个 buffer_memory 的合理值,建议64M以上。

 3. consumer配置调优

  • fetch.min.bytes

    从broker获取消息的最小字节数,只有大于这个值时,consumer才会拉取消息,默认是1,建议设置为1048576(1M)。

  • fetch.max.wait.ms

    当fetch.min.bytes不满足时,从broker获取消息的最大等待时间,默认是500,建议设置为1000

低延时优先

 使用场景有实时数据传输,比如弹幕

1. broker配置调优

  • num.partitions

    分区个数,设置为与消费者的线程数基本相等。

  • num.io.threads

    默认是8。负责写磁盘的线程数。整个参数值要占总核数的50%。

  • num.replica.fetchers

    默认是1。副本拉取线程数,这个参数占总核数的50%的1/3。

  • num.network.threads

    默认是3。数据传输线程数,这个参数占总核数的50%的2/3

2. producer配置调优​​​​​

  • linger.ms

    设置为0,即有消息就发送。

  • compression.type

    设置为nonenone。

  • acks

    设置为0,异步发送,无需等待任何broker确认

3. consumer配置调优

  • fetch.min.bytes

    设置为1,一有消息就消费。

  • 线程数

    消费者的并发线程数能满足实时消费的要求,避免积压

可靠性优先

 将kafka作为核心数据源,不允许kafka出现数据丢失情况的业务架构。

1. broker配置调优

  • default.replication.factor

    至少设置为3,2/3机器挂掉够,依然不影响数据的可靠性。

  • min.insync.replicas

    当生产者的ack设置为all时,必须满足该数量的副本同步成功后才能继续写入。当default.replication.factor设置为3时,该值建议设置为2。

  • unclean.leader.election.enable

    不洁leader选举,默认true,建议设置为false,即不允许不在ISR列表中的broker参加leader的选举,否则会导致已经提交但是还未复制的消息的丢失

2. producer配置调优

  • acks

    设置为all,等待ISR中的所有副本收到数据后再返回成功。

  • retries

    重试次数,建议>=3

3. consumer配置调优 

enable.auto.commit: 是否开启自动提交,默认true,在设置为true时与auto.commit.interval.ms(自动提交时间间隔)配合使用,有点是简单,省去了偏移量提交逻辑,缺点是会存在重复消费和消息丢失的情况,在数据可靠性优先的场景下需要设置为false,当事务提交后再提交位移。

可用性优先

 将kafka作为核心依赖,不允许kafka出现长时间不可用情况的业务架构(对数据可靠性要求不高,不阻塞读写就行)

1. broker配置调优

  • unclean.leader.election.enable

    设置为true,允许不洁的副本当选leader。

  • min.insync.replicas

    设置为1。

  • num.recovery.threads.per.data.dir

    启动时用于日志恢复和关闭时用于刷新的每个数据目录的线程数,默认为1,建议设置为1,减少重启时加载日志的时间。

2. producer配置调优

acks : 设置为0,不等待任何确认,直接返回成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣算法之1045. 买下所有产品的客户

力扣传送门 题解注释 Customer表中对应的customer_id对应的product_key去重后要全部存在于Product表中的product_key 我的解 SELECT customer_id FROM Customer GROUP BY customer_id HAVING COUNT(DISTINCT product_key)(SELECT COUNT(DISTINCT product_key) FROM Product…

《java数据结构》--顺序表详解

一.顺序表的概念🙉 🐱顺序表是一段物理地址连续的储存单元,一次储存数据元素的线性结构。一般情况下采用数组储存,和数组的增删查改类似。 但是顺序表和数组还是有区别的比如,数组按照是否可以扩容可以分为&#xff…

duckdb 插件机制研究

本文研究 duckdb 内置的 extensions 工作机制。 插件架构 在 duckdb 源码内,内置了一组原生插件,位于顶层 extension 目录下: 除此之外,还支持 Out-of-Tree Extension,简单说就是独立的插件,不是集成在源…

Star CCM+绘图显示设置

前言 如前文介绍,根据报告创建监视器与绘图后,在绘图中会出现报告绘图。此处可以自定义绘图的格式,如网格显示、字体大小、曲线的粗细等。同时也可以根据需要创建右坐标,分别监测不同类型的函数数值。为此方便后期输出仿真报告。…

哆啦AAA萌也能用HTML画出来?看这里!【完整代码可运行】

关注微信公众号「ClassmateJie」有完整代码以及更多惊喜等待你的发现。 简介/效果展示 你是否曾经想过&#xff0c;那些可爱的哆啦A梦角色是如何被创造出来的呢&#xff1f;今天&#xff0c;我要带你一起探索一个神奇的秘密——用HTML画出哆啦A梦&#xff01; 代码 <!DOCT…

【quarkus系列】创建quarkus第一个应用程序

文章目录 序言环境准备创建项目项目分析程序代码构建访问项目 序言 Quarkus 是一个设计用于 Kubernetes 和云原生环境的 Java 框架&#xff0c;具有快速启动时间、低内存消耗和强大的开发者体验。溪源将带您一步步创建一个简单的 Quarkus 应用程序。 环境准备 在开始之前&am…

Neo4j安装部署及python连接neo4j操作

Neo4j安装部署及python连接neo4j操作 Neo4j安装和环境配置 安装依赖库&#xff1a; sudo apt-get install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y 增加Neo4 GPG key&…

为什么并行化将会是下一代的区块链解决方案?

原文标题&#xff1a;《Parallel Execution: The Next Generation of Blockchains》撰文&#xff1a;Paul Timofeev 、Mike Jin、Gabe Tramble 编译&#xff1a;Chris&#xff0c;Techub News 区块链是虚拟机&#xff0c;一种软件基础的计算模型&#xff0c;它运行在任何人都可…

DDOS攻击和DOS攻击有什么区别?

DDOS攻击的全称为分布式拒绝服务攻击&#xff0c;能够使很多个计算机在同一时间内遭受到攻击&#xff1b;DOS攻击的全称则是拒绝服务攻击&#xff0c;是攻击者想办法让目标机器停止提供服务&#xff0c;对于DDOS攻击和DOS攻击我们经常会混淆&#xff0c;但是两者之间在性质上还…

Pytorch深度学习实践笔记10(b站刘二大人)

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;pytorch深度学习 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

C++的第一道门坎:类与对象(一)

1.面向过程与面向对象 1.1面向过程 我们之前学习的C语言就是一种面向过程的语言&#xff0c;面向过程的语言强调的是具体实现的过程&#xff0c;一般用函数来具体实现。我们用面向过程的思想&#xff0c;就可以把炒菜分为以下几个步骤: 1.2面向对象 而对于面向对象的语言而言…

【简单介绍下容器是什么?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【Spring】Spring AOP底层原理:JDK动态代理和CGLIB动态代理

目录 1、代理模式 1.1、静态代理 1.2、动态代理 2、JDK 动态代理 2.1、jdk动态代理简介 2.2、使用JDK动态代理机制步骤 3、CGLIB 动态代理 3.1、CGLIB 动态代理的特性 3.2、CGLIB的核心类 3.3、CGLIB 动态代理步骤 4、JDK 和 CGLIB 创建代理对象的区别 ​编辑 1、…

通关!游戏设计之道Day16

皆大欢喜计费点 游戏行业中有一项设计显得越来越重要&#xff0c;那就是计费点设计 是开发者琢磨出来的一系列手段&#xff0c;让玩家买了游戏之后&#xff0c;还能继续付费 对于把玩家跟他们的钱拆散&#xff0c;游戏开发者们总是乐此不疲 来看几个能让开发者额外多赚些钱…

(四)手把手教你内网穿透,实现外网主机访问内网服务器

背景&#xff1a;书接上回&#xff0c; 服务器的使用-CSDN博客 课题组成员都有自己的账号&#xff0c;且能通过内网访问服务器&#xff0c;进行远程连接了。我们知道内网中的主机可以访问公网的主机&#xff0c;反之不可以访问。那么如果课题组成员在家不在内网区域内&#x…

源码编译安装LAMP与部署

目录 一、LAMP架构的简述 1.LAMP搭建时各组件安装顺序 二、编译安装Apache httpd服务 1.关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下 2.安装环境依赖包​编辑 3.配置软件模块 4.编译及安装 5.优化配置文件路径&#xff0c;并把httpd服务的可执行程序文…

基于51单片机的智能灯光控制系统

一.硬件方案 智能灯光控制系统由单片机最小系统、人体感应模块、关照强度模块、灯光控制模块、电源模块和灯泡组成。本文以STC89C52单片机为核心&#xff0c;通过利用光照度和红外人体感应相结合主动与被动的探测方法&#xff0c;现了室内无人或者关照充足时灯光自动光灯&…

Kubernetes 容器资源管理Resources和探针Probe

资源配额 Resources 在 Kubernetes 中&#xff0c;resources 配置用于设置容器的资源请求和限制&#xff0c;以确保集群中的资源&#xff08;如 CPU 和内存&#xff09;得到合理分配和使用。 在之前的pod中&#xff0c;不写 resources 字段。就意味着 Pod 对运行的资源要求“…

Java面试八股之AQS对资源的共享方式

AQS对资源的共享方式 AQS设计了一套灵活的机制&#xff0c;不仅支持独占&#xff08;Exclusive&#xff09;锁模式&#xff0c;也支持共享&#xff08;Shared&#xff09;锁模式&#xff0c;使得资源可以被一个或者多个线程以不同的方式访问。这两种模式通过控制一个内部的vol…

技术速递|宣布 Java on Azure 开发工具支持 Azure Functions Flex Consumption

作者&#xff1a;Jialuo Gan 排版&#xff1a;Alan Wang Azure Functions Flex Consumption 刚刚在微软 Build 2024大会期间发布&#xff08;详情请参见本博客&#xff09;。我们很高兴地与大家分享&#xff0c;Azure Functions 的 IntelliJ Azure Toolkit 和 Maven 插件现在也…