API網(wǎng)關(guān)的功能用途及實現(xiàn)方式
發(fā)布日期:2023/1/17 15:30:38 瀏覽量:
轉(zhuǎn)自博客園 原文鏈接:https://www.cnblogs.com/east4ming/p/17057454.html
如有侵權(quán)請聯(lián)系我們刪除
1. API 網(wǎng)關(guān)誕生背景
前言
API 經(jīng)濟生態(tài)鏈已經(jīng)在全球范圍覆蓋, 絕大多數(shù)企業(yè)都已經(jīng)走在數(shù)字化轉(zhuǎn)型的道路上,API 成為企業(yè)連接業(yè)務(wù)的核心載體, 并產(chǎn)生巨大的盈利空間??焖僭鲩L的 API 規(guī)模以及調(diào)用量,使得企業(yè) IT 在架構(gòu)上、模式上面臨著更多的挑戰(zhàn)。
API 是什么
API 網(wǎng)關(guān)是一個服務(wù)器,是系統(tǒng)的唯一入口。從面向?qū)ο笤O(shè)計的角度看,它與外觀模式類似。API 網(wǎng)關(guān)封裝了系統(tǒng)內(nèi)部架構(gòu),為每個客戶端提供一個定制的 API。它可能還具有其它職責(zé),如身份驗證、監(jiān)控、負(fù)載均衡、緩存、請求分片與管理、靜態(tài)響應(yīng)處理。API 網(wǎng)關(guān)方式的核心要點是,所有的客戶端和消費端都通過統(tǒng)一的網(wǎng)關(guān)接入微服務(wù),在網(wǎng)關(guān)層處理所有的非業(yè)務(wù)功能。通常,網(wǎng)關(guān)也是提供 REST/HTTP 的訪問 API。服務(wù)端通過 API-GW 注冊和管理服務(wù)。
1. API 開放數(shù)量不斷增加
毋庸置疑,隨著企業(yè)的數(shù)據(jù)化進展,微服務(wù)改造,不同領(lǐng)域的 API 層出不窮,早在 2014 年 ProgrammableWeb 便預(yù)測 API 矢量可達(dá)到 100,000 到 200,000,并會不斷增長。API 開發(fā)數(shù)量的增加給邊緣系統(tǒng)帶來機會,也隨即演變了 API 網(wǎng)關(guān)的出現(xiàn)。大規(guī)模的 API 管理系統(tǒng)成為核心的發(fā)展趨勢。
2. API 服務(wù)平臺多樣化
最初的 API 主要針對不同單體應(yīng)用的網(wǎng)絡(luò)單元之間信息交互,現(xiàn)已演變到服務(wù)間快速通訊。隨著人工智能 EI,IOT 的不斷演進,依賴 API 的平臺不斷更新,如 Web,Mobile,終端等,未來將會出現(xiàn)更多的服務(wù)體系。包括不限于:
- 瀏覽器
- IOS
- Android
- macOS
- Windows
- Linux
- IOT
- 其他移動端
- 小程序
- 終端設(shè)備(如智慧零售、工業(yè)的終端等)
- ......
3. 逐步替換原有企業(yè)的服務(wù)模式,API 即商品
賣計算,賣軟件,賣能力,最終的企業(yè)的銷售模式會逐步轉(zhuǎn)變,能力變現(xiàn),釋放數(shù)據(jù)價值,依托不同的 API 管理平臺創(chuàng)造新的盈利。
API 網(wǎng)關(guān)誕生背景
隨著 API 的整體趨勢發(fā)展,每個時期都面臨著不同的挑戰(zhàn),架構(gòu)也隨之變化,具體如下圖:
- 1960-1980:阿帕網(wǎng)、ATTP、TCP
- 1980-1990:點對點
- 1990-2000:消息中間件、ESB(企業(yè)服務(wù)總線,Enterprise service bus),SOA(面向服務(wù)的架構(gòu))
- 2000 至今:Integration as a service,RESTful services,API 管理,云上編排
從最原始的“傳輸協(xié)議通訊” -> “簡單的接口集成” -> “消息中間件” -> “標(biāo)準(zhǔn) REST”, 可以看到 API 的發(fā)展更趨向于簡潔, 集成,規(guī)范化, 這也促使更多的系統(tǒng)邊界組件不斷涌現(xiàn),在承載了萬億級的 API 經(jīng)濟的背景下, API 網(wǎng)關(guān)應(yīng)運而生。
如果沒有合適的 API 管理工具, API 經(jīng)濟不可能順利開展。 同時提出了對于 API 管理系統(tǒng)的生命周期定義: planning(規(guī)劃), design(設(shè)計), implementation(實施), publication(發(fā)布),operation(運維), consumption(消費), maintenance(維護) and retirement of APIs(下架)
如果沒有合適的 API 管理工具, API 經(jīng)濟不可能順利開展。 同時提出了對于 API 管理系統(tǒng)的生命周期定義: planning(規(guī)劃), design(設(shè)計), implementation(實施), publication(發(fā)布),operation(運維), consumption(消費), maintenance(維護) and retirement of APIs(下架)
-- Magic Quadrant for Full Life Cycle API Management,Gartner, 2016-10-27
2. API 網(wǎng)關(guān)核心功能
-
API 生命周期管理
- planning(規(guī)劃)
- design(設(shè)計)
- implementation(實施)
- publication(發(fā)布)
- operation(運維)
- consumption(消費)
- maintenance(維護)
- retirement(下架)
-
API 網(wǎng)關(guān)基礎(chǔ)功能
- 認(rèn)證
- 鑒權(quán)
- 服務(wù)發(fā)現(xiàn)和集成
- 負(fù)載均衡
- 日志
- 鏈路追蹤
- 監(jiān)控
- 重試
- 限流
- QoS
- 熔斷器
- 映射
- 緩存
- Header、query 字符串 等 轉(zhuǎn)義
- API 文檔
- API 測試
- SDK 生成
- API 多版本、多環(huán)境管理
- 插件
- API 集中式 metrics、logging、tracing 管理
-
安全
- HTTPS
- IP 黑白名單
-
高可用
- 可熱重啟
- 高性能
-
可擴展性
- 無狀態(tài)橫向擴展
3. API 網(wǎng)關(guān)的用途
OpenAPI
企業(yè)需要將自身數(shù)據(jù)、能力等作為開發(fā)平臺向外開放,通常會以 rest 的方式向外提供。最好的例子就是淘寶開放平臺、騰訊公司的 QQ 開發(fā)平臺、微信開放平臺。
Open API 開放平臺必然涉及到客戶應(yīng)用的接入、API 權(quán)限的管理、調(diào)用次數(shù)管理等,必然會有一個統(tǒng)一的入口進行管理,這正是 API 網(wǎng)關(guān)可以發(fā)揮作用的時候。
微服務(wù)網(wǎng)關(guān)
在微服務(wù)架構(gòu)中,有一個組件可以說是必不可少的,那就是微服務(wù)網(wǎng)關(guān),微服務(wù)網(wǎng)關(guān)處理了負(fù)載均衡,緩存,路由,訪問控制,服務(wù)代理,監(jiān)控,日志等。
API 網(wǎng)關(guān)在微服務(wù)架構(gòu)中正是以微服務(wù)網(wǎng)關(guān)的身份存在。
API 中臺
上述的微服務(wù)架構(gòu)對企業(yè)來說有可能實施上是困難的,企業(yè)有很多遺留系統(tǒng),要全部抽取為微服務(wù)改動太大,對企業(yè)來說成本太高。
但是由于不同系統(tǒng)間存在大量的 API 服務(wù)互相調(diào)用,因此需要對系統(tǒng)間服務(wù)調(diào)用進行管理,清晰地看到各系統(tǒng)調(diào)用關(guān)系,對系統(tǒng)間調(diào)用進行監(jiān)控等。
API 網(wǎng)關(guān)可以解決這些問題,我們可以認(rèn)為如果沒有大規(guī)模的實施微服務(wù)架構(gòu),那么對企業(yè)來說微服務(wù)網(wǎng)關(guān)就是企業(yè)的 API 中臺。
4. API 網(wǎng)關(guān)的價值
通過 API 網(wǎng)關(guān),可以封裝后端各種服務(wù),以 API 的形式,提供給各方使用。API 網(wǎng)關(guān)產(chǎn)品的優(yōu)勢總結(jié)如下:
- API 全生命周期管理:協(xié)助開發(fā)者輕松完成 API 的創(chuàng)建、維護、發(fā)布、監(jiān)控等整個生命周期的管理。
- 豐富的服務(wù)治理能力:支持 API 限流,參數(shù)校驗,元數(shù)據(jù)維護,SDK 生成,批量操作等能力,協(xié)助開發(fā)者高效管理服務(wù)。
- 可觀察性:通過 API 網(wǎng)關(guān),支持對調(diào)用次數(shù),前后端錯誤次數(shù)等豐富監(jiān)控指標(biāo)的可視和告警能力;通過全面的監(jiān)控告警,保證用戶服務(wù)的可用性。
- 可運營性:支持 企業(yè) OpenAPI 定價,賬單等運營功能
- 服務(wù)安全:通過接入多種認(rèn)證方式,確保用戶 API 的訪問安全性;通過嚴(yán)格的流量控制,避免用戶服務(wù)的過載。
- 前后端業(yè)務(wù)解耦
- 多類型后端打通
5. API 網(wǎng)關(guān)的實現(xiàn)方式
主流 API 網(wǎng)關(guān)
- Istio(以及最新出的 Envoy Gateway)
- Linkerd
- NGINX 及其商業(yè)版
- KONG
- Traefik
- APISIX
- RedHat 3scale
- Netflix Zuul
- Spring Cloud Gateway
- Amazon API Gateway
- 阿里云 API 網(wǎng)關(guān)(其最新開源的 Higress 是基于 Envoy Gateway 的)
- 騰訊云 API 網(wǎng)關(guān)
- MuleSoft
OpenAPI
對于定位 OpenAPI 平臺的 API 網(wǎng)關(guān),目前只能選擇專業(yè)的 API 網(wǎng)關(guān)作為解決方案。
微服務(wù)網(wǎng)關(guān)
對于定位為「微服務(wù)網(wǎng)關(guān)」的 API 網(wǎng)關(guān),業(yè)務(wù)有多種實現(xiàn)方式:
Service Mesh
典型的如 Istio,架構(gòu)如下:

通用反向代理
基于 NGINX 或 NGINX + LUA + OpenResty 的實現(xiàn)。典型如:
-
Nginx 及其 商業(yè)版
- NGINX Controller(API 管理、App 交付)
- NGINX Plus(API Gateway,負(fù)載均衡,儀表板)
- NGINX Ingress Controller
- NGINX Service Mesh
- KONG
- Traefik
- 3scale
API 網(wǎng)關(guān)框架
- Netflix Zuul,zuul 是 spring cloud 的一個推薦組件
- Spring Cloud Gateway
公有云解決方案
其實公有云的解決方案也是基于以上方案的定制化開發(fā)并產(chǎn)品化后發(fā)布到公有云上,主流的也是基于:NGINX + LUA + OpenResty, 或者最新的可能是基于 Istio Gateway 的實現(xiàn)
其他方案
- 基于 Netty、非阻塞 IO 模型。
- 基于 Node.js 的方案。這種方案是應(yīng)用了 Node.js 的非阻塞的特性。
- 基于 Java,如 MuleSoft
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生