为什么 Kafka 速度快

一、Kafka 特点

     1. 高吞吐、低延迟

          kafka 每秒处理几十万条消息,延迟最低只有几毫秒,每个topic 可分多个 partition , consumer group 对 partition 进行 consume 操作。

    2. 可扩展性

         kafka集群支持热扩展

    3. 持久性、可靠性

        消息被持久化到本地的磁盘,并且支持数据的备份,防止数据丢失

    4. 容错性

         允许集群中节点失败(如果副本数量为 n, 允许 n-1 个节点失败)

    5. 高并发

        支持数千个客户端同时读写

二、Kafka 速度快,有以下几个原因

    1. 数据保存在文件中,而不是在数据库中,并且在尾部插入

        优点:文件尾部,顺序插入,避免了竞争资源,实现了写数据的高效性能

    2. 放弃JVM,采用Page Cache

         为了优化读写性能,Kafka利用了操作系统本身的Page Cache,就是利用操作系统自身的内存而不是JVM空间内存。这样做的好处有:

         2.1 避免 Object 消耗:如果是用 Java 堆,Java对象的内存消耗相对较大,通常是所存储数据的两倍甚至更多。

         2.2 避免 JVM 的 GC 问题:随着JVM中数据不断增多,垃圾回收将会变得复杂与缓慢,使用系统缓存就不会存在垃圾回收的问题

    3. 批量发送数据

        优点:一次发送大量数据,避免网络多次连接和握手等待

    4. 零拷贝技术(zero-copy)

        Kafka为了避免中间发生应用程序执行与操作系统执行的上下文切换。这种方式来读取数据比较消耗性能。

         Kafka 让操作系统 Cache 中的数据发送到网卡后,传出给下游的消费者,中间跳过了两次拷贝数据的步骤,Socket 缓存中仅会拷贝一个描述符过去,不会拷贝数据到 Socket 缓存。

        Kafka 的生产和消费两个过程都使用了零拷贝

        4.1 网络数据持久化到磁盘,即Producer 到 Broker,使用了mmap。

        4.2 磁盘文件通过网络发送,即Broker 到 Consumer,使用了DMA。       

   

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值