在這篇文章中將我們一起來探討當前的API網關的作用,
一、API網關的用處
API網關我的分析中會用到以下三種場景,
-
Open API
企業需要將自身資料、能力等作為開發平臺向外開放,通常會以rest的方式向外提供,最好的例子就是淘寶開放平臺、騰訊公司的QQ開發平臺、微信開放平臺,
Open API開放平臺必然涉及到客戶應用的接入、API權限的管理、呼叫次數管理等,必然會有一個統一的入口進行管理,這正是API網關可以發揮作用的時候, -
微服務網關
微服務的概念最早在2012年提出,在Martin Fowler的大力推廣下,微服務在2014年后得到了大力發展,
在微服務架構中,有一個組件可以說是必不可少的,那就是微服務網關,微服務網關處理了負載均衡,快取,路由,訪問控制,服務代理,監控,日志等,API網關在微服務架構中正是以微服務網關的身份存在, -
API服務管理平臺
上述的微服務架構對企業來說有可能實施上是困難的,企業有很多遺留系統,要全部抽取為微服務器改動太大,對企業來說成本太高,
但是由于不同系統間存在大量的API服務互相呼叫,因此需要對系統間服務呼叫進行管理,清晰地看到各系統呼叫關系,對系統間呼叫進行監控等,
API網關可以解決這些問題,我們可以認為如果沒有大規模的實施微服務架構,那么對企業來說微服務網關就是企業的API服務管理平臺,
二、API網關在企業整體架構中的地位
一個企業隨著資訊系統復雜度的提高,必然出現外部合作伙伴應用、企業自身的公網應用、企業內網應用等,在架構上應該將這三種應用區別開,三種應用的安排級別、訪問方式也不一樣,
因此在我的設計中將這三種應用分別用不同的網關進行API管理,分別是:API網關(OpenAPI合伙伙伴應用)、API網關(內部應用)、API網關(內部公網應用),

三、企業中在如何應用API網關
1、對于OpenAPI使用的API網關來說,一般合作伙伴要以應用的形式接入到OpenAPI平臺,合作伙伴需要到 OpenAPI平臺申請應用,
因此在OpenAPI網關之外,需要有一個面向合作伙伴的使用的平臺用于合作伙伴,這就要求OpenAPI網關需要提供API給這個用戶平臺進行訪問,
如下架構:

當然如果是在簡單的場景下,可能并不需要提供一個面向合作伙伴的門戶,只需要由公司的運營人員直接添加合作伙伴應用id/密鑰等,這種情況下也就不需要合作伙伴門戶子系統,
2、對于內網的API網關,在起到的作用上來說可以認為是微服務網關,也可以認為是內網的API服務治理平臺,
當企業將所有的應用使用微服務的架構管理起來,那么API網關就起到了微服務網關的作用,
而當企業只是將系統與系統之間的呼叫使用rest api的方式進行訪問時使用API網關對呼叫進行管理,那么API網關起到的就是API服務治理的作用,
架構參考如下:

3、對于公司內部公網應用(如APP、公司的網站),如果管理上比較細致,在架構上是可能由獨立的API網關來處理這部分內部公網應用,如果想比較簡單的處理,也可以是使用面向合作伙伴的API網關,
如果使用獨立的API網關,有以下的好處:
? 面向合作伙伴和面向公司主體業務的優先級不一樣,不同的API網關可以做到業務影響的隔離,
? 內部API使用的管理流程和面向合作伙伴的管理流程可能不一樣,
? 內部的API在功能擴展等方面的需求一般會大于OpenAPI對于功能的要求,
基于以上的分析,如果公司有能力,那么還是建議分開使用合作伙伴OPEN API網關和內部公網應用網關,
四、API網關解決方案
私有云解決方案如下:
? Kong是基于Nginx+Lua進行二次開發的方案
https://konghq.com/
? Eolinker和Kong比較接近,但是因為是國內公司開發的,后續的技術支持和培訓比較友好,
https://www.eolinker.com
? Netflix Zuul,zuul是spring cloud的一個推薦組件, https://github.com/Netflix/zuul
? orange,這個開源程式也是國人開發的,不過這個是個人開發不是公司,
http://orange.sumory.com/
公有云解決方案:
? Amazon API Gateway, https://aws.amazon.com/cn/api-gateway/
? 阿里云API網關, https://www.aliyun.com/product/apigateway/
? 騰訊云API網關, https://cloud.tencent.com/product/apigateway
自開發解決方案:
? 基于Nginx+Lua+ OpenResty的方案,可以看到Eolinker,Kong,orange都是基于這個方案,
? 基于Netty、非阻塞IO模型,通過網上搜索可以看到國內的宜人貸等一些公司是基于這種方案,
? 基于Node.js的方案,這種方案是應用了Node.js天生的非阻塞的特性,
? 基于java Servlet的方案,zuul基于的就是這種方案,這種方案的效率不高,這也是zuul總是被詬病的原因,
五、企業怎么選擇API網關
現在的亞馬遜、阿里、騰訊云都在提供基礎公有云的API網關,當然這些網關的基礎功能肯定是沒有問題,但是二次開發,擴展功能、監控功能可能就不能滿足部分用戶的定制需求了,
另外很多企業因為自身資訊安全的原因,不能使用外網公有網的API網關服務,這樣就只有選擇私有云的方案了,
在需求上如果基于公有云的API網關只能做到由內部人員為外網人員申請應用,無法做到定制的合作伙伴門戶,這也不適合于部分企業的需求,
如果作為微服務網關,大多數情況下是希望網關服務器和服務提供方服務器是要在內網的,在這里情況下也只有私有云的API網關才能滿足需求,
綜合上面的分析,基礎公有云的API網關只有滿足一部分簡單客戶的需求,對于很多企業來說私有云的API網關才是正確的選擇,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249358.html
標籤:其他
