天天看點

淺談微服務架構下的API網關

1. 概述

近幾年來,移動應用與企業間互聯需求的興起。移動應用、企業互聯,使得背景服務支援的對象,從以前單一的Web應用,擴充到多種使用場景,且每種使用場景對背景服務的要求都不盡相同。這不僅增加了背景服務的響應量,還增加了背景服務的複雜性。随着微服務架構概念的提出,API網關成為了微服務架構的一個标配元件。

Chris Richardson曾經在他的部落格上詳細介紹過API網關,包括API網關的背景、解決方案以及案例。對于大多數基于微服務的應用程式而言,API網關都應該是系統的入口,它會負責服務請求路由、組合及協定轉換。如Chris所言,在微服務的應用程式中,用戶端和微服務之間的互動,有如下幾個挑戰:

  1. 微服務提供的API粒度通常與用戶端的需求不同,微服務一般提供細粒度的API,也就是說用戶端需要與多個服務進行互動。
  2. 不同的用戶端需要不同的資料,不同類型用戶端的網絡性能不同。
  3. 服務的劃分可能會随時間而變化,是以需要對用戶端隐藏細節。

那什麼是API網關? API網關的引入能給企業帶來什麼樣的好處?API網關有哪些應用場景? 在選擇API網關時應該考慮哪些因素? 下面我們将一一進行介紹。

2. API網關概述

API 網關,即API Gateway,是大型分布式系統中,為了保護内部服務而設計的一道屏障,可以提供高性能、高可用的 API托管服務,進而幫助應用服務的開發人員便捷地對外提供服務,而不用考慮安全控制、流量控制、審計日志等問題,統一在網關層将安全認證,流量控制,審計日志,黑白名單等實作。網關的下一層,是内部服務,内部服務隻需開發和關注具體業務相關的實作。網關可以提供API釋出、管理、維護等主要功能。開發人員隻需要簡單的配置操作即可把自己開發的服務釋出出去,同時置于網關的保護之下。

淺談微服務架構下的API網關

API網關使得搭建一個新的應用服務變得簡單、快捷、高效,同時,開發人員可以将精力更多放在和業務緊密相關的工作中。

3. API網關給企業帶來的好處

(1)網關層對外部和内部進行了隔離,保障了背景服務的安全性。

(2)對外通路控制由網絡層面轉換成了運維層面,減少變更的流程和錯誤成本。

(3)減少用戶端與服務的耦合,服務可以獨立運作,并通過網關層來做映射。

(4)通過網關層聚合,減少外部通路的頻次,提升通路效率。

(5)節約後端服務開發成本,減少上線風險。

(6)為服務熔斷,灰階釋出,線上測試提供簡單方案。

(7)便于進行應用層面的擴充。

4. API網關的應用場景

1、面向Web應用

在這類場景下,應用在實體形态上類似前後端分離,此時的Web App已經不是全功能的Web App,而是根據場景定制、場景化的App。

2、面向移動應用

在這類場景下,移動App是後端服務的使用者和消費者,此時的API 網關還需要承擔一部分MDM(Mobile Devices Management,移動裝置管理)的職能。

3、面向合作夥伴的開放API

這類場景,主要為了滿足業務形态對外開放,與企業外部合作夥伴建立生态圈,此時的API 網關需要增加配額、流控、令牌等一系列安全管控功能。

4、面向雲計算平台的外部API

這類場景,被提到的次數比較少,很多時候系統的建設,都是為了滿足企業自身業務的需要,實作對企業自有業務的映射。當網際網路形态逐漸影響傳統企業時,很多系統都會為了導入流量或者内容,依賴外部合作夥伴的能力,一些典型的例子就是使用「合作方賬号登入」、「使用第三方支付平台支付」等等,這些對于企業内部來說,都是一些外部能力,比如證券行業中的萬得資訊、同花順資訊等,正在建立基于雲計算平台的API網關應用, 用于外部使用者的合作接入。此時的API 網關就需要在邊界上,為企業内部服務統一調用外部的API做統一的認證、(多租戶形式的)授權、以及通路控制。

在微服務架構下的API網關,一般指的是前三類使用場景。即,主要是把企業内部的API能力,暴露給其他應用或合作夥伴使用。網關層作為用戶端與服務端的一層擋闆,主要起到了三大類作用:

第一類作用是隔離作用,作為企業系統邊界,隔離外網系統與内網系統。

第二類作用是解耦作用,通過解耦,使得微服務系統的各方能夠獨立、自由、高效、靈活地調整,而不用擔心給其他方面帶來影響。

第三類作用是應用基礎設施(腳手架作用),提供了一個通路位址,友善通過擴充機制對請求進行一系列加工和處理。

5. API網關選型考慮要素

淺談微服務架構下的API網關

1、安全性問題

企業在把服務暴露給外部使用時,首先要確定服務使用的安全,防止外部的惡意通路對公司業務的影響,特别是涉及交易方面的服務,更是要全面考慮安全性。為確定安全,需要考慮在通訊鍊路的建立、通訊資料的加密、資料的完整性、不可抵賴性等方面。

2、性能問題

作為企業API的入口,所有的請求都會經過API網關進行轉發,可想而知,對API網關的通路壓力是巨大的,有的網站甚至達到每分鐘上千萬的通路量。特别是在一些網際網路企業,海量的移動終端每時每刻都需要與後端的服務進行互動,如果不能保證網關的高性能,企業在網關層需要投入大量的裝置和成本。曾在一家網際網路公司發生過,由于網關性能問題,網關的機器數量,需要與背景伺服器的數量保持同步增長。這種情況顯然是企業服務忍受的。

3、高可用問題

API網關作為邏輯上的單點,一旦發生問題,将造成企業服務的不可用,對企業來說可能造成的緻命的影響。計算短時間的不可用,也會給企業帶來直接的經濟損失。是以,如何保證API網關的7*24小時的穩定運作,網關的自動伸縮、API的熱更新等問題,都是企業級的網關需要考慮的。

4、擴充性問題

前面說到,企業網關提供了一個腳手架,一些非功能性的問題,例如日志、安全、負載均衡政策、鑒權等。這些插件會随着企業業務規模等的變化進行不斷的強化與調整。這就需要網關層提供這樣一種機制,使得可以靈活地進行這些調整和變化,而不用頻繁對網關層進行改動,確定網關層的穩定性。

5、API高效運維的問題

API在上線、釋出過程中,都需要涉及到網關層的配合,例如,需要網關層知道API釋出的位址,API的接口形式、封包格式,也需要網關層對背景API進行封裝。在API調整後,需要作出相應的修改。是以,API網關設計時,需要明确網關層與服務層的職責切分與協作模式,使得API的管理、釋出更加高效。

6、API全生命周期的管理

API服務的全生命周期,包括服務的設計、開發、測試、上線釋出、運維管理(服務使用的申請、開通;服務分類分級别的管理、服務使用情況的監控、計費等)、下線。

淺談微服務架構下的API網關

一個企業可能會暴露成百上千個API接口,日常也會經常進行API的釋出、更新、改造、下架等操作。對不同的服務,不同的通路者,需要提供不同的服務通路政策。有的商業API公司,還需要對API的使用進行付費。是以,與API網關配套的,需要一套完善的自助系統,提供給服務的提供者、管理者、使用者,來對服務的釋出、使用和營運。

以下是個人微信公衆号, 用于學習與交流, 歡迎大家關注。
淺談微服務架構下的API網關

繼續閱讀