說了這麼久個「API網關」、「API Gateway」,所以到底什麼是「API網關」?
首先,我們先焦距於「網關」。除了叫做「網關」外,通常也有「閘道器」、「網路閘道器」、「通訊閘道器」。也就是「網關」,其實應該是「網路(Network)」和「閘道器(Gateway)」組成。我想現在應該沒人需要解釋「網路」是什麼,所以讓我們在更聚焦與「閘道器(Gateway)」一詞。
閘道器:它強調了網關作為不同網絡之間的「門戶」的作用,負責數據的進出和轉發。
---- 由生成式AI-Aria生成的結果後,再進行改寫調整
看看英文「Gate-way」一詞組成,「Gate」表示大門;「way」表示道路。意表管理特定道路的大門,決定在道路行走的人員、貨物、資訊是否可以通過、應該往哪個方向去。
如果你對於半導體或電腦基礎電路熟悉,可能聽過NOP Gate、邏輯閘或是看過下圖:
或是在動物園、博物館、遊樂園、車站門口,看過這麼些個裝置^1:
相較於動物園、博物館、捷運、臺鐵/高鐵檢票口,檢查的是人員的流動出入;或是高速公路的收費站、高乘載管制、停車場出入口,檢查的是車輛的流動進出。「網關」或是「網路閘道器」,檢查的是網路封包(packet)的流動進出。
那麼再進一步「API網路閘道器」呢?
API全名是「Application Programming Interface」,即「應用程式介面」。因此Web API通常指的是網路七層架構(OSI)的第七層--「應用層(Application Layer)」。
(圖片來源:https://en.wikipedia.org/wiki/Protocol_stack#/media/File:OSI_Model_v1.svg)
常見的「超文本傳輸協議(HyperText Transfer Protocol)」,也就是HTTP協議就是在這一層。HTTP API又以RESTful設計範式當前最爲出名。也因此API網關,也常常被視爲HTTP網關或REST網關。
API Gateway (大範疇,協議不限)
└── HTTP Gateway (專注 HTTP 協議)
└── REST Gateway (更特化,限定 RESTful API 風格)
(由ChatGPT生成)
(此圖片由ChatGPT生成)
你可能聽過物流中心,去過中心轉運站。像是臺北轉運站附近就包含了臺北火車站、臺北高鐵站、臺北捷運、臺北客運轉運站,附近還有許多大大小小的市區公車站牌。
這些地方,就像是大大小小的閘道結合在一起。形象一點就像是大型的道路交流道:
(圖片取自維基百科-臺南系統交流道。作者:Guanting17)
當然也可以將網路封包先集中到一處,再一併決定封包的去留,變成一個大型的網關,這就像是Kerberos(k8s)裡設計的Ingress Controller一樣。這麼做得好處,就是軟體有很好的彈性和復用性,因此可以透過邏輯上的一組網關,來管理特定網路功能。
Apache APISIX就是這麼一個網關。提供了A/B測試(流量分離)、藍綠部署、限速、可觀測性、身份授權驗證、格式轉換等能力的高性能網關。
你可以使用 APISIX 网关作为所有业务的流量入口,它提供了动态路由、动态上游、动态证书、A/B 测试、灰度发布(金丝雀发布)、蓝绿部署、限速、防攻击、收集指标、监控报警、可观测、服务治理等功能。
---- 〈APISIX文件-入門指南〉
總得來說,API網關是網路第7層的守門人。他控制有多少網路封包可以通過、能不能通過,通過了又應該再往哪個方向前進。
(圖片由AI生成)