不只有簡單性和穩定性,API網關還有這些好處
譯文【51CTO.com快譯】API網關是對微服務體系結構樣式的一個關鍵結果的響應:服務及其接口的激增。API網關的核心目的是簡化和穩定暴露給客戶端的接口。
除此之外,由于API網關在體系結構中的獨特位置,因此可以實現多種附加功能,例如監視,日志記錄,安全性,負載平衡和流量操縱。
API網關類似于Facade設計模式,但應用于網絡級別。這兩種情況的目標都是提供一個簡化的接口配置文件,以隱藏系統的復雜性。可以在下圖中看到簡單的API網關思路。
簡化的界面
API網關的作用是將客戶端與服務解耦,并在此過程中為入站和出站流量提供單點聯系。
微服務后端可能涉及許多交互服務,這些服務的URL和協議可能是異構的。API網關可以為客戶端提供一個簡化的交互界面。在某種意義上,這就像一個簡化代理。
此外,API網關可能更復雜,能夠接受單個請求,檢索必要的資源,并將它們組合成單個響應。例如,對用戶概要文件的請求可能檢索用戶詳細信息、最近的消息和興趣。網關可以接收單個請求,從每個必要的服務請求數據,然后將它們統一為單個響應。
這種功能需要在架構級別上進行編排,并對其他微服務組件(如斷路器和服務網)產生影響。
因為API網關能夠轉換后端使用的協議和URL,所以它很適合幫助遷移服務。也就是說,API網關在某種程度上可以隱藏后端發生的更改。
API穩定性
API網關還可以提高客戶端與服務進行交互的API的穩定性。網關可以平滑那些可能破壞客戶端或要求客戶端進行更改的細微變化,開發人員可以使用網關將一些流量導向服務的新版本來測試它們。
通常,API網關為客戶端提供單點聯系點,這有助于將更改對后端服務的影響最小化。服務越復雜,更改越頻繁,網關的功能就越有價值。
請注意,API網關還可以簡化API表層,甚至對于內部客戶端也是如此。也就是說,可以使用網關使微服務體系結構本身中的拓撲更容易管理。
監控方式
API網關在體系結構中的作用也使其非常適合進行某些類型的監視,警報和跟蹤。同樣,在網關處收集統計信息對于流量和使用情況的廣泛分析也很有用。帶有日志記錄的API網關如下圖所示。
有多種方法可以處理API網關日志記錄的分析,比如使用Amazon Elasticsearch Service。
安全
由于網關是系統的單點入口,因此在系統加固中首當其沖。這類似于系統管理最佳實踐中跳轉主機的角色。
這樣服務就能夠主要關注與單個API網關的通信的安全,這比處理多個面向公共的API簡單得多。
以上內容適用于基礎設施級安全性。然而,網關也可以在業務級別上承擔身份驗證和授權的工作。這需要對所涉及的后端服務進行編排,但可以通過將安全邏輯集中在一個地方來簡化事情。這自然與速率限制或使用付費聯系在一起,因為網關將擁有用于計費的客戶端帳戶。
API網關解決方案
API網關解決方案分為兩大類:托管的和自行開發的。在托管解決方案領域,每個云供應商都提供一個產品。這些可以通過搜索找到,因為它們被(毫無想象力地)命名為“Amazon API網關”、“Azure應用網關”和“谷歌云API網關”。
在開發自己的框架時,最好從一個能夠幫助完成大量繁重工作的框架開始。例如,在Java生態系統中,Spring Cloud提供了Spring Cloud Gateway。而Nginx是另一個不錯的選擇。
API網關的實際應用
我們已經討論了API網關可以提供的許多好處。但是,一定要記住這種權衡:網關也是需要維護的基礎設施的另一部分。特別是,API網關必須與對后端和客戶端的更改保持同步。也就是說,如果你的體系結構復雜性或業務需要它,API網關可能是不錯的解決方案。
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】