微服務系統設計:API 網關
API Gateway 是一個 API 管理工具,位於客戶端和後端服務集合之間。它是系統的單一入口點,封裝了內部系統架構並提供爲每個客戶端量身定製的 API。它還具有其他職責,例如身份驗證、監控、負載平衡、緩存、節流、日誌記錄等。
微服務提供的 API 粒度通常與客戶端所需的不同。微服務通常提供細粒度的 API,這意味着客戶端需要與多個服務交互。因此,API 網關可以爲所有客戶端提供單個入口點,並提供一些附加功能和更好的管理。
特徵
以下是 API 網關的一些所需功能:
-
認證和授權
-
服務發現
-
反向代理
-
緩存
-
安全
-
重試和斷路
-
負載均衡
-
記錄、追蹤
-
API 組成
-
速率限制和節流
-
版本控制
-
路由
-
IP 白名單或黑名單
優點
讓我們看看使用 API Gateway 的一些優勢:
-
封裝 API 的內部結構。
-
提供 API 的集中視圖。
-
簡化客戶端代碼。
-
監控、分析、跟蹤和其他此類功能。
缺點
以下是 API 網關的一些可能缺點:
-
可能的單點故障。
-
可能會影響性能。
-
如果縮放不當,可能會成爲瓶頸。
-
配置可能具有挑戰性。
後端換前端 (BFF) 模式
在後端換前端 (BFF) 模式中,我們創建單獨的後端服務以供特定前端應用程序或接口使用。當我們想要避免爲多個接口定製單個後端時,這種模式很有用。這種模式首先由 Sam Newman 描述。
此外,有時微服務返回到前端的數據輸出的格式不準確,或者沒有按照前端的需要進行過濾。爲了解決這個問題,前端應該有一些邏輯來重新格式化數據,因此,我們可以使用 BFF 將一些邏輯轉移到中間層。
前端模式的後端的主要功能是從適當的服務中獲取所需的數據,格式化數據,並將其發送到前端。
GraphQL 作爲前端(BFF)的後端性能非常好。
什麼時候使用這種模式?
在以下情況下,我們應該考慮使用後端換前端 (BFF) 模式:
-
必須使用大量開發開銷來維護共享或通用後端服務。
-
我們希望針對特定客戶的要求優化後端。
-
對通用後端進行了定製以適應多個接口。
例子
以下是一些廣泛使用的網關技術:
-
亞馬遜 API 網關
-
Apigee API 網關
-
Azure API 網關
-
自己的 API 網關
附送幽默圖:
JavaScript 和 python 不同寫法。
“主語是什麼” 是一個重要的哲學課題。
“有無主語”、“什麼是主語”或 “主語是什麼” 是一個關鍵哲學課題,會引向不同的節奏。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/jHawLQcprdg6e0_63ADDYg