[TOC]
## 消息隊列
- 場景說明
用戶注冊后,需要發注冊郵件和注冊短信
- 串行方式
將注冊信息寫入數據庫成功后,發送注冊郵件,再發送注冊短信
- 并行方式
將注冊信息寫入數據庫成功后,發送注冊郎件的同時發送注冊短信
- 消息隊列方式
將注冊信息寫入數據庫成功后,將成功信息寫入隊列,此時直接返回成功給用戶,寫入隊列的時間非常短,可以忽略不計,然后異步發送郵件和短信
## 應用解耦
- 場景說明
用戶下單后,訂單系統需要通知庫存系統。
假如庫存系統無法訪問,則訂單減庫存將失敗,從而導致訂單失敗訂單系統與庫存系統耦合
- 引用隊列
用戶下單后,訂單系統完成持久化處理,將消息寫入消息隊列,返回用戶訂單下單成功,訂閱下單的消息,采用拉/推的方式,獲取下單信息,庫存系統根據下單信息,進行庫存操作
## 流量削鋒
- 應用場景
秒殺活動,流量瞬時激增,服務器壓力大。
用戶發起請求,服務器接收后,先寫入消息隊列。假如消息隊列長度超過最大值,則直接報錯或提示用戶
后續程序讀取消息隊列再做處理
控制請求量
緩解高流量
## 日志處理
- 應用場景
解決大量日志的傳輸,日志采集程序將程序寫入消息隊列,然后通過日志處理程序的訂閱消費日志
## 消息通訊
- 應用場景
聊天室
多個客戶端訂閱同一主題,進行消息發布和接收
## 常見消息隊列產品
Kafka、 Activemq、 Zeros、 Rabbitmq、 Redis等
## 接口的并發請求
`curl_multi_init`
php 端可同時調用多個接口