zoukankan      html  css  js  c++  java
  • kafka: 性能优化

    1. 生产者

    1. compression.type

    生产者设置的消息压缩格式,可配置的值有none, gzip, lz4, snappy
    通过该参数可以提高生产者吞吐量

    2. batch.size

    当要往同一个分区发送多条数据时,将多个消息打包在一起发送,减少请求交互
    该参数要根据实际情况进行合理配置;如果设置过大,则可能需要等待较长的时间才能凑够足够大的数据,导致数据的延迟较大

    3. buffer.memory

    生产者用来缓存等待发送到服务器的消息的内存总字节数。
    如果设置的缓冲区不够,当生产消息的速度大于消息发送的速度,缓冲区被写满之后,导致用户线程阻塞;
    生产者阻塞超过max.block.ms时间后,抛出异常;
    根据当前业务生产消息的能力和客户端发送消息的能力,合理配置

    4. linger.ms

    发送消息的最大延迟时间;
    设置为0表示无延迟,直接发送;
    大于0时,如果消息数据小于batch.size,则继续等待,当数据超过batch.size或者等待时间超过linger.ms,则直接发送数据

    2. broker

    1. 消息解压缩

    一般情况下,produce压缩消息,broker保存消息,consumer解压缩消息,broker只是保持消息,不会解压缩处理消息;
    如果broker需要解压缩消息,会导致broker压力变大,并失去零拷贝特性;
    broker解压缩消息的场景有两种:
    生产者和broker配置的压缩算法不一样,broker需要解压缩后重新压缩;
    集群保存了不同版本格式的消息,为了兼容老版本,将消息格式转为老版本;

    2. 增量线程数

    num.network.threads: 网络线程数,将接收到的请求添加到队列
    num.io.threads: IO线程数,真正处理请求的线程
    根据硬件资源,调整IO线程数可控制broker的处理能力

    3. consumer

    1. partition

    增加topic的分区数,将topic的数据尽量均匀的落盘到不同的分区;避免将topic的数据都落盘到一个节点,这个节点的IO能力将会成为消费者消费的瓶颈;

    2. consumer number

    将消费者的数量调整到和分区数一样,一个消费消费一个分区的数据,提高消费能力

    如果文章对您有所帮助,可以点一下推荐哦
  • 相关阅读:
    Map
    Set
    集合&List
    wepy的创建与运行
    vue post请求设置为FormData传参
    数据缓存sessionStorage、localStorage、cookie、session间的区别与联系
    vue中后退不刷新页面(使用keepAlive方法)
    vue点击按钮会刷新页面
    el-date-picker日期选择器 ——[Vue warn]: Error in render: "TypeError: date.getFullYear is not a function" found in
    element-ui 中表格嵌套表单(一) 如何给table表头添加必填*星号
  • 原文地址:https://www.cnblogs.com/virgosnail/p/14838706.html
Copyright © 2011-2022 走看看