目录
- 学习背景
- [1- 初识 MQ](#1- 初识 MQ)
-
- [1-1 同步调用](#1-1 同步调用)
- [1-2 异步调用](#1-2 异步调用)
- [1-3 MQ 技术选型](#1-3 MQ 技术选型)
学习背景
- 异步通讯的特点:异步系统的并发很高。
实际业务场景:
1- 初识 MQ
1-1 同步调用
什么是同步调用?
- 以支付服务为例子,如果一个商品的支付过程中涉及多个子操作。比如 余额扣减、支付状态更新、订单状态的更新、短息通知服务、积分服务等。
- 这些额外的操作和支付过程中核心业务,也就是库存的扣减无关,如果采用同步的方式是一个耗时的过程。
小结:同步调用优缺点
1-2 异步调用
什么是异步调用?
异步调用方式其实就是基于消息通知的方式,一般包含三个角色:
- 消息发送者:投递消息的人,就是原来的调用方。
- 消息代理:管理、暂存、转发消息,你可以把它理解成微信服务器。
- 消息接收者:接收和处理消息的人,就是原来的服务提供方。
下单场景下的异步调用
- 支付服务不再同步调用业务关联度低的服务,而是发送消息通知到 Broker。
优点
- 解除耦合,拓展性强
- 无需等待,性能好
- 故障隔离
- 缓存消息,流量削峰填谷
小结:异步调用的优缺点,什么时候使用异步调用?
1-3 MQ 技术选型
- MQ(Message Queue),中文是消息队列,字面开来就是存放消息的队列,也就是异步调用中的 Broker。
对比
- 如果对消息的可靠性要求较高的话,需要使用 RabbitMQ ,如果对吞吐量有要求的话需要使用 Kafka 等。
- RabbitMQ 是使用 Erlang 语言开发的,Erlang 是一种面向并发的语言,其次 RabbitMQ 支持的协议更多。
- Kafka 利用与吞吐量非常大的场景下,比如大型的项目做日志收集。