zoukankan      html  css  js  c++  java
  • Kafka 之 如何高吞吐和低延迟

    1.顺序读写

    kafka 顺序读写快 & hbase 随机读写快
    >>> kafka消息不断追加,可以充分利用磁盘的顺序读写性能
          不需要硬盘磁头的寻道时间,只需要很少的扇区旋转时间,速度远快于随机

    >>> hbase因为先找缓存,和HDFS比快

    2.零拷贝

    见:https://segmentfault.com/a/1190000023778797

    在Linux kernel2.2后出现了一种叫做“零拷贝”的系统调用机制,就是跳过“用户缓冲区”的拷贝,建立一个磁盘空间和内存的直接映射,数据不再复制到“用户态缓冲区”

    kfk调用的是FileChannel.transferTo,底层是sendFile

     

    3.批量发送

    kfk允许进行批量发送消息,producer发送消息的时候,可以将消息缓存本地,等到了固定条件发送到kfk

    1. 等消息条数到固定条数
    2. 一段时间发送一次

    4.数据压缩 

    kfk还支持对消息集合进行压缩,Producer可以通过GZIP或Snappy格式对消息集合进行压缩
    压缩的好处就是:减少传输的数据量,减轻对网络传输的压力
    >>>  批量发送 和 数据压缩 一起使用,单条做数据压缩的话,效果不明显

    5.分区

    kafka的topic被分成了多个partition,每个partition分成多个segment,所以一个队列中的消息实际上是保存在N多个片段文件中。

    1. 通过分段的方式,每次文件操作都是对一个小文件的操作,轻便。

    2. 同时分区增加了并行处理能力/

  • 相关阅读:
    jq绑定on事件无效
    数字以0补全
    redis常用操作
    mysql数据操作日常
    centos端口映射
    centos7防火墙操作
    mysql5.7order by问题
    centos无法上网解决方法
    面试题
    ztree 获取子节点所有父节点的name的拼接
  • 原文地址:https://www.cnblogs.com/sabertobih/p/14100407.html
Copyright © 2011-2022 走看看