主页 > 新闻资讯 > 大数据培训:kafka高吞吐机制讲解

大数据培训:kafka高吞吐机制讲解

作者:张老师 浏览次数: 2021-07-28 17:19
Kafka作为分布式消息系统,在实时消息队列场景下,性能还是值得肯定的。Kafka内部的高可用模式和高吞吐机制,对于确保系统性能和数据处理效率,是紧密相关的。今天的大数据培训分享,我们就主要来讲讲kafka高吞吐机制。

大数据培训:kafka高吞吐机制讲解

1、零拷贝——Page Cache结合sendfile方法,Kafka消费端的性能也大幅提升

当Kafka客户端从服务器读取数据时,如果不使用零拷贝技术,那么大致需要经历这样的一个过程:

①操作系统将数据从磁盘上读入到内核空间的读缓冲区中。

②应用程序(也就是Kafka)从内核空间的读缓冲区将数据拷贝到用户空间的缓冲区中。

③应用程序将数据从用户空间的缓冲区再写回到内核空间的socket缓冲区中。

④操作系统将socket缓冲区中的数据拷贝到NIC缓冲区中,然后通过网络发送给客户端。

大数据培训:kafka高吞吐机制讲解

非零拷贝

从图中可以看到,数据在内核空间和用户空间之间穿梭了两次,那么能否避免这个多余的过程呢?当然可以,Kafka使用了零拷贝技术,也就是直接将数据从内核空间的读缓冲区直接拷贝到内核空间的socket缓冲区,然后再写入到NIC缓冲区,避免了在内核空间和用户空间之间穿梭。

大数据培训:kafka高吞吐机制讲解

零拷贝

可见,这里的零拷贝并非指一次拷贝都没有,而是避免了在内核空间和用户空间之间的拷贝。如果真是一次拷贝都没有,那么数据发给客户端就没了不是?不过,光是省下了这一步就可以带来性能上的极大提升。

2、分区分段+索引

Kafka的message是按topic分类存储的,topic中的数据又是按照一个一个的partition即分区存储到不同broker节点。每个partition对应了操作系统上的一个文件夹,partition实际上又是按照segment分段存储的,通过这种分区分段的设计,Kafka的message消息实际上是分布式存储在一个一个小的segment中的,每次文件操作也是直接操作的segment。

为了进一步的查询优化,Kafka又默认为分段后的数据文件建立了索引文件,就是文件系统上的.index文件。这种分区分段+索引的设计,不仅提升了数据读取的效率,同时也提高了数据操作的并行操作的能力

3、批量发送

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

等消息条数到固定条数;

一段时间发送一次。

4、数据压缩

Kafka还支持对消息集合进行压缩,Producer可以通过GZIP或Snappy格式对消息集合进行压缩压缩的好处就是减少传输的数据量,减轻对网络传输的压力。

关于大数据培训,kafka高吞吐机制,以上就为大家做了简单的讲解了。Kafka的高吞吐机制,是框架内部运行机制的重要一环,可以结合到具体的源码去多理解和掌握。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,零基础班本月正在招生中,课程大纲及试学视频,可联系客服获取!
热点排行
推荐文章
立即申请>>