-
1 # 木杳子
-
2 # 攻乘獅
在我們講的微服務架構下的API閘道器,一般指的是前三類使用場景。即,主要是把企業內部的API能力,暴露給其他應用或合作伙伴使用。閘道器層作為客戶端與服務端的一層擋板,主要起到了三大類作用:
第一類作用是隔離作用,作為企業系統邊界,隔離網路系統與內網系統。
第二類作用是解耦作用,透過解耦,使得微服務系統的各方能夠獨立、自由、高效、靈活地調整,而不用擔心給其他方面帶來影響。
第三類作用是腳手架作用,提供了一個地點,方便透過擴充套件機制對請求進行一系列加工和處理。
二:閘道器的好處
(1)閘道器層對外部和內部進行了隔離,保障了後臺服務的安全性。
(2)對外訪問控制由網路層面轉換成了運維層面,減少變更的流程和錯誤成本
(3) 減少客戶端與服務的耦合,服務可以獨立發展。透過閘道器層來做對映。
(4)透過閘道器層聚合,減少外部訪問的頻次,提升訪問效率。
(5)節約後端服務開發成本,減少上線風險。
(6)為服務熔斷,灰度釋出,線上測試提供簡單方案。
(7)便於擴充套件。
三:API閘道器需要考慮的因素
1、安全性問題
企業在把服務暴露給外部使用時,首先要確保服務使用的安全,防止外部的惡意訪問對公司業務的影響,特別是涉及交易方面的服務,更是要全面考慮安全性。為確保安全,需要考慮在通訊鏈路的建立、通訊資料的加密、資料的完整性、不可抵賴性等方面。
2、效能問題
作為企業API的入口,所有的請求都會經過API閘道器進行轉發,可想而知,對API閘道器的訪問壓力是巨大的,有的網站甚至達到每分鐘上千萬的訪問量。特別是在一些網際網路企業,海量的移動終端每時每刻都需要與後端的服務進行互動,如果不能保證閘道器的高效能,企業在閘道器層需要投入大量的裝置和成本。曾在一家網際網路公司發生過,由於閘道器效能問題,閘道器的機器數量,需要與後臺伺服器的數量保持同步增長。這種情況顯然是企業服務忍受的。
四:API閘道器的功能
企業級API閘道器應該提供下列的功能:
API閘道器功能
1.服務路由:外部服務訪問介面對映到對應的內部服務訪問介面。
2.認證授權:提供對使用者身份的認證以及使用者許可權驗證,包括使用者身份的合法性、針對使用者角色的訪問授權驗證、針對使用者的訪問授權驗證、IP 黑名單驗證等。
3.超時處理:當 API 閘道器呼叫的內部服務響應時間超過了在自主開發的 API 閘道器後臺管理子系統中所設定的允許最長的超時時間時,API 閘道器會立即停止呼叫,並返回相關訊息給你。
4.限流控制:當你透過 API 閘道器呼叫內部服務的頻率達到在某個閾值時,API 閘道器會立即做斷開鏈路處理。過了時間後,鏈路會自動閉合回去。
5.熔斷處理:熔斷處理對避免無謂的資源消耗特別有用,當透過 API 閘道器呼叫的內部服務出現異常的頻率達到某個閾值時,那麼 API 閘道器會做臨時熔斷處理即臨時斷開鏈路,暫時停止你對那個內部服務的呼叫。臨時熔斷後,過了一段時間後,鏈路會自動閉合回去。
6.日誌資訊記錄:會記錄客戶 IP、客戶請求引數、返回結果、異常資訊等資訊。
7.負載均衡: 提供API介面的負載均衡,能夠處理API介面的高併發訪問,防止服務雪崩。
8.安全防護:提供嚴格的認證服務,支援演算法簽名,使用者使用 API 閘道器提供的金鑰進行認證,沒有被授予金鑰的客戶端無法呼叫業務 API介面,經過認證授權的請求才能到達後端應用服務。同時SSL 加密。
9.灰度釋出:支援API介面線上灰度部署,減少應用版本切換風險。
回覆列表
技術選型
企業api閘道器現在越來越多被大型企業選擇,可以瞭解nginx體系下的openresty,openresty edge,kong。java體系下的spring cloud gateway作為選型。一般完全自研沒必要的,門檻有點高。
需求範圍企業api閘道器是個統稱,包含的功能很多,如資料路由,協議轉換,熔斷,限流,應用防火牆,灰度釋出等等。如果要自主研發,先明確下需求範圍。
高可用企業閘道器作為一個流量入口,自身的高可用要求很高,有問題如同斷網的影響。需應用和系統架構師商討設計。