RabbitMQ主要有四个用途,分别是应用解耦、异步提速、削峰填谷、消息分发。详情讲解如下:
RabbitMQ介绍、解耦、提速、削峰、分发 详解、RabbitMQ安装 可视化界面讲解
1.应用解耦:提高系统容错性和可维护性
2.异步提速:提升用户体验和系统吞吐量
3.削峰填谷:提高系统稳定性
4.消息分发:提高系统灵活性
应用解耦:
应用解耦是指通过使用消息队列等中间件来降低应用程序之间的直接依赖性,从而实现独立开发、部署和升级的能力。通过解耦,每个应用程序可以通过消息队列发送和接收消息,而不需要了解其他应用程序的具体实现细节。通过应用解耦,可以实现系统的松耦合架构,提高系统的可维护性、扩展性和容错性。
提交订单的时候需要重构库存系统,比如说现在库存系统挂掉了,传统模式下面就没法提交订单了。使 用RabbitMQ
的时候,提交订单的时候,订单系统会把重构库存的信息写入
MQ
系统,这个时候库存系 统挂掉了是不影响订单的提交的,库存系统恢复后可以继续从RabbitMQ
消费消息写入库存。
你可以把快递柜比作RabbitMQ
。
1
、没有快递柜的时候,消费者如果不在家,快递小哥就不能把快递送到消费者手里了。
2
、没有快递柜的时候快递小哥一天送的快递数量也是有限的。
3
、有了快递柜后,快递小哥可以把快递放在快递柜里面,消费者什么时候有时间都可以去快递柜里面 取回自己的快递。
4
、双十一快递比较多的时候,也可以通过快递柜来消峰,这样就不至于快递送不出去。
异步提速:
异步提速是指通过将耗时的操作转化为异步执行,从而提高系统的响应速度和吞吐量。通过异步处理, 应用程序可以在等待某个操作完成的同时继续执行其他任务,而不需要阻塞等待结果返回。
例如,当一个应用程序需要进行网络请求并等待响应时,如果采用同步方式,应用程序会被阻塞,直到 响应返回才能继续执行其他任务。而通过异步方式,应用程序可以继续执行其他任务,不需要等待网络 请求的结果返回。这样可以提高系统的响应速度,使用户获得更好的体验。
没有使用
MQ
:
在顺序执行的系统里一个提交订单的操作可能要执行
920ms
一个下单操作耗时:
20 + 300 + 300 + 300 = 920ms
GO
里面也可以使用协程解决这个问题
使用MQ:
用户点击完下单按钮后,只需等待
25ms
就能得到下单响应
(20 + 5 = 25ms)
。
MQ
和后面库存系统、支付 系统、物流系统的交互都是异步完成的。 提升用户体验和系统吞吐量(单位时间内处理请求的数目)。
不需要的等待完成
RabbitMQ
不生产消息,他是消息的搬运工。
削峰填谷:
削峰填谷是一种通过平衡系统负载,减轻峰值压力和填充低谷时的资源利用率的技术。它的目标是在系统负载波动较大的情况下,合理利用资源,确保系统的稳定性和高效性。
使用了
MQ
之后,限制消费消息的速度为
1000
,这样一来,高峰期产生的数据势必会被积压在
MQ
中, 高峰就被“
削
”
掉了,但是因为消息积压,在高峰期过后的一段时间内,消费消息的速度还是会维持在1000,直到消费完积压的消息,这就叫做填谷。简单来说就是慢慢分发 使用MQ
后,可以提高系统稳定性。
消息分发:
消息分发是一种将消息从发送者传递到接收者的机制,它在异步系统和事件驱动架构中起着重要的作 用。消息分发可以实现解耦和灵活性,允许不同组件或模块之间通过消息进行通信,从而实现系统的松耦合和可扩展性。
下面是消息分发的一些关键概念和示例:
发布者(
Publisher
)
:发布者是消息分发系统中的发送者,它负责生成并发布消息。发布者将消息发送到消息分发系统,而不需要知道消息的具体接收者。
订阅者(
Subscriber
)
:订阅者是消息分发系统中的接收者,它通过订阅特定的消息或消息类型来表明自己对消息的兴趣。当有匹配的消息到达时,消息分发系统会将消息传递给订阅者。
主题(
Topic
)
:主题是消息分发系统中用于分类和组织消息的标识符或名称。发布者可以将消息发布到特定的主题,而订阅者可以选择订阅感兴趣的主题。通过主题,可以实现消息的细粒度过滤和选择性订阅。