当前位置: 首页 > news >正文

网站制作视频教程新手必看海南建设培训与执业中心网站

网站制作视频教程新手必看,海南建设培训与执业中心网站,杭州网站建设公司有哪几家,建筑工程网线接头规范Kafka 服务端的物理存储架构 Kafka 的物理存储架构设计旨在支持高吞吐、低延迟的数据处理,其核心特点包括: 1. 分区与日志段 主题(Topic)与分区(Partition): Kafka 将每个主题划分为多个分区&…

Kafka 服务端的物理存储架构

Kafka 的物理存储架构设计旨在支持高吞吐、低延迟的数据处理,其核心特点包括:

1. 分区与日志段
  • 主题(Topic)与分区(Partition)
    Kafka 将每个主题划分为多个分区,每个分区是一个有序、不可变的消息序列。

    • 分区在物理上对应一个目录,目录名为 <topic>-<partition>(如 orders-0)。
    • 分区支持水平扩展,不同分区的数据可分布在不同的 Broker 上。
  • 日志段(Log Segment)
    每个分区的数据被拆分为多个固定大小的日志段文件(默认 1GB),追加写入。

    • 数据文件(.log):存储实际消息,文件名基于当前日志段的第一条消息的偏移量(如 00000000000000000000.log)。
    • 索引文件(.index 和 .timeindex)
      • .index:消息偏移量到物理位置的映射(支持按偏移量快速定位)。
      • .timeindex:时间戳到偏移量的映射(支持按时间范围查询)。
2. 存储优化机制
  • 顺序写入:消息仅追加到当前活跃日志段末尾,充分利用磁盘顺序 IO 性能(远高于随机 IO)。
  • 分段滚动(Segment Rolling)
    当日志段达到阈值(大小或时间)时,关闭当前段并创建新段,旧段可被异步删除或压缩。
  • 稀疏索引:索引文件仅记录部分消息的偏移量,通过二分查找快速定位目标消息范围,减少内存占用。

零拷贝、mmap、sendfile、DMA gather 详解

1. 零拷贝(Zero-Copy)
  • 传统数据拷贝流程(以读取文件并发送到网络为例):

    1. 磁盘 → 内核缓冲区(DMA 拷贝)
    2. 内核缓冲区 → 用户缓冲区(CPU 拷贝)
    3. 用户缓冲区 → 内核网络缓冲区(CPU 拷贝)
    4. 内核网络缓冲区 → 网卡(DMA 拷贝)
      问题:多次数据拷贝和上下文切换,CPU 开销大。
  • 零拷贝优化

    • 目标:消除冗余的数据拷贝和 CPU 参与。
    • 实现技术
      • sendfile(Linux 系统调用):直接在内核空间完成文件数据到网络的传输,无需用户缓冲区。
      • mmap(内存映射文件):将文件映射到用户空间内存,减少用户态与内核态的数据拷贝。
      • DMA gather:支持从多个非连续内存区域直接传输数据到设备(如网卡),避免合并缓冲区的开销。
2. mmap(Memory-Mapped Files)
  • 原理
    将磁盘文件映射到进程的虚拟内存地址空间,进程通过指针直接读写内存,操作系统负责将修改同步到磁盘。
  • 在 Kafka 中的应用
    • 生产者写入:通过 mmap 将日志文件映射到内存,消息直接追加到内存映射区域,由操作系统异步刷盘。
    • 消费者读取:快速访问已映射的文件数据,减少 read 系统调用次数。
  • 优点:减少用户态与内核态的上下文切换,提升 IO 效率。
3. sendfile
  • 原理
    Linux 提供的系统调用,用于将文件内容直接从文件描述符传输到 Socket 描述符,全程在内核态完成。
    #include <sys/sendfile.h>
    ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
    
  • 在 Kafka 中的应用
    • 消费者拉取消息:Broker 使用 sendfile 将日志文件数据直接发送到网络,无需经过用户缓冲区。
    • 优势:消除两次 CPU 拷贝(内核缓冲区 ↔ 用户缓冲区 ↔ Socket 缓冲区)。
4. DMA gather(Scatter-Gather DMA)
  • 原理
    • Scatter(分散):从多个非连续内存区域读取数据并传输到设备(如网卡)。
    • Gather(聚集):从设备读取数据并写入多个非连续内存区域。
    • 作用:避免 CPU 将分散的数据块合并到连续缓冲区,减少拷贝开销。
  • 在 Kafka 中的应用
    结合 sendfile,DMA 控制器可以直接从多个日志段文件的分散内存区域(通过 mmap 映射)收集数据并发送到网络。

Kafka 高性能传输流程示例

以消费者从 Kafka Broker 拉取消息为例,零拷贝技术的协作流程如下:

  1. 消费者请求数据:指定 Topic-Partition 和偏移量。
  2. Broker 定位数据
    • 通过 .index 文件找到目标消息所在的日志段和物理位置。
  3. 数据读取与发送
    • mmap:日志段文件已映射到内存,直接通过内存地址访问数据。
    • sendfile + DMA gather
      • sendfile 系统调用触发 DMA 控制器从内存映射区域(可能多个不连续块)读取数据。
      • DMA 控制器将数据直接传输到网卡缓冲区,全程无需 CPU 参与数据拷贝。

对比传统 IO 与零拷贝

步骤传统 IO零拷贝(sendfile + mmap)
磁盘到内核缓冲区DMA 拷贝DMA 拷贝
内核到用户缓冲区CPU 拷贝无需
用户到网络缓冲区CPU 拷贝无需
网络缓冲区到网卡DMA 拷贝DMA 拷贝
总拷贝次数4 次(2 次 DMA,2 次 CPU)2 次(仅 DMA)
上下文切换4 次(read/write 系统调用)2 次(sendfile 系统调用)

🐶

技术核心作用在 Kafka 中的应用场景
零拷贝消除冗余数据拷贝,降低 CPU 开销消费者拉取消息、日志同步
mmap文件映射到内存,减少系统调用生产者写入日志、消费者读取数据
sendfile内核态直接传输文件到网络Broker 向消费者发送消息
DMA gather支持非连续内存区域直接传输结合 sendfile 提升网络发送效率

Kafka 通过物理存储架构的优化(分区、日志段、稀疏索引)与零拷贝技术(mmap、sendfile、DMA gather)的结合,实现了高吞吐、低延迟的数据处理能力。理解这些机制有助于优化 Kafka 集群的配置与调优(如调整日志段大小、合理使用压缩)。
在这里插入图片描述

http://www.dtcms.com/a/467150.html

相关文章:

  • 购物优惠券网站怎么做深圳网域官网
  • 温州建设银行官方网站西部数码网站管理助手v3.0
  • EHOME视频平台EasyCVR构建全协议、全场景融合的视频监控中枢
  • [数据结构]堆
  • 网站开发应聘问题我想找工作没学历
  • 网站建设指导人员优化方案
  • 基于单片机的±5V数字电压表设计
  • 海口网站建设好做网络推广网站有哪些
  • 天马G前端(TODO)
  • 建立自己网站免费贵州省建设厅网站造价工程信息网
  • 一个新的网站怎么做SEO优化云南高风险地区名单最新
  • 菏泽财富中心网站建设网站建设 完成
  • 软考-系统架构设计师 软件架构复用详细讲解
  • 3.3 可靠数据传输的原理
  • 软考-系统架构设计师 特定领域软件体系结构详细讲解
  • 网站需要备案才能建设吗风云办公ppt模板网站
  • 计量基础知识(计量管理员)
  • 从 0 到 1,用 Chainlit 打造「多文件知识库对话」Web 应用
  • 深圳网站建设网站制作网站推广资阳自贡网站建设平台
  • 个人网站建立步骤网店美工设计
  • wordpress 全站pjax263企业邮箱管理员登录入口
  • 17-查看单片机的栈地址使用情况
  • 军事网站大全军事网做网站去哪里找
  • python学习之文件的基础操作
  • 为什么需要延迟双删,两次删除的原因是什么?
  • 深圳电商网络网站建设wordpress 备案号插件
  • 局网站建设管理制度财务软件免费
  • 怎么看网站是dede模板心理网站 模版
  • 如何制作响应式网站网站建设费应开具互联网信息服务吗
  • 企业级BPM低代码平台JMEEV深度解析