想要讓您的 API 閘道器在流量增長時保持平穩執行?以下是如何擴充套件並保持可用性的方法:
- 負載平衡:跨伺服器分散請求
- 新增更多伺服器:提高處理能力
- 智慧快取:儲存熱門資料以便快速訪問
- 限制請求:限制流量以防止過載
- 使用斷路器:切斷故障服務
- 健康檢查和備份:儘早發現問題
- 基於雲的設定:利用靈活的雲資源
1、負載均衡
負載平衡就像超市設有多個結賬通道。它位於客戶端和 API 閘道器伺服器之間,將傳入請求分散到多個伺服器。這可以防止任何單個伺服器不堪重負。
它有用的原因如下:
- 均勻分佈請求
- 如果伺服器發生故障,仍可保持 API 執行
- 使擴充套件更容易 - 只需新增更多伺服器
- 透過減少每臺伺服器的負載來提高效能
真實示例:2021 年,Etsy使用負載平衡來處理節日期間每天 30 億次 API 呼叫——流量增加了 50%。
設定提示:
- 使用健康檢查來發現故障伺服器
- 考慮基於雲的負載均衡器
- 為你的 API 選擇正確的演算法
2.新增更多伺服器
向 API 閘道器新增更多伺服器就像在繁忙的商店中開設額外的結賬通道。它有助於同時處理更多請求。
其工作原理如下:
- 更多伺服器=同時處理更多請求
- 如果一臺伺服器發生故障,其他伺服器仍可繼續工作
- 每個伺服器的請求越少,處理速度就越快
讓我們看一個真實的例子:
AWS API Gateway 每秒可處理 10,000 個請求,峰值時可額外處理 5,000 個請求。但如果您需要更多請求怎麼辦?
DAZN 是一家體育流媒體服務公司,他們從中吸取了教訓。他們需要實時向數百萬使用者推送更新。AWS API Gateway 每小時 180 萬個新 WebSocket 連線的限制根本不夠。
那麼,如何以正確的方式新增更多伺服器?
1.使用負載平衡
將請求均勻地分散到各個伺服器。這樣可以防止任何單個伺服器過載。
2.設定健康檢查
密切關注您的伺服器。如果某個伺服器出現問題,請將其從輪換中移除,直到其恢復正常。
3.規劃增長
不要等到容量已滿。在需要之前就新增新伺服器。
4.考慮雲選項
雲平臺可以更輕鬆地根據需要新增或刪除伺服器。
更多並不一定更好。首先至少使用兩臺伺服器以實現高可用性,然後根據需要新增更多伺服器。
3.智慧快取
可以將快取視為 API 閘道器的儲存庫。它儲存熱門資料以便快速訪問,無需經過後端伺服器。
具體過程如下:
- 第一個請求:閘道器獲取並儲存資料。
- 後續請求:提供儲存的副本。
- 資料在設定的時間(TTL)後重新整理。
為什麼要快取?速度和效率:
- 響應速度更快
- 減少後端工作
- 降低成本
專業提示:
- 快取 GET 請求
- 針對特定方法進行定製
- 使用 ETag 進行智慧客戶端快取
4、限制請求
API 閘道器需要像專業人士一樣處理流量。這就是請求限制的作用所在。它是 API 的保鏢,讓整個過程都處於控制之中。
事情是這樣的:
1.設定上限
2.跟蹤請求
通常透過 IP 或 API 金鑰來計數。
3.執行限制
當有人撞到天花板時:
- 拒絕額外內容(硬節流)
- 放慢速度(軟節流)
- 排隊待會兒
真實示例:
- “Weather.com API 在其免費套餐中允許每小時 1,000 個請求。熱浪來襲時伺服器也不會崩潰!”
- “Stripe 使用令牌桶系統。它可以處理銷售高峰,同時保持長期控制。”
這將阻止資料抓取工具和攻擊。
明智之舉:
- 使用多個層級(秒、分鐘、小時)
- 在Redis中儲存分散式設定的限制資料
- 在標題中包含限制資訊,以便客戶端可以順利執行
5.使用斷路器
斷路器充當 API 閘道器的安全開關。當出現問題時,它們會切斷請求,從而防止系統過載。
以下是要點:
- 監視 API 呼叫
- 發現故障或減速
- 切斷陷入困境的服務的流量
- 休息後允許有限流量透過
為什麼要這麼麻煩?斷路器:
- 阻止多米諾骨牌效應
- 讓失敗的服務喘口氣
- 保持系統執行
真實示例:
Netflix使用斷路器來處理流量高峰和中斷。在 2020 年封鎖期間,他們看到全球流媒體增長了 16%。斷路器有助於保持平穩。
要設定斷路器:
- 選擇失敗限制(例如 10 秒內出現 5 次錯誤)
- 設定冷卻時間(開啟狀態下30秒)
- 使用Hystrix (Java) 或Polly (.NET)等工具
6. 健康檢查和備份系統
健康檢查和備份可讓您的 API 閘道器順利執行。它們可儘早發現問題並提供安全保障。
設定健康檢查的方法如下:
- 經常檢查(每 5 分鐘一次)
- 測試一切(伺服器健康、應用程式狀態、流程)
- 設定明確的限制(“健康”=響應時間在 200 毫秒以下)
- 使用自動提醒
7.基於雲的設定
雲 API 閘道器提供靈活性和可靠性。它們可以輕鬆擴充套件、處理流量高峰並提供全球覆蓋。
這就是為什麼雲設定如此出色的原因:
- 根據需求自動擴充套件
- 透過全球分佈減少延遲
- 無需停機即可快速更新
- 按使用量付費定價
總結:
- 負載平衡設定起來非常簡單,並且對增長非常有利。但要注意 - 它可能會影響可靠性。
- 新增更多伺服器就像鍛鍊肌肉。雖然需要付出努力,但最終你會變得強壯而靈活。Facebook 和 Google 等大公司都深信這種方法。
- 智慧快取是您友好的鄰居幫手。它易於使用,可確保一切順利執行。只是不要指望它能應對突然的人口激增。
- 限制請求就像是掛出“客滿”的牌子。這樣做很簡單,而且可以保持系統穩定,但並不完全是鋪開歡迎增長的墊子。
- 斷路器需要花費一些力氣才能安裝好,但它們卻能讓您的系統保持正常運轉。它們是微服務配方中的秘密武器。
- 健康檢查和備份系統就像擁有一個私人教練和一個備用輪胎。它們需要花費一些精力來設定,但它們能讓你保持強勁的體能並隨時準備應對一切。
- 基於雲的設定是擴充套件的“簡單按鈕”。它很簡單,可以發展壯大,但每年可能會讓您浪費 4.5 個小時。(這是 AWS API Gateway 的 99.95% 正常執行時間承諾。)
組合:
- 負載均衡 + 健康檢查只有健康的伺服器才能獲得流量
- 快取 + 請求限制減少後端壓力,避免流量高峰
- 雲設定 + 自動擴充套件資源隨時調整
常見問題解答
1、如何擴充套件 API 閘道器?
擴充套件 API 閘道器並非難事。您需要執行以下操作:
- 測試你的極限
- 設定基準
- 注意速度
- 分散負荷
2、API 閘道器是否高可用?
沒錯。API 閘道器旨在持續執行。原因如下:
- 它們分佈在不同的節點上
- 如果一個人失敗了,其他人就會接手
- 即使部分系統發生故障,整個系統仍能正常執行
請記住:高可用性並不意味著完美無缺。當事情出現問題時,一定要有 B 計劃。