秋招

文章发布时间:

最后更新时间:

kafka #中间件 #消息队列

  • kafka 的消费者通过 subscribe() 订阅 Topic,并根据 group.id 加入消费者组,由组协调机制自动分配分区(rebalance 重平衡)。消费者:分区 = 1:n。消费者数大于分区数,多余消费者空闲。
  • 消费者采用主动拉取模式,在后台批量拉取消息并存入本地缓冲区,poll(1.0) 每次最多返回一条消息,最多等待 1 秒。(批量)commit 提交消息,每次 commit 都会向 Kafka 请求保存 offset 。流程:拿到消息 → 处理失败 → 等待 → 重试同一条 → 成功后推进提交进度。
  • 消费者组:多个消费者形成一个组,每个消费者负责多个互斥的分区。组内分担消息,组间独立消费。
  • 每个 Partition 本质上就是一个有序日志文件。有多个副本。

零拷贝 #操作系统

传统(4 次拷贝):
磁盘 → 内核缓冲区 → 用户缓冲区 → Socket 缓冲区 → 网卡

零拷贝(支持 DMA 聚集传输的 sendfile,2 次拷贝):
磁盘 → 内核缓冲区 → 网卡

“零”指的是 CPU 不搬运数据,DMA 拷贝仍然存在。