Kafka为啥这么快?

编程探索课程 2024-03-03 06:00:43
1、Kafka 简介

logo of Kafka

Kafka 是一种分布式流处理平台和消息队列系统,最初由 LinkedIn 公司开发。它设计用于高吞吐量、低延迟的数据传输,以处理实时数据流。

消息队列 逻辑视图

Kafka 的一些重要概念和特点包含如下:

kafka 基础概念

消息传递:Kafka 是一个消息队列系统,它允许生产者将消息发送到一个或多个主题(topics),而消费者可以从这些主题订阅并接收消息。

分布式架构:Kafka 是基于分布式架构设计的,可以通过水平扩展和分区来满足高吞吐量的需求。每个主题可以由多个分区组成,每个分区可以在不同的机器或节点上进行复制和处理。

持久化存储:Kafka 将消息持久化存储在磁盘中,并按照一定的保留策略保留一段时间。这意味着消费者可以随时消费最新或旧的消息,而不会丢失数据。

可靠性和容错性:Kafka 提供了副本机制,可以在多个节点上复制分区数据,以实现容错性和高可用性。当某个节点出现故障时,Kafka 仍能保证消息的可靠传递。

流处理:Kafka 通过流处理的概念支持实时数据处理。它可以将消息流通过流处理器进行转换、过滤和聚合,以满足数据处理和分析的需求。

2、Kafka 为啥这么快

Kafka之所以快速,可以归因于以下几个关键原因:

2.1 利用Partition实现并行处理

Kafka是一个Pub-Sub的消息系统,无论是发布还是订阅,都要指定Topic。每个Topic都包含一个或多个Partition,不同Partition可位于不同节点。由于不同Partition可位于不同机器,因此可以充分利用集群优势,实现机器间的并行处理。另外,Partition在物理上对应一个文件夹,即使多个Partition位于同一个节点,也可通过配置让同一节点上的不同Partition置于不同的磁盘上,从而实现磁盘间的并行处理,充分发挥多磁盘的优势。这种并行处理能力可以显著提高Kafka的速度。

2.2 顺序写入和MMFile

Kafka的消息是保存或缓存在磁盘上的,并且它绝对不会丢失数据。为了优化写入速度,Kafka采用了顺序写入和MMFile。在顺序读写的情况下,磁盘的顺序读写速度和内存持平。因为硬盘是机械结构,每次读写都会寻址->写入,其中寻址是一个“机械动作”,它是最耗时的。所以硬盘最讨厌随机I/O,最喜欢顺序I/O。为了提高读写硬盘的速度,Kafka就是使用顺序I/O。

2.3 零拷贝技术

Kafka使用了零拷贝技术来提高数据传输的效率。在传统的数据传输中,数据需要从用户态拷贝到内核态,然后再从内核态拷贝到用户态。而在Kafka中,数据可以直接从内核态传输到另一个进程的内核态,避免了不必要的数据拷贝,从而提高了传输效率。

2.4 批量压缩技术

Kafka还支持批量压缩技术,可以将多个小的消息压缩成一个大的消息进行传输。这样可以减少网络传输的开销,提高整体的传输效率。

kafka 压缩算法举例

2.5 高效的序列化和反序列化

Kafka使用了高效的序列化和反序列化技术来减少数据的处理时间。Kafka的消息是以字节流的形式进行传输的,因此需要进行序列化和反序列化。Kafka使用了高效的序列化和反序列化库来减少这部分的开销。

何为序列化?

2.6 优化的网络通信

Kafka对网络通信进行了优化,使用了高效的网络通信库和协议来减少网络传输的开销。此外,Kafka还支持多种压缩算法,可以根据不同的场景选择最合适的压缩算法来减少网络传输的数据量。

网络通信

综上所述,Kafka之所以快速是因为它充分利用了集群优势、并行处理能力、顺序写入、零拷贝技术、批量压缩技术、高效的序列化和反序列化以及优化的网络通信等多种技术手段来提高整体的性能和效率。

0 阅读:1

编程探索课程

简介:感谢大家的关注