kafka

kafka

简介

kafka是一个吞吐的分布式消息系统

消息队列

  • 生产者负责生产数据

  • 消费者负责消费数据

应用场景
  • 系统之间解耦合

    • queue模型

    • publish-subscribe模型

  • 峰值压力缓冲

  • 异步通信

Kafka与其他消息队列对比

  • RabbitMQ: 分布式,支持多种MQ协议,重量级

  • ActiveMQ: 与RabbitMQ类似

  • ZenoMQ:以库的形式提供,使用复杂,无持久化

  • Redis: 单机、纯内存,性能好,持久化差

  • Restrel: 单机、特久化

  • Kafka:分布式,较长时间特久化,高性能,轻量灵活

Kafka特点

  • 消息系统的特点:生存者消费者模型,FIFO

  • 高性能:单节点支持上千个客户端,百MB/s吞吐

  • 持久性:消息直接持久化在普通磁盘上且性能好

  • 分布式:数据副本冗余、流量负载均衡、可扩展

  • 很灵活:消息长时间持久化+Client维护消费状态

Kafka性能好的原因

  • kafka写磁盘是顺序的,所以不断的往前产生,不断的往后写

  • kafka还用了sendFile的0拷贝技术,提高速度

  • 而且还用到了批量读写,一批批往里写,64K为单位

非零拷贝

从WIKI的定义中,我们看到“零拷贝”是指计算机操作的过程中,CPU不需要为数据在内存之间的拷贝消耗资源。而它通常是指计算机在网络上发送文件时,不需要将文件内容拷贝到用户空间(User Space)而直接在内核空间(Kernel Space)中传输到网络的方式。

零拷贝

从图中可以清楚的看到,Zero Copy的模式中,避免了数据在用户空间和内存空间之间的拷贝,从而提高了系统的整体性能。Linux中的sendfile()以及Java NIO中的FileChannel.transferTo()方法都实现了零拷贝的功能,而在Netty中也通过在FileRegion中包装了NIO的FileChannel.transferTo()方法实现了零拷贝

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值