[TOC]
## 消息队列
- 场景说明
用户注册后,需要发注册邮件和注册短信
- 串行方式
将注册信息写入数据库成功后,发送注册邮件,再发送注册短信
- 并行方式
将注册信息写入数据库成功后,发送注册郎件的同时发送注册短信
- 消息队列方式
将注册信息写入数据库成功后,将成功信息写入队列,此时直接返回成功给用户,写入队列的时间非常短,可以忽略不计,然后异步发送邮件和短信
## 应用解耦
- 场景说明
用户下单后,订单系统需要通知库存系统。
假如库存系统无法访问,则订单减库存将失败,从而导致订单失败订单系统与库存系统耦合
- 引用队列
用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功,订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作
## 流量削锋
- 应用场景
秒杀活动,流量瞬时激增,服务器压力大。
用户发起请求,服务器接收后,先写入消息队列。假如消息队列长度超过最大值,则直接报错或提示用户
后续程序读取消息队列再做处理
控制请求量
缓解高流量
## 日志处理
- 应用场景
解决大量日志的传输,日志采集程序将程序写入消息队列,然后通过日志处理程序的订阅消费日志
## 消息通讯
- 应用场景
聊天室
多个客户端订阅同一主题,进行消息发布和接收
## 常见消息队列产品
Kafka、 Activemq、 Zeros、 Rabbitmq、 Redis等
## 接口的并发请求
`curl_multi_init`
php 端可同时调用多个接口