简介
RabbitMQ (高性能的异步通讯组件)
RabbitMQ是一个开源的消息队列中间件,它实现了高级消息队列协议(AMQP)标准。它是一种可靠、可扩展、灵活和可插拔的解决方案,用于处理异步消息传递和事件驱动系统。RabbitMQ提供了可靠的消息传递机制,并支持多种消息传递模式,如点对点、发布/订阅和请求/响应。它可以用于构建分布式系统、微服务架构、大规模数据处理等场景。RabbitMQ提供了丰富的功能,如消息持久化、消息路由、消息优先级、消息延迟等,可以满足各种复杂的消息传递需求。它还提供了多种语言的客户端库,如Java、Python、Ruby等,方便开发者使用。总之,RabbitMQ是一个强大而灵活的消息队列中间件,被广泛应用于各种企业级系统中。
一、同步调用
我们以商城的余额支付为例:
由于下边的操作要依赖于上边的操作,只有当上边的操作完成才能一步步的接下来完成往后的每一步,这将导致性能下降,拓展性差。
同步调用的优势是:时效性强,等待到结果后才返回
二、异步调用
异步调用方式其实就是基于消息通知的方式,一般包含三个角色:
消息发送者:投递消息的人,就是原来的调用方
消息代理:管理、暂存、转发消息,你可以把它理解为微信服务器
消息接受者:接收和处理消息的人,就是原来的服务提供方
支付服务不再同步调用业务关联低的服务,而是发送消息通知到Broker。
具备下列优势:
- 解除耦合,拓展性强
- 无需等待,性能好
- 故障隔离
- 缓存消息,流量削峰填谷
异步调用的问题:
- 不能立即得到调用结果,时效性差
- 不确定下游业务执行是否成功
- 业务安全依赖于Broker的可靠性
三、MQ技术选型
MQ(MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是异步调用中的Broker。