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. 同时分区增加了并行处理能力/

  • 相关阅读:
    使用net start mysql的时候出现服务名无效的原因及解决办法
    Appium的安装
    cpu
    单例模式
    Java中Synchronized的用法(简单介绍)
    java随机数Reandom(简单介绍)
    多线程面试题
    线程和进程有什么区别(简单介绍)
    java多线程(简单介绍)
    servlet三种方式实现servlet接口
  • 原文地址:https://www.cnblogs.com/sabertobih/p/14100407.html
Copyright © 2011-2022 走看看