學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

API網(wǎng)關(guān)你掌握多少了,來個查漏補缺?

來源:北大青鳥總部 2023年03月13日 13:45

摘要: API網(wǎng)關(guān)就是把所有的請求入口都匯聚成了一個地址,對于前端開發(fā)來說,只需要向一個URL發(fā)起請求,后續(xù)的請求處理全交由這個URL去管理分配。

對于已經(jīng)奔赴在職場的大學(xué)生們、準(zhǔn)備跳槽or看機(jī)會的朋友們,今天給大家上一堂API網(wǎng)關(guān)知識的查漏補缺課,希望能幫大家斬獲心儀的offer~


API網(wǎng)關(guān)是什么?

在介紹API網(wǎng)關(guān)是什么之前,我們需要知道網(wǎng)關(guān)是什么?網(wǎng)關(guān)又稱為協(xié)議轉(zhuǎn)換器,相當(dāng)于網(wǎng)絡(luò)之間的“關(guān)卡”,用于連接網(wǎng)絡(luò)。我們知道在沒有路由器的情況下,不同網(wǎng)段的網(wǎng)絡(luò)是不能進(jìn)行通信的,要實現(xiàn)通信就需要網(wǎng)關(guān),就像從一個房間走向另一個房間必須要經(jīng)過一扇門一樣。網(wǎng)關(guān)就像是連接器一樣,把不同的東西連接起來了。

隨著互聯(lián)網(wǎng)的興起,出現(xiàn)了復(fù)雜多變的應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)與應(yīng)用系統(tǒng)之間需要連接起來使得自己更加強(qiáng)大。例如:微信開發(fā)平臺就會把自己的能力作為開發(fā)平臺對外開放,企業(yè)利用微信公眾號的微信開發(fā)平臺二次開發(fā)就可以提供更加豐富的功能,在微信公眾號就可以接收告警系統(tǒng)的信息等。應(yīng)用系統(tǒng)內(nèi)部的功能模塊與功能模塊之間需要連接起來使得應(yīng)用的管理更加便捷。

應(yīng)用系統(tǒng)與應(yīng)用系統(tǒng)之間的能力、數(shù)據(jù)對外開放的模式就是openAPI,通過API網(wǎng)關(guān)可以統(tǒng)一管理客戶應(yīng)用的接入、API權(quán)限的管理、調(diào)用次數(shù)管理等。應(yīng)用內(nèi)部功能模塊與功能模塊之間的能力就是微服務(wù)API網(wǎng)關(guān),大家都知道隨著微服務(wù)架構(gòu)的流行,企業(yè)將服務(wù)拆分的更加細(xì)化,像淘寶這樣的業(yè)務(wù)包含幾千個微服務(wù),前端用戶的一個請求可能涉及到多個微服務(wù)模塊的調(diào)用,如果通過在調(diào)用的URL里寫明調(diào)用的后端API地址,程序猿們估計是要瘋了。每上線一個新服務(wù),需要申請域名、配置Nginx,由不同的運維人員去維護(hù),運維們估計也是要瘋了。



而API網(wǎng)關(guān)就是把所有的請求入口都匯聚成了一個地址,對于前端開發(fā)來說,只需要向一個URL發(fā)起請求,后續(xù)的請求處理全交由這個URL去管理分配。



API網(wǎng)關(guān)能做什么?

API網(wǎng)關(guān)會接管所有的入口流量,將所有的請求轉(zhuǎn)發(fā)給后端服務(wù)器。一個API網(wǎng)關(guān)最基本的功能有四個,即統(tǒng)一接入、協(xié)議適配、流量監(jiān)控與容錯、安全防護(hù)。

網(wǎng)關(guān)就是系統(tǒng)的唯一入口,進(jìn)入系統(tǒng)的所有請求都要經(jīng)過API網(wǎng)關(guān),就像去上學(xué)要走到對應(yīng)的教室、操場、圖書館、廁所都必須得通過校門才可以進(jìn)去。這就叫做統(tǒng)一接入。

協(xié)議適配還是比較好理解的。在一個龐大的應(yīng)用系統(tǒng)內(nèi)部,子系統(tǒng)使用不同協(xié)議來進(jìn)行開發(fā)通信是很正常的,但是子系統(tǒng)之間通信和數(shù)據(jù)傳輸就存在協(xié)議轉(zhuǎn)化的問題了,有的子系統(tǒng)可能使用HTTP協(xié)議通信,有的子系統(tǒng)使用Dubbo協(xié)議通信,那這兩個協(xié)議的數(shù)據(jù)格式不一致,二者就不能互通有無了,就像廣東人說廣東話,浙江人說浙江話,如果沒有統(tǒng)一的語言(比如普通話來進(jìn)行轉(zhuǎn)化),那么廣東人與浙江人是無法進(jìn)行交流的。同樣,有了API網(wǎng)關(guān)將不同的通信協(xié)議適配成通用協(xié)議(如json、xml),從此子系統(tǒng)與子系統(tǒng)之間的通信就再也不是問題了。雖然中國有56個民族,上百種方言,各地的人們聚集在一起使用普通話還是能進(jìn)行交流。



流量監(jiān)控與容錯主要指的是流量控制、服務(wù)降級。因為API網(wǎng)關(guān)是唯一的入口,所以當(dāng)后端服務(wù)無法承載業(yè)務(wù)請求時,如果流量持續(xù)的進(jìn)來就會導(dǎo)致有些請求無法處理,造成不好的用戶體驗。這時候通過API網(wǎng)關(guān)就可以限制流入的請求,讓后端服務(wù)器免受沖擊。就像全國各地的人來到北京要去參觀北大校園時,因為學(xué)校的空間有限,承載不了無限的人數(shù),保安就會通過校門攔截一部分游客,實現(xiàn)分流入園。服務(wù)降級就是指當(dāng)應(yīng)用服務(wù)出現(xiàn)異常時,通過API網(wǎng)關(guān)把用戶的請求導(dǎo)入到其它服務(wù)或者降級提示服務(wù)暫時不可用,同時再通過服務(wù)注冊中心監(jiān)聽存在問題的服務(wù),一旦服務(wù)恢復(fù)再把請求恢復(fù),就像是北大校園因為軍訓(xùn)原因而不能對外提供參觀服務(wù)時,保安就會告知游客白天無法參觀,傍晚不軍訓(xùn)時可進(jìn)入校園參觀。

安全防護(hù)主要是指統(tǒng)一的安全認(rèn)證、黑白名單等技術(shù)。安全是非常重要的,所以對于應(yīng)用服務(wù)器的請求都需要擁有權(quán)限,通過API網(wǎng)關(guān)來進(jìn)行權(quán)限認(rèn)證是最高效率的方式。目前系統(tǒng)常見的權(quán)限管理做法是用戶通過登陸服務(wù)獲取Token(標(biāo)記/令牌),把它存在客戶端,每次請求的時候把該Token放在Header里發(fā)送給服務(wù)器,API網(wǎng)關(guān)解析該Token,知道誰來訪問,能做什么事情,從而提高系統(tǒng)的安全性。


API網(wǎng)關(guān)的成長之路

隨著用戶的增多、業(yè)務(wù)接入的復(fù)雜、流量的增長,API網(wǎng)關(guān)也在不斷的成長,在每個階段核心要求都不一樣,總的來說包括三個階段,基礎(chǔ)階段、快速發(fā)展階段、平臺化階段。

在基礎(chǔ)階段,用戶規(guī)模不大、流量不多,因此只需要建設(shè)基礎(chǔ)能力即可,即統(tǒng)一接入、協(xié)議適配、服務(wù)注冊,能夠完成一個用戶請求從前端到后臺的操作。

在快速發(fā)展階段,用戶開始大量增長、業(yè)務(wù)規(guī)模也變得復(fù)雜、流量開始增多,這個時候API網(wǎng)關(guān)需要保障安全、穩(wěn)定、性能。對于穩(wěn)定,可以理解為無論什么時候都不要出現(xiàn)業(yè)務(wù)不可用的情況,通過對入口請求的限流、對后端服務(wù)的降級處理、將不同業(yè)務(wù)之間流量隔離、彈性伸縮動態(tài)擴(kuò)容實現(xiàn)業(yè)務(wù)的穩(wěn)定性,對于安全,可以理解為服務(wù)接入時進(jìn)行鑒權(quán)處理。對于性能,可以理解為通過豐富的性能測試場景(如基準(zhǔn)性能測試、容量性能測試、穩(wěn)定性測試、異常性測試)和線上監(jiān)控平臺的搭建,保障服務(wù)的業(yè)務(wù)可用、訪問不延遲。

在平臺化階段,用戶的增長、業(yè)務(wù)規(guī)模、流量已經(jīng)達(dá)到超大的量級,這時候API網(wǎng)關(guān)開始向開放平臺發(fā)展(比如微信公眾平臺),需要聚焦于第三方能高效接入、開放、安全。開放平臺就有點像SaaS的模式,需要有前端頁面,需要支持多租戶來允許多個用戶使用,需要有完善的解決方案、幫助文檔、支持中心、身份管理、信息維護(hù)、應(yīng)用創(chuàng)建等。而API的開放則涉及API的生命周期管理、API接口維護(hù)更新等。同時還需要對應(yīng)的運營管理能力支持,比如開發(fā)者管理、應(yīng)用管理、文檔管理、工單管理等。



在本文中我們對網(wǎng)關(guān)、API網(wǎng)關(guān)、API網(wǎng)關(guān)發(fā)展的三個階段進(jìn)行了查漏補缺的介紹,相信只要好好“復(fù)習(xí)”,大家也一定能收獲心儀的offer~各位加油咯


熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接