Kafka为什么这么高效?

Kafka高效的秘诀在于使用Linux文件系统Cache缓存数据,采用Zero-Copy提高发送性能,以及Topic-Partition结构和分布式设计。每个Partition包含多个Segment,消息通过Offset定位。Kafka的Broker、Producer和Consumer实现分布式,利用Zookeeper进行负载均衡。消费者可以自由控制偏移量,实现独立消费。Segment的稀疏索引减少存储空间,但查找时耗时稍长。
摘要由CSDN通过智能技术生成

Kafka为什么这么高效?

整个架构中包括三个角色。

  • 生产者(Producer):消息和数据生产者
  • 代理(Broker):缓存代理,Kafka的核心功能
  • 消费者(Consumer):消息和数据消费者

整体架构很简单,Kafka给Producer和Consumer提供注册的接口,数据从Producer发送到Broker,Broker承担一个中间缓存和分发的作用,负责分发注册到系统中的Consumer。

设计要点

  Kafka非常高效,下面介绍Kafka高效的原因,对理解Kafka非常用帮助。

  1. 直接使用Linux文件系统的Cache来高效缓存数据
  2. 采用Linux Zero-Copy提高发送性能。传统的数据发送需要发送4次上下切换,采用Sendfile系统调用之后,数据直接在内核态交换,系统上下文切换减少为2次。可以提高60%的数据发送性能。

Kafka以Topic来进行消费管理,每个Topic包含多个Part(ition),每个Part对应一个逻辑Log,由多个Segment组成。每个Segment中存储多条消息,消息ID由逻辑位置决定,即从消息ID可直接定位到消息的存储位置,避免ID到位置的额外映射。每个Part在内存中对应一个Index,记录每个Segment中的第一个消息偏移。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值