微服務最佳實踐中,我們需要通過統一的 api 閘道器進行服務能力的共享,api 閘道器為使用者提供發布、管理、保護和監控 api的能力,幫助使用者在自己的多個系統之間,或者內部系統與合作夥伴以及第三方的系統之間實現跨系統、跨協議的服務能力互通。
api閘道器應用場景
api閘道器有三種典型的應用場景:
內部業務整合:規範系統間api介面,快速完成企業內部系統的解耦及前後端分離,實現可管可控的相互訪問。
對外能力開放:將企業內部服務能力以標準api的形式開放給外部合作夥伴或第三方,與外部使用者可管可控地共享服務、能力和資料,達成深度合作,共建新生態。
交付標準化:實現軟體交付的標準化,提高交付質量,以及確保軟體可迭代。
作為後端服務的統一訪問入口,除了服務路由的基本功能,api閘道器還可以加持服務治理,保證後端服務的穩定性,比如整合流控和熔斷功能,前者可以防止服務被惡意攻擊,後者能在後端服務發生異常的情況下保證不會發生「雪崩」效應。
輕舟微服務api閘道器實踐
網易雲輕舟微服務平台包括了api閘道器元件,嚴格意義上講,api閘道器並不算nsf內元件,但以網易微服務實踐經驗來看,api閘道器又是微服務架構下的一款非常主要的工具型元件。spring cloud提供了zuul作為api閘道器元件,提供了主體功能,但功能相對單薄,**效率一般(1.x是同步模式,2.x已改為非同步),較難滿足閘道器生態需求。我們團隊在nsf研發前,已經自研了一套包括服務閘道器(gateway)+閘道器自助管控平台(gportal)系統,提供了較完善的api閘道器解決方案。
先看一下api閘道器與nsf整合的架構:
可以看出,api閘道器為微服務集群提供了外部呼叫認證、服務/api管控、路由、審計等能力的解決方案。
基礎請求**:採用servlet3.0+httpasyncclient實現非同步化,單點萬級tps**能力;
審計與統計分析:對服務請求進行非同步審計與統計分析,多維度審計查詢、統計圖表、依賴拓撲展示;
服務治理能力:融合eureka服務註冊/發現,閘道器層熔斷、執行緒隔離、限流;
自定義外掛程式:基於groovy自定義filter、路由外掛程式;
統一認證:基於rbac統一認證請求合法性;
服務知識庫與發布:形成了標準化api管理、匯入/匯出、swagger/markdown文件、發布/下線,基於openapi的微服務規範流程控制(網易雲內部在用標準);
api測試:基於api元資料與發布環境,快速完成api的測試;
sla與報警:提供服務sla檢查與執行時監控報警。
輕舟微服務api閘道器應用
在德邦快遞的微服務實踐中,api閘道器提供了統一的認證、鑑權、api 監控、熔斷、限流、降級等功能。當然,熔斷、限流、降級在註冊中心也會進行一次。
通過自定義分流外掛程式功能,德邦快遞可以靈活地針對全國不同地區的客戶進行不同處理。而通過流量映象功能,德邦快遞可以通過閘道器複製流量到壓測環境中,從而更好地進行壓測。
微服務API閘道器
微服務api閘道器 api閘道器是乙個伺服器,是系統的唯一入口。從物件導向設計的角度看,它與外觀模式類似。api閘道器封裝了系統內部架構,為每個客戶端提供乙個定製的api。它可能還具有其它職責,如身份驗證 監控 負載均衡 快取 請求分片與管理 靜態響應處理。api閘道器方式的核心要點是,所有的客戶端...
微服務 API閘道器 限流
我們在api閘道器中已經介紹了,限流是保護閘道器的手段之一,和身份認證以及鑑權一起組成安全防禦大閘。其目的是對併發請求進行限速或限制乙個時間視窗內請求的數量,一旦達到閾值就排隊等待或降級甚至拒絕服務。根據上面列出的原因,我們自然知道限流該怎麼限制法,但是具體要怎麼實現呢?也就是該怎麼設計演算法來實現...
微服務學習六 API閘道器
在微服務架構中,通常會有多個服務提供者。設想乙個電商系統,可能會有商品 訂單 支付 使用者等多個型別的服務,而每個型別的服務數量也會隨著整個系統體量的增大也會隨之增長和變更。作為ui端,在展示頁面時可能需要從多個微服務中聚合資料,而且服務的劃分位置結構可能會有所改變。閘道器就可以對外暴露聚合api,...