Message Queue
What is Message Queue ?
Message Queue 本質就是一個 Queue 而 Queue 的內容存放的是 message 主要用途為不同 Pocess, Thread 或 Service 之間的溝通
Why Message Queue ?
Message Queue 有以下優點:
- Better Performance:
- MQ 可以很容易的達到各個 Service 之間的非同步溝通( HTTP 為同步溝通 )
- 在一些 Latency 不重要的情況下,client 只需要跟等待 web server 將資料丟進 Queue 的時間,不需要等待整個服務結束
- Decoupling
- 可以很容易的去除各個 service 之間的相依性
- Flexiability of scaling
- 由於 service 之間的相依性變低,因此可以很容易的依照需求縮減
- Reliablity
- 當 comsumer 突然故障,MQ 可以將資料暫存起來,等到 consumer 重新上現在傳送過去。
💡 官方對 Loki 的介紹: “Like Prometheus, but for logs.”
Push or Pull Delivery
- Comsumer 要知道是否有任務要做主要有兩種方式
- Push: 當 MQ 收到來自 producer 的資料後,主動用類似 onMessage 接口通知 comsumer
- Pull: Consumer 輪詢調用 MQ 的接口來拿新資料