天天看點

為什麼微服務需要API網關?

本文講的是<b>為什麼微服務需要API網關?</b>【編者的話】James Higginbotham。API架構師,現供職于LaunchAny。這是一家API咨詢公司,幫助其合作夥伴完善API設計與管理。

随着以API産品化和以其為中心的IT計劃的興起,API網關和管理層變得很通用。我們應該為微服務考慮API網關嗎?如果是這樣,它們能提供什麼收益嗎?

API網關可以提供一個單獨且統一的API入口用于通路内部一個或多個API。它們典型的會提供通路頻率限制層和安全層。但諸如Tyk.io這樣的API管理層會提供分析,計費和生命周期管理功能。

一個微服務架構可以包含數十到數百個服務。API網關可以為外部使用者提供一個統一的入口,這個入口獨立于内部微服務元件。

API網關通過提供微服務綁定和解綁的能力來将外部的公開API與内部微服務API分離開。這樣就具備重構和裁切微服務而不會影響外部綁定的用戶端的能力。它同時對用戶端隐藏了服務發現和服務版本這些細節,因為它對所有微服務提供單一的通路點。

API網關通過提供額外的安全層幫助阻止大規模攻擊。這些攻擊包括SQL注入,XML解析漏洞和DoS攻擊。

不同于外部API一般使用HTTP或REST,内部微服務可以從使用不用通訊協定中收獲益處。這些協定可以是ProtoBuf或AMQP,甚至是諸如SOAP,JSON-RPC或者XML-RPC這樣的系統內建協定。API網關可以對這些協定提供統一的外部REST接口,這就允許開發團隊挑選一款最适合于内部架構的協定。

微服務中有一些常見的要點,諸如使用API令牌進行授權,通路控制和調用頻次限制。這每個點都需要每個服務區增加額外的時間去實作它們。API網關将這些要點從你的代碼中提取出來,允許你的服務隻關注于它們需要關注的任務。

随着微服務API從外部API中分離出來,你可以模拟你的服務去做設計驗證或者很友善的做內建測試。

雖然API微服務網關有這麼多的好處,但同時也存在一些缺點

由于API網關需要額外的配置,你的部署架構需要更多的編排和管理能力。

在釋出階段需要管理路由的配置,以保障外部API被正确的路由到微服務上。

除非很好的使用高可用,可擴充的架構,否則API網關将會變成瓶頸和單點。

===========================================

譯者介紹

高洪濤,當當網架構師,開源資料庫分庫分表中間件Sharding-JDBC作者。目前從事Docker,Mesos相關工作

原文釋出時間為:2017-01-20

本文作者:高洪濤

本文來自雲栖社群合作夥伴Dockerone.io,了解相關資訊可以關注Dockerone.io。

原文标題:為什麼微服務需要API網關?

繼續閱讀