最後一章補上「系統與系統之間怎麼溝通」:API 是什麼、REST 的慣例、以及分散式系統最重要的觀念——同步與非同步、佇列與解耦。讀完後 AWS ch08(API Gateway)和 ch09(SQS、SNS、EventBridge)那些「解耦」「fan-out」「緩衝尖峰流量」的說法就不再是黑話。恭喜你完成 IT 基礎全部八章!
你的手機 App 怎麼跟伺服器要資料?程式跟程式之間怎麼互相使喚?靠 API(Application Programming Interface,應用程式介面)。
https://api.example.com/users/123 =「使用者 123 號」這項資源的窗口。{ "name": "Andy", "age": 30, "tags": ["aws", "dev"] }。REST 是一套 API 的設計慣例(不是新技術),核心就兩條:「網址表達資源、HTTP 動詞表達動作」——基礎篇 ch02 學的 HTTP 動詞直接用上:
GET /users = 給我使用者列表(讀取)GET /users/123 = 給我 123 號使用者(讀取單筆)POST /users = 新增一個使用者PUT /users/123 = 更新 123 號使用者DELETE /users/123 = 刪除 123 號使用者回應用 HTTP 狀態碼表達結果(ch02 的知識再用一次):200 成功、404 找不到這筆、429 你叫太兇被限流、500 廚房炸了。
系統之間的溝通分兩種模式,這是理解 AWS ch09 整章的鑰匙:
非同步的「留言板」具體長什麼樣?就是佇列(Queue)——一條先進先出的訊息隊伍:
非同步訊息還有第二種模式,兩者的差別是 AWS ch09 的核心考點:
| 特性 | 同步(打電話) | 非同步(留言) |
|---|---|---|
| 行為 | 發出請求後原地等回應 | 留下訊息就繼續做自己的事 |
| 耦合度 | 高:對方慢我就慢、對方掛我就失敗 | 低:透過佇列解耦,各忙各的 |
| 結果回饋 | 立即知道成功或失敗 | 延後得知,要另外設計通知機制 |
| 適合場景 | 查詢、登入——使用者等著要答案 | 轉檔、通知、報表——交辦了就能走 |
| AWS 典型 | API Gateway → Lambda 直接回應 | API 收單 → SQS → 背景 worker 慢慢做 |
| 特性 | Queue(佇列) | Pub/Sub(發布/訂閱) |
|---|---|---|
| 類比 | 銀行取號機/工單池 | 廣播電台 |
| 一則訊息幾人收到 | 只有一個消費者領走處理 | 所有訂閱者都收到同一則 |
| 多個接收者的意義 | 分工(各處理不同訊息) | 廣播(各自處理同一事件) |
| 適合 | 任務分派:「找一個人做掉」 | 事件通知:「所有關心的人都該知道」 |
| AWS 服務 | SQS | SNS(fan-out = SNS 接多個 SQS) |
點擊卡片翻面查看答案,共 10 張。