Kafka、RabbitMQ、RocketMQ

传统拷贝

1.DMA拷贝磁盘内容到OS缓冲区 -> CPU拷贝OS缓冲区内容到用户应用缓冲区 -> CPU拷贝用户应用缓冲区内容到socket -> DMA拷贝socket内容到网卡
2.全程 4次用户态与内核态的切换、2次CPU拷贝、2次DMA拷贝

sendfile零拷贝

1.DMA拷贝磁盘内容到OS缓冲区 -> DMA拷贝OS缓冲区的offset和length(消耗几乎可以忽略),到socket -> DMA拷贝socket的offset、length、OS缓存区的内容到网卡
2.全程 4次用户态与内核态的切换、2次DMA拷贝,非常快(DMA拷贝一般是CUP拷贝的10倍)

mmap零拷贝

  1. DMA拷贝磁盘内容到OS缓冲区 -> 用户应用缓冲区与OS缓冲区做映射(共享) -> CPU拷贝OS缓冲区内容到socket -> DMA拷贝socket的内容到网卡
  2. 全程 4次用户态与内核态的切换、1次CPU拷贝、2次DMA拷贝

Kafka(Apache维护)

1.单机并发极限2000W,600M超高吞吐量
2.毫秒级响应,不支持事务,内置分布式集群支持,java语言编写
3.消息可以按分区顺序消费
4.sendfile零拷贝
5.适合大量据处理数据的业务

RabbitMQ(Spring官方维护)

1.单机并发万级,中等吞吐量
2.低延迟,支持分布式事务,支持集群,erlang语言编写
3.消息可以按顺序消费,可做延迟队列(死信队列+设置消息过期时间)
4.传统拷贝
5.适合高并发高可用的业务,电商物流

RocketMQ(阿里自研)

1.单机并发万级,高吞吐量
2.毫秒级响应,支持事务,内置分布式集群支持
3.消息可以按顺序消费,可做延迟队列(内置)
4.mmap零拷贝
5.适合高并发高可用的业务,电商物流

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容