秋招
文章发布时间:
最后更新时间:
最后更新时间:
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 拷贝仍然存在。