微服務架構為何需要搭配API網關?
譯文【51CTO.com快譯】隨著以API為核心的IT項目不斷增加,API網關與管理層亦愈發普遍。那么,我們是否應當為微服務搭配API網關?如果需要,其又能夠帶來哪些助益?
API網關是什么?
API網關負責提供一套單一且統一的API入口點,其跨越一個或者多個內部API。其通常亦設定了層速率限制與安全性機制。Tyk.io等API管理層則能夠帶來更多其它功能,包括分析、貨幣化以及生命周期管理等等。
基于微服務的架構當中往往包含10到100項甚至更多服務。API網關能夠為外部消費方提供一套統一的入口點,且不會受到內部微服務的具體數量與組成的影響。
API網關為微服務帶來的助益
避免將內部信息泄露給外部客戶
API網關能夠將外部公共API與內部微服務API加以區分,使得各項微服務進行添加與邊界變更。如此一來,微服務架構就能隨時間推移而始終通過重組保護正確大小,且不會對外部綁定客戶造成影響。另外,其還能夠為全部微服務提供單一入口點,從而避免外部客戶進行服務發現及版本控制信息查看。
為微服務添加額外的安全層
API網關能夠提供一套額外的保護層,足以應對SQL注入、XML解析攻擊以及拒絕服務(簡稱DoS)攻擊等常見威脅因素,從而實現額外的保護層效果。
可支持混合通信協議
由于面向外部的API通常會提供一個基于HTTP或者REST的API,因此內部微服務往往可借此使用多種不同通信協議。此類協議包括ProtoBuf、AMQP或者其它集成有SOAP、JSON-RPC或者XML-RPC的系統。API網關可跨越這些協議提供一個外部統一的基于REST API,允許各團隊以此為基礎選擇最適合內部架構的協議方案。
降低微服務復雜性
微服務擁有多項常規重點,例如利用API令牌進行驗證、訪問控制以及速率限制等。每一項都會給相關實現服務帶來影響,進而延長微服務的開發時間。API網關能夠從代碼層面移除這些重點,使得大家的微服務能夠專注于更為實際的核心任務。
微服務模擬與虛擬化
通過將微服務API與外部API加以區分,大家可以模擬或者虛擬化自己的服務,從而滿足設計要求或者配合集成測試。
微服務API網關的弊端
雖然使用API微服務網關好處多多,但其亦存在以下弊端:
- 整個開發架構由于額外API網關的加入而需要更多編排與管理工作相配合。
- 必須在開發過程中對路由邏輯配置進行管理,從而確保以合理的路由方式對接外部API與專用微服務。
- 除非架構本身充分適合高可用性與規模化要求,否則API網關往往會成為一項限制性因素,甚至引發單點故障。
原文標題:Why Do Microservices Need an API Gateway? 原文作者: James Higginbotham
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】