高并发场景下,Kafka如何扛住百万级请求?

开发 架构
Kafka 通过分布式架构、分区机制、以及集群管理,实现了高并发性能。Kafka 架构,由多个 Broker(服务器节点)组成,每个 Broker 负责存储、和管理部分消息。

Kafka是大型架构的必备中间件,也是大厂必备技能,下面我就重点详解高并发场景下,Kafka实现高并发的关键技术@mikechen

Kafka架构设计

Kafka 通过分布式架构、分区机制、以及集群管理,实现了高并发性能。

Kafka 架构,由多个 Broker(服务器节点)组成,每个 Broker 负责存储、和管理部分消息。

整体架构,如下图所示:

图片图片

其中,Topic 分区(Partitioning) 是 Kafka 分布式设计的核心,它将消息分散存储在不同节点上。

Kafka 支持水平扩展,可以通过增加 Broker 节点,来提升系统的容量和性能。

新增的 Broker 会自动参、与分区的存储和管理,分担原有节点的压力。

例如:一个拥有 10 个分区的主题,理论上可以支持 10 倍于单分区主题的并发读写操作。

所以,分区使得 Kafka 天然支持并行处理,大大提升了系统的并发能力。

Kafka高并发关键技术

Kafka 之所以能够实现高吞吐量、和低延迟的消息处理,其核心设计还有是磁盘顺序写(Sequential Disk Writes)。

图片图片

磁盘顺序写:指的是在磁盘上按照顺序依次写入数据,而不是随机地在不同位置写入。

传统的机械硬盘由盘片、磁头臂、磁头等部件组成,数据存储在盘片的不同磁道和扇区上。

当进行随机写操作时,磁头需要频繁地移动到不同的位置,这个过程涉及寻道和旋转延迟,会极大地影响写入性能。

而顺序写时,磁头可以沿着一个方向连续地写入数据,减少了寻道和旋转延迟,从而提高了写入效率。

Kafka正是利用了这一点,极大的提升了数据写入性能。

├── 00000000000000000000.log  // 活跃的日志段(顺序写入)
├── 00000000000000000000.index

Kafka 通过将消息,顺序追加(Append)到日志文件末尾,充分利用了这一特性,从而,避免了随机寻址的开销。

零拷贝

零拷贝(Zero-Copy)是一种计算机技术,其核心目标是减少、或消除数据,在传输过程中的拷贝。

在传统的数据传输过程中,数据通常需要在用户空间(User Space)、和内核空间(Kernel Space)之间多次拷贝。

如下图所示:

图片图片

首先,数据从磁盘读取到内核空间的缓冲区。

其次,内核空间的缓冲区,将数据复制到用户空间的缓冲区。

然后,用户空间的缓冲区,再将数据写入到网络接口、或其他输出设备。

这种多步复制,会消耗大量 CPU 资源,并增加延迟。

而零拷贝技术,通过优化数据传输路径,减少数据在用户空间和内核空间之间的多次拷贝,

比如:通过Linux的mmap() 系统调用,可以将文件或设备的内存空间,映射到用户空间的地址空间。

然后,应用程序可以像访问内存一样直接访问文件内容;

接着,使用 write() 系统调用将数据从用户空间的缓冲区发送到网络套接字。

在这个过程中,避免了从内核缓冲区、到用户空间缓冲区、再到内核套接字缓冲区的两次拷贝。

所以,减少了数据在不同存储区域之间的移动次数,提高了数据传输的吞吐量,也提升了并发性能。

责任编辑:武晓燕 来源: mikechen的互联网架构
相关推荐

2025-01-12 13:06:45

2021-03-31 10:12:12

MongoDBQPS存储

2019-02-12 09:34:00

微博短视频架构

2022-08-04 20:41:42

高并发流量SQL

2009-03-12 09:44:05

高并发开源数据库MySQL

2017-01-09 16:06:19

2021-01-13 05:27:02

服务器性能高并发

2024-11-08 13:36:09

2023-04-26 07:40:34

MySQL索引类型存储

2011-08-23 17:12:22

MySQL支撑百万级流

2020-03-26 08:07:28

红包架构请求

2019-03-06 09:36:12

Kafka缓存磁盘

2020-10-15 06:26:24

高并发场景冰河

2023-04-18 15:22:04

2018-07-27 10:56:10

2017-03-20 16:13:31

微信红包高并发红包系统

2019-12-31 10:33:57

Netty高性能内存

2024-11-27 00:20:32

2019-11-12 09:32:35

高并发流量协议

2024-10-08 10:10:00

削峰高并发流量
点赞
收藏

51CTO技术栈公众号