MQ
2023-12-18 23:10:26 4 举报
MQ,全称Message Queue,即消息队列。它是一种应用程序之间的通信方法,用于在分布式系统中传递数据和信息。消息队列通过将消息存储在队列中,使不同的应用程序能够异步地发送和接收消息,从而实现解耦、缓冲和流量控制等功能。 消息队列具有高度的可扩展性和可靠性,能够在高并发和大数据量的场景下保持稳定运行。它广泛应用于各种领域,如电商、金融、物流、医疗等,为企业提供了高效、灵活和可靠的信息传递解决方案。
作者其他创作
大纲/内容
consumer
注册路由信息
Topic
内核
FD(文件描述符)
CPU拷贝
queue4/partition
DMA拷贝
Kafaka集群
Queue1
queue2/partition
套接字发送缓冲区
TopicA
M3
Broker2从
Queue4
消费者
应用进程-JVM
send
M2
复制A.0
Queue3
queue1 offset 30
Broker1
Kafka 使用sendfile的零拷贝技术--减少两次cpu拷贝
broker discovery
consumer_offsets
网卡
经历四次拷贝
poll
TopicA的分区0
producer
A.0、A.1消息
M1
Broker2主
部分顺序消息
内存映射
NameServe/Zookeeper
生产者
经历两次DMA拷贝
Buffer-内存
文件读取缓冲区
TopicA的分区1
Broker1从
Broker2
全局顺序消息
RocketMQ/kafaka核心不同是 底层Topic实现机制
复制A.1
磁盘
Broker1主
内存隔离
tag
rocketMq在Broker概念分主从kafka在Broker下的Topic分主从
consumer group
queue1
queue
消息A.0
消息A.1
一个队列的消息不能同时被多个consumer消费,要保证顺序
broker
Queue2
RocketMQ/kafka
queue2
消费重复是跨越不同的消费组
queue3
首领
queue2 offset 100
RocketMQ零拷贝内存映射减少一次CPU拷贝
RocketMQ
NameServe无状态化
queue1/partition
多数业务场景考虑最终一致就可以嘞。
RocketMQ集群
queue3/partition
用户进程
清理机制(像JVM清理的是“垃圾”没用的东西)
broker discovery
复制
根据消息Key(业务场景“ID”)入队
0 条评论
下一页