rocketMQ与kafka的消息发送流程
2024-09-26 19:59:32 2 举报
rocketMQ与kafka的消息发送流程
作者其他创作
大纲/内容
rocketMQ的消息发送
数据从内核缓冲区拷贝到网卡
内核缓冲区
数据从内核缓冲区拷贝到用户态缓冲区
消费者
数据从用户态缓冲区拷贝到socket缓冲区
应用程序
DMA
操作系统
网络发送
mmap()
程序发起系统调用mmap()
硬件
内核态
read()
网卡
合计:2次系统调用,4次拷贝;read调用、read返回,write调用,write返回,对应4次用户空间与内核空间的切换
用户缓冲区
合计:1次系统调用,2次拷贝sendfile()调用与返回,对应2次用户空间与内核空间的切换
socket缓冲区
write()
程序发起系统调用read()
数据从内核缓冲区拷贝到socket缓冲区
用户态
磁盘
数据从磁盘拷贝到内核缓冲区
kafka的消息发送
映射
普通的消息发送
程序发起系统调用write()
程序发起系统调用sendfile()
mmap()将内核空间的缓冲区映射到用户空间
数据从socket缓冲区拷贝到网卡
sendfile()
合计:2次系统调用,3次拷贝同样 4次用户空间与内核空间的切换
0 条评论
下一页