微服務系統設計:API 網關
VSole2022-09-13 09:47:38
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不同寫法。
“主語是什么”是一個重要的哲學課題。
“有無主語”、“什么是主語”或“主語是什么”是一個關鍵哲學課題,會引向不同的節奏。

VSole
網絡安全專家