码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Kafka调优策略


    一、提升吞吐量(消息积压问题)

    提升生产吞吐量:

    • buffer.memory:发送消息的缓冲区大小,默认值是 32m,可以增加到 64m。
    • batch.size:默认是16k。如果 batch 设置太小,会导致频繁网络请求,吞吐量下降;如果 batch 太大,会导致一条消息需要等待很久才能被发送出去,增加网络延时。
    • linger.ms,这个值默认是0,意思就是消息必须立即被发送。一般设置一个 5-100毫秒。如果 linger.ms 设置的太小,会导致频繁网络请求,吞吐量下降;如果 linger.ms 太长,会导致一条消息需要等待很久才能被发送出去,增加网络延时。
    • compression.type:默认是 none,不压缩,但是也可以使用 lz4 压缩,效率还是不错的,压缩之后可以减小数据量,提升吞吐量,但是会加大 producer 端的 CPU 开销。

    提升消费吞吐量:

    • kafka消费能力不足:同时提升分区数量和消费者组的消费者数量(两者缺一不可),保持 消费者数 = 分区数量
    • 下游消息处理不及时:如果没有充分利用下游消费者的处理能力,可以提高每批次拉取的消息数量,如默认一次拉取500条可以修改为1000条;也可以一次多拉一点,调整 fetch.max.bytes 大小,默认是 50m

    二、提升消息可靠性

    确保生产者生产的消息被接收:
    • acks 设置为-1 (acks=-1)
    • 幂等性(enable.idempotence = true) + 事务

    确保broker中的数据高可用:
    • 区副本大于等于 2 (–replication-factor 2)
    • ISR 里应答的最小副本数量大于等于 2(min.insync.replicas = 2)

    确保消费者正确的消费消息:
    • 事务 + 手动提交offset(enable.auto.commit = false)。
    • 消费者输出的目的地必须支持事务(MySQL、Kafka)。

    三、合理设置分区数

    1. 创建一个只有1个分区的 topic。
    2. 测试这个topic的producer吞吐量和 consumer 吞吐量。
    3. 假设他们的值分别是 Tp 和 Tc,单位可以是 MB/s。
    4. 然后假设总的目标吞吐量是 Tt,那么分区数 = Tt / min(Tp,Tc)。

    例如:producer 吞吐量 = 20m/s;consumer 吞吐量 = 50m/s,期望吞吐量 100m/s;
    分区数 = 100 / 20 = 5 分区
    分区数一般设置为:3-10 个
    分区数不是越多越好,也不是越少越好,需要搭建完集群,进行压测,再灵活调整分区个数。

    参考文献:https://zhuanlan.zhihu.com/p/371361083
    https://blog.csdn.net/wanger61?spm=1000.2115.3001.5343

  • 相关阅读:
    uvm白皮书练习_ch2_ch231_加入transaction
    luajit开发文档wiki中文版(二) LuaJIT 扩展
    数学建模——最大流问题(配合例子说明)
    基于JAVA医院病历管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    Java技术栈 —— 模版引擎 Freemarker or Thymeleaf?
    使用 gpg 对Linux下的文件加密
    Linux mdeltree命令教程:详解删除MS-DOS文件系统中的目录及其包含的所有文件和子目录的命令(附实例详解和注意事项)
    【JVM】运行时数据区之 堆——自问自答
    【RTAB-Map】
    日常思考-多个用户做出同样的请求,该请求在代码中调用同一个方法,那么请问服务器是怎么处理的?
  • 原文地址:https://blog.csdn.net/wanger61/article/details/126460822
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号