猫头鹰的深夜翻译:API网关的重要性
前言
在非技術術語中,“網關或門是進入一個由墻圍住的封閉空間的入口點。”同理,API網關是指位于防火墻或互聯網后面
的服務的入口點。在微服務的世界中,網關坐鎮于API前面,直接面向客戶并進行反向代理。
越來越多的應用程序正在從單片架構遷移到微服務架構。API網關已成為微服務架構模式中的關鍵組件之一。請
注意,本文不是關于任何特定網關,而是討論網關的一般功能。
作為代理的網關
在了解網關及其職責之前,讓我們先來看看代理是如何工作的。代理服務器充當網橋,使內部網絡對互聯網不可見。代理服務器有兩種類型:轉發代理和反向代理。
轉發代理是面向互聯網并從互聯網檢索數據。與此相反的,反向代理位于內部網絡中,接受來自Internet的請求,并將它們轉發到內部網絡中的服務器。
網關是一種反向代理模式,可以保護對專用網絡上服務器的訪問,盡管它們不是互斥的。
API網關模式
API網關有許多功能,現在讓我們深入了解網關的職責。
安全性
您可能認為已經為您的體系結構設置了安全層,例如使用HTTPS加密請求。我為我的私人網絡設置了防火墻。我已經為我的請求等添加了身份驗證等等。
但是網關還可以從其他安全方面幫助管理來自客戶端的請求。
CORS
網關可以實現CORS(跨源資源共享)過濾器并具有處理跨域請求的能力。CORS是支持跨域請求,允許訪問受限資源的機制。根據瀏覽器提交的原始URL,
大多數網關攔截傳入的HTTP請求并識別它們是否是跨域的,并在將請求轉發到跨域資源之前使用請求頭中所需要的信息。
DDoS和SQL注入
由于所有流量都通過網關路由,因此有一個額外的優勢就是過濾掉了不安全的請求。許多網關都善于清理SQL注入等常見的危險的輸入。
網關提供了一種防御機制來識別DDoS攻擊,例如當請求轟炸服務器時能防止中斷核心服務。
你可以進行多層保護。比如,AWS提供AWS護盾的服務,在請求到達網關或者ELB之前識別使用峰值。網關就類似于這樣的一層防護,可以利用其功能來防止攻擊。
授權和認證
由于網關是請求的入口點,因此它始終是授權和驗證終端用戶的更好地方。這有助于保持后端服務的完整性,因為無效的請求甚至都無法到達業務層。
在API網關進行授權和認證管理最好的方法就在于使用OAuth并建立握手。
證書管理
API網關可以使用自己的keyStore和trustStore管理證書。許多商業網關都可以在商店中創建/導入證書,并在客戶端和網關之間建立SSL。
如果您有API網關作為后端服務的入口點,那么最佳做法之一是在您的網關和后端服務之間使用SSL。由于Gateway和后端服務位于內部網絡中,因此除了SSL之外,您不需要額外的安全層。
如果您有一個大規模分布式集群以獲得高效性能,您甚至可以在流量到達網關后在負載均衡器上執行終止SSL。
API控制和管理
請求限制和配額
你的API請求可能來自多個渠道,你可能希望根據與渠道或客戶的服務協議對請求進行限制。最初,你與渠道或客戶簽訂服務水平協議(SLA),以確保滿足他們的期望并確定他們不會遇到任何中斷的情況。
此外,這將有助于隔離渠道,并根據商定的交易或非功能性需求相應收取費用。例如,你可能會收到來自移動端的大量請求,您可以根據傳入流量激活TPS,并記下可以收取費用的交易量。
這樣,API貨幣化可以專門針對客戶端完成。
還可以通過配額管理,規定指定時間間隔內可以提交的最大請求數。這通常稱為配額限制,在上述與客戶簽訂服務協議的情況下非常有用。
那么,還有那些東西是可以通過API網關限定的呢?由于所有請求都流經網關,因此您可以在入口點異步記錄所有事務,并在以后跟蹤以進行審計,以滿足合同的要求。
因此,API網關減輕了從應用程序的功能層管理客戶端需求的負擔。
監控
僅管可以在應用程序中插入許多APM工具,但網關也可以提供實時API監控,以便分析其使用趨勢。
API主機
那么,網關如何知道它應該接受哪個API以及拒絕哪個API?其實我們可以將API附到網關上,在上面配置請求參數,應用路由策略(如果需要),附加其他請求等。
正如我們之前討論的那樣,可能有多個渠道的請求流入應用程序,但并非所有渠道都需要訪問所有的API。在這種API治理方案中,您可以配置客戶端特定要求,
并將流量路由到客戶端要訪問的那些API。默認情況下,可以在網關上強制拒絕所有策略,并將那些預先加入的API列入白名單。
編排
您可能希望與來自不同微服務的不同API進行交互,然后聚合信息。您可以通過卸載組合服務的編排來在網關中編寫實現此邏輯。但這不是推薦的方式,因為這會使API網關和應用程序緊密耦合,考慮到你可以隨時擺脫網關。
請求響應的過濾
什么要在網關中而不是在應用程序,比如Java中的servlet過濾器中過濾響應,?讓我們參考一個例子。
假設您希望維護一個通用的微服務,這些微服務服務于不同的地理位置,API可以從世界不同地區訪問并由不同渠道使用。每次向渠道/客戶端發送響應時,
都會發送該渠道可能根本不不需要的信息。在這里,我們可以使用網關的功能,過濾響應,并僅發送特定渠道所需的內容。注意:通過對渠道到響應映射執行額外的查找,可能會帶來一定的延遲。
網關的類型
API的廣泛采用促成了現成的API管理產品,開源項目和SaaS產品的出現。
為應用選擇哪種網關?
這取決于您是否要使用各種商業工具來設置API管理平臺。很多商業的Saas工具都提供管理軟件的豐富的功能。這一切都取決于你如何設計系統并使其適合微服務架構。
當選擇網關時,需要考慮如可擴展性,高可用性和彈性等因素。
開源網關如何?
有部分開源網關也提供了API管理的靈活性。這種網關的優勢在于它們可以與應用服務器一起水平擴展,提供跨容器的分布式特性。
最后,每個商業/開源網關都會試圖推銷自己,如果你找到一個合適的網關,我建議最好不要重新發明輪子,而是利用它的功能并根據你的具體要求進行定制。
網關的可擴展性
可以通過在多個主機上部署多個API網關并使用標準負載平衡器對它們進行負載平衡來實現可用性和水平可伸縮性。這還取決于你在應用程序服務器前部署的網關類型。
另一種常見做法是將CDN設置為網關前的靜態內容緩存層。
網關反模式
我們已經討論了很多關于API網關及其特性的問題,現在讓我們來看看一些網關反模式。
- 確保API網關不會成為單點故障。
- 無論應用程序設計的多好,都有可能與API網關緊密耦合。
- 網關會為端到端響應時間帶來額外的延遲。
- 潛在的性能瓶頸
- 如果沒有明智地選擇網關,將會增加額外的運營開銷和成本。
總結
以上是生活随笔為你收集整理的猫头鹰的深夜翻译:API网关的重要性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flask 模型操作
- 下一篇: 上云实践操作(漫步云端)之上云动力