RocketMQ 架构设计剖析

什么是消息队列

        在消息的传输过程中保存消息的容器,生产者和消费者不直接通讯,在依靠队列保证消息的可靠性,避免了系统间的相互影响

应用场景

        异步调用、业务解耦、削峰填谷

整体流程

1、Broker:代理服务器,消息中转,存储消息,可以理解为一个机器,里面存消息主体,转发消息等

2、producer:发的消息有不同的类型消息,一类消息的集合叫topic主题

一个broker可以存储多种topic

3、topic中存的具体消息,消息内容不同,是用队列存储的queue

4、协调者nameServer:可以理解为消息的一个大脑,都有哪些topic,哪些消费者等等,producer怎么知道往哪个topic存消息,consumer怎么去拿,都通过NameServer路由功能得到的,相当于dubbo中的zookeeper,每条消息的主题只有一个

整体结构

 思考:NameServer集群直接是没有连线的 那怎么保证数据一致性呢?

1、broker在上传注册信息时,每个nameServer都注册上传一份即可

2、生产者、消费者去NameServer取信息时,也是再任意一台获取都可以,因为数据都是一样的

3、producer连线只连Broker的master,concumer连线即有master,也有slave,每个都连

4、producer和consumer连接nameServer都是长连接

心跳包:ip信息,端口信息,存储的topic信息等

存储结构

刷盘机制

 发送消息方式

消费方式

消费模式延时消息

        消息用延迟的消息api发送到commitLog中,判断出来是延时消失,就会对你的消息重新命名topic,前面加schedule-前缀,然后根据延迟的级别不同,放入不同的队列中,一共有18个延迟级别,如1s,5s,10s啥的。每个队列都会创建定时任务进行调度,当达到定时任务的节点是,就恢复成一个真实的topic给consumer消费

 总结图

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿yu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值