來源:北大青鳥總部 2023年03月13日 13:45
對于已經奔赴在職場的大學生們、準備跳槽or看機會的朋友們,今天給大家上一堂API網關知識的查漏補缺課,希望能幫大家斬獲心儀的offer~
在介紹API網關是什么之前,我們需要知道網關是什么?網關又稱為協議轉換器,相當于網絡之間的“關卡”,用于連接網絡。我們知道在沒有路由器的情況下,不同網段的網絡是不能進行通信的,要實現通信就需要網關,就像從一個房間走向另一個房間必須要經過一扇門一樣。網關就像是連接器一樣,把不同的東西連接起來了。
隨著互聯網的興起,出現了復雜多變的應用系統,應用系統與應用系統之間需要連接起來使得自己更加強大。例如:微信開發平臺就會把自己的能力作為開發平臺對外開放,企業利用微信公眾號的微信開發平臺二次開發就可以提供更加豐富的功能,在微信公眾號就可以接收告警系統的信息等。應用系統內部的功能模塊與功能模塊之間需要連接起來使得應用的管理更加便捷。
應用系統與應用系統之間的能力、數據對外開放的模式就是openAPI,通過API網關可以統一管理客戶應用的接入、API權限的管理、調用次數管理等。應用內部功能模塊與功能模塊之間的能力就是微服務API網關,大家都知道隨著微服務架構的流行,企業將服務拆分的更加細化,像淘寶這樣的業務包含幾千個微服務,前端用戶的一個請求可能涉及到多個微服務模塊的調用,如果通過在調用的URL里寫明調用的后端API地址,程序猿們估計是要瘋了。每上線一個新服務,需要申請域名、配置Nginx,由不同的運維人員去維護,運維們估計也是要瘋了。
而API網關就是把所有的請求入口都匯聚成了一個地址,對于前端開發來說,只需要向一個URL發起請求,后續的請求處理全交由這個URL去管理分配。
API網關會接管所有的入口流量,將所有的請求轉發給后端服務器。一個API網關最基本的功能有四個,即統一接入、協議適配、流量監控與容錯、安全防護。
網關就是系統的唯一入口,進入系統的所有請求都要經過API網關,就像去上學要走到對應的教室、操場、圖書館、廁所都必須得通過校門才可以進去。這就叫做統一接入。
協議適配還是比較好理解的。在一個龐大的應用系統內部,子系統使用不同協議來進行開發通信是很正常的,但是子系統之間通信和數據傳輸就存在協議轉化的問題了,有的子系統可能使用HTTP協議通信,有的子系統使用Dubbo協議通信,那這兩個協議的數據格式不一致,二者就不能互通有無了,就像廣東人說廣東話,浙江人說浙江話,如果沒有統一的語言(比如普通話來進行轉化),那么廣東人與浙江人是無法進行交流的。同樣,有了API網關將不同的通信協議適配成通用協議(如json、xml),從此子系統與子系統之間的通信就再也不是問題了。雖然中國有56個民族,上百種方言,各地的人們聚集在一起使用普通話還是能進行交流。
流量監控與容錯主要指的是流量控制、服務降級。因為API網關是唯一的入口,所以當后端服務無法承載業務請求時,如果流量持續的進來就會導致有些請求無法處理,造成不好的用戶體驗。這時候通過API網關就可以限制流入的請求,讓后端服務器免受沖擊。就像全國各地的人來到北京要去參觀北大校園時,因為學校的空間有限,承載不了無限的人數,保安就會通過校門攔截一部分游客,實現分流入園。服務降級就是指當應用服務出現異常時,通過API網關把用戶的請求導入到其它服務或者降級提示服務暫時不可用,同時再通過服務注冊中心監聽存在問題的服務,一旦服務恢復再把請求恢復,就像是北大校園因為軍訓原因而不能對外提供參觀服務時,保安就會告知游客白天無法參觀,傍晚不軍訓時可進入校園參觀。
安全防護主要是指統一的安全認證、黑白名單等技術。安全是非常重要的,所以對于應用服務器的請求都需要擁有權限,通過API網關來進行權限認證是最高效率的方式。目前系統常見的權限管理做法是用戶通過登陸服務獲取Token(標記/令牌),把它存在客戶端,每次請求的時候把該Token放在Header里發送給服務器,API網關解析該Token,知道誰來訪問,能做什么事情,從而提高系統的安全性。
隨著用戶的增多、業務接入的復雜、流量的增長,API網關也在不斷的成長,在每個階段核心要求都不一樣,總的來說包括三個階段,基礎階段、快速發展階段、平臺化階段。
在基礎階段,用戶規模不大、流量不多,因此只需要建設基礎能力即可,即統一接入、協議適配、服務注冊,能夠完成一個用戶請求從前端到后臺的操作。
在快速發展階段,用戶開始大量增長、業務規模也變得復雜、流量開始增多,這個時候API網關需要保障安全、穩定、性能。對于穩定,可以理解為無論什么時候都不要出現業務不可用的情況,通過對入口請求的限流、對后端服務的降級處理、將不同業務之間流量隔離、彈性伸縮動態擴容實現業務的穩定性,對于安全,可以理解為服務接入時進行鑒權處理。對于性能,可以理解為通過豐富的性能測試場景(如基準性能測試、容量性能測試、穩定性測試、異常性測試)和線上監控平臺的搭建,保障服務的業務可用、訪問不延遲。
在平臺化階段,用戶的增長、業務規模、流量已經達到超大的量級,這時候API網關開始向開放平臺發展(比如微信公眾平臺),需要聚焦于第三方能高效接入、開放、安全。開放平臺就有點像SaaS的模式,需要有前端頁面,需要支持多租戶來允許多個用戶使用,需要有完善的解決方案、幫助文檔、支持中心、身份管理、信息維護、應用創建等。而API的開放則涉及API的生命周期管理、API接口維護更新等。同時還需要對應的運營管理能力支持,比如開發者管理、應用管理、文檔管理、工單管理等。
在本文中我們對網關、API網關、API網關發展的三個階段進行了查漏補缺的介紹,相信只要好好“復習”,大家也一定能收獲心儀的offer~各位加油咯