微服務閘道器的功能簡介說明

2022-10-11 16:24:13 字數 1731 閱讀 9651

微服務閘道器作為微服務後端服務的統一入口(entry point),它可以統籌管理後端服務,主要分為資料平面(data plane)和控制平面(control plane)。

資料平面的主要功能是接入使用者的http請求和微服務被拆分後的聚合。使用微服務閘道器統一對外暴露後端服務的api和契約,路由和過濾功能正是閘道器的核心能力模組。另外,微服務閘道器可以實現攔截機制和專注跨橫切面(cross-cuttingconcerns)的功能,包括協議轉換、安全認證、熔斷限流、灰度發布、日誌管理、流量監控等。

控制平面的主要功能是對後端服務做統一的管控和配置管理。

路由功能

路由是微服務閘道器的核心能力。通過路由功能微服務閘道器可以將請求**到目標微服務。在微服務架構中,閘道器可以結合註冊中心的動態服務發現,實現對後端服務的發現,呼叫方只需要知道閘道器對外暴露的服務api就可以透明地訪問後端微服務。

負載均衡

api閘道器結合負載均衡技術,利用eureka或者consul等服務發現工具,通過輪詢、指定權重、ip位址雜湊等機制實現下游服務的負載均衡。

協議轉換

api閘道器的一大作用在於構建異構系統,api閘道器作為單一入口,通過協議轉換整合後台基於rest、amqp、dubbo等不同風格和實現技術的微服務,面向web mobile、開放平台等特定客戶端提供統一服務。

安全認證

一般而言,無論對內網還是外網的介面都需要做使用者身份認證,而使用者認證在一些規模較大的系統中都會採用統一的單點登入(single sign on)系統,如果每個微服務都要對接單點登入系統,那麼顯然比較浪費資源且開發效率低。api閘道器是統一管理安全性的絕佳場所,可以將認證的部分抽取到閘道器層,微服務系統無須關注認證的邏輯,只關注自身業務即可。常見的安全性技術(如金鑰交換、客戶端認證與報文加解密等)都可以在api閘道器中實現。

黑白名單

微服務閘道器可以使用系統黑名單,過濾http請求特徵,攔截異常客戶端的請求,例如ddos攻擊等侵蝕頻寬或資源迫使服務中斷等行為,可以在閘道器層面進行攔截過濾。比較常見的攔截策略是根據ip位址增加黑名單。在存在鑑權管理的路由服務中可以通過設定白名單跳過鑑權管理而直接訪問後端服務資源。

限流熔斷

在某些場景下需要控制客戶端的訪問次數和訪問頻率,一些高併發系統有時還會有限流的需求。在閘道器上可以配置乙個閾值,當請求數超過閾值時就直接返回錯誤而不繼續訪問後台服務。當出現流量洪峰或者後端服務出現延遲或故障時,閘道器能夠主動進行熔斷,保護後端服務,並保持前端使用者體驗良好。

服務管控

閘道器可以統計後端服務的請求次數,並且可以實時地更新當前的流量健康狀態,可以對url粒度的服務進行延遲統計,也可以使用hystrix dashboard檢視後端服務的流量狀態及是否有熔斷發生。

日誌審計

微服務閘道器可以作為統一的日誌記錄和收集器,對服務url粒度的日誌請求資訊和響應資訊進行攔截。

四、對微服務閘道器的理解

上述通過官方的話語描述了微服務閘道器,下面談一下個人對微服務閘道器的理解。

首先,微服務閘道器和註冊中心的區別:註冊中心重點是對內的,微服務閘道器重點是對外的。對內的意思是,乙個整體專案的內部多個微服務之間的相互呼叫,通過註冊中心獲取位址,然後進行呼叫。對外的意思是,整體專案建設完成後,需要對外提供介面,供外部客戶端進行訪問,但是整體專案是由多個微服務例項構成的,那麼介面位址也就有很多,微服務閘道器的作用就是提供統一的對外介面,然後閘道器再路由**到對應的微服務上。

上述只是微服務閘道器的一種作用。總之,微服務閘道器的核心就是在微服務之前加一層,把微服務公共的需求,許可權認證,等等需要綜合管理多個微服務的功能,都加到閘道器層,其有點類似於單體專案中的filter的作用 

微服務 閘道器

3 很難重構 二 定義 三 閘道器的用途 四 優缺點 缺點 五 實現 採用反應性程式設計模型 服務呼叫 服務發現 處理部分失敗 netflix hysrix 對於實現遠端服務呼叫 來說是乙個非常好用的庫。hystrix記錄那些超過預設定的極限值的呼叫。它實現了circuit break模式,使得可以...

微服務閘道器

1.什麼是微服務閘道器 api閘道器是乙個伺服器,是系統對外的唯一入口。api閘道器封裝了系統內部架構,為每個客戶端提供乙個定製的api。api閘道器方式的核心要點是 所有的客戶端和消費端都通過統一的閘道器接入微服務,在閘道器層處理所有的非業務功能。2.為什麼需要微服務閘道器 首先是需要路由器功能,...

微服務閘道器

nacos配置中心 限流 工程名稱api gateway org.springframework.cloudgroupid spring cloud starter gatewayartifactid dependency server port 9000 spring name api gatew...