前言
在微服務架構中,API 網關起着不可或缺的重要作用。
簡單舉個例子,API 相當于是我們擷取資訊的資料線,而當這樣的“資料線”過多時,我們很難對這麼多的 API 進行管控。這時候的 API 網關就相當于是一個收納工具+ 保護套,幫我們把各式各樣的 API 進行統一管理,并維護 API 的安全性與穩定性。
然而實際上API網關的功能遠遠不止上述舉例中的那麼簡單,它要更加強大更高效。今天我們就來詳細介紹一下 API 網關與 API 網關的功能。
API 網關介紹
API 網關,API Gateway,即兩個互相獨立的區域網路之間通過路由器進行通信,中間的路由被稱之為網關。
任何一個應用系統如果需要被其他系統調用,就需要暴露 API,這些 API 代表着一個一個的功能點。如果兩個系統中間通信,在系統之間加上一個中介者協助 API 的調用,這個中介者就是 API 網關。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuUjN4gDM5YjNtMTM2AzM4UzNxATM4AjMyAjMtATM4UDM4IzLchDMyIDMy8CXwEDO1ADOy8CXyVGa092Lc12bj5ycn9Gbi52YuIjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
API 網關主要功能
API 網關基本功能包含了 統一接入、協定适配、流量管理與容錯、以及安全防護四大基本功能。
API 網關 以統一接入為核心功能,然後将請求的協定轉換為内部的接口協定,在調用得過程中還要有限流、降級、熔斷等 容錯的方式來保護網關的整體穩定,同時網關還要做到基本的安全防護,以及黑白名單等基本安全措施。
統一接入
提供統一的入口 來通路内部的 API , 隔離外部通路與内部系統,保護微服務 API 。統一對外的 API ,友善外部調用,對内再調用相應的微服務 API 。
簡單而言 API 就是對外提供統一的接口,内部再去條用相應的請求接口。對外接收用戶端請求,對内調用微服務 REST API 。
請求适配
API 網關并不是僅僅進行用戶端請求的路由,API 網關還負責對請求進行處理,将外部請求适配成内部請求,請求的适配主要有:
- 協定轉化:
在微服務系統中不一定都是使用同一種協定進行通信,除了 http 協定還可以轉換成其他更合适更高效得協定。
- 資料校驗與轉換:
校驗必要的資料字段,或者進行資料格式轉化
- 相應合并:
把業務上需要調用多個服務接口才能完成的工作合并成一次調用 對外統一提供服務。
流量管理與容錯
API 網關作為整個微服務系統的入口,需要對請求流量進行監控,避免造成内部過載或 API 網關崩潰。
- 負載均衡:
負載均衡是分布式架構的重點,負載均衡機制決定着整個服務叢集的性能與穩定。
- 限流:
限流是必須的元件,限流做不好的話,請求量突增時很容易導緻業務放的服務挂掉,
- 熔斷和降級:
網關的性能決定整體請求的響應,若某個服務挂掉、接口影響嚴重逾時,API 網關會對故障服務進行熔斷降級,直接傳回錯誤。
安全防護
API 網關通過提供額外的安全層幫助阻止大規模攻擊。
這些攻擊包括 SQL 注入,XML 解析漏洞和 DoS 攻擊, API 網關實作了安全層,降低了各個微服務的複雜度。
- 安全認證:
- 基于 Token 的用戶端安全政策和通路權限
- 基于 Https 的傳輸加密,
- 基于 OAuth 2.0 的服務安全認證
- 黑白名單:
建構黑白名單可以将一些惡意請求的 ip 位址禁止通路系統。
總結
API 網關的功能主要包含以上四點,總的來說, API 網關能實作對外統一接口,對内進行負載均衡的功能也極大地友善了 API 系統的開發與維護。
上述示範圖中的 API 微服務網關工具為 Eolink ,它是一個能夠實作高性能 HTTP 轉發、API 通路權限控制等目的的微服務網關,擁有強大的自定義插件系統可以自行擴充,能夠快速幫助企業進行 API 服務治理、提高 API 服務的穩定性和安全性。
如果有興趣,可自行使用:www.eolink.com