RabbitMQ原理
2016-11-22 18:27:21 0 举报
RabbitMQ是一个开源的消息代理和队列服务器,用于通过轻量级消息传递协议在分布式系统中存储和转发消息。它基于AMQP(高级消息队列协议)标准,支持多种编程语言和平台。RabbitMQ的核心原理包括生产者、消费者和交换机三个主要组件。生产者负责创建消息并将其发送到交换机,消费者从队列中获取消息并处理,交换机负责根据路由规则将消息路由到相应的队列。这种模式可以实现解耦、异步处理和负载均衡等功能,广泛应用于微服务架构、日志收集、任务调度等场景。
作者其他创作
大纲/内容
获取消费者
tcp_accept进程
B队列进程
平均队列最大可持时间
队列进入休眠状态dirty_count > 65536dirty_count >当前内存可承受的脏数据条数
转成beta
journal.jif
AMQPCLient
队列堆积情况
队列
M5999
内存持续时间
M15000
Append
每50返回+50
M3
全部复制
M1
Req=1
队列进程
队列 Q1
Req=3
HTTP
M10000
..
2500ms
队列 Q1 主
Q4
索引文件
2.idx
Delete
启动
M14999
M10001
A队列进程
rabbit_reader进程
队列 Q2 主
自带限流原理
队列刷盘过程
确认
减少内存使用
写完数据或休眠前
同时写到多个队列,则在channel 等待多个队列进程写完之后,再返回给客户端
队列 Q2
Req=0
索引文件刷盘
M2
connection.blocked
定时器启动
确认机制原理
num = 0 journal_entries = ActionMap path = 0.idx unacked = 0
Q2,Q3索引落盘
节点状态
重启节点同步过程
1.idx
连接及写入消费
通道
连接
消费注册
日志写入
Channel
M9999
清空
rabbit_channel进程
SegmentMap
获取内存持续时间
节点A
客户端
SgmentMap
M10002
消息
RelSeq = 16380
Q2
统计模块
各模块上报数据给 Manager 界面统计模块
重启
Monitor进程
dirty_count = 0 segments = Sgment dir = /data/.../****
节点B
rabbit_writer进程
M6000
节点信息
Q1
num = 2 journal_entries = ActionMap path = 2.idx unacked = 3
-1
bump_credit
dirty_count = 100 segments = Sgment dir = /data/.../****
0.idx
Manager 界面统计模块
消费者队列
获取消息
Q3
Queue
返回成功投递消息
检测内存
Req=2
RelSeq = 1000
Reader
ACKNACK
RelSeq = 100
所有队列持续时间统计
0 条评论
下一页