什么是API網關
API網關是一個服務器,是系統的唯一入口。從面向對象設計的角度看,它與外觀模式類似。API網關封裝了系統內部架構,為每個客戶端提供一個定制的API。它可能還具有其它職責,如身份驗證、監控、負載均衡、緩存、請求分片與管理、靜態響應處理。
API網關方式的核心要點是,所有的客戶端和消費端都通過統一的網關接入微服務,在網關層處理所有的非業務功能。通常,網關也是提供REST/HTTP的訪問API。服務端通過API-GW注冊和管理服務。
API網關解決的問題
客戶端請求多個微服務,增加客戶端復雜度
存在跨域,認證不統一問題
與微服務耦合太強,微服務變更,客戶端需要變更
如何構建API網關
API網關的作用
API網關所處的位置通常為:
使用API網關的好處:
易於監控
統一認證
減少客戶端與微服務交互,解耦接口依賴
網關大致分類
單節點API網關
Backends for frontends網關
開源網關
Netflix Zuul是一種提供動態路由、監視、彈性、安全性等功能的邊緣服務。Zuul是Netflix出品的一個基於JVM路由和服務端的負載均衡器(Spring Cloud使用)。
提供能力:
身份認證與安全
審查與監控
動態路由
壓力測試
負載分配
靜態響應處理
API網關存在的問題及解決方案
問題
拿單節點網關來說,這種網關相當於是處於 Web 層和 Service 之間,用來聚合服務的?注意,我們需要的是聚合服務,而以上這些開源項目都不具備這個功能,我說的聚合具體指的是開箱即用。
除了單點問題,還有一個問題,網關需要承擔日志,監控,安全,服務發現,版本控制等,甚至超時,熔斷,重試,聚合查詢等職能,這很容易造成性能問題。
解決方案
單點問題:Keepalived + LVS(LVS原理介紹) 保證一個網關掛掉時,迅速進行失效轉移
性能問題:雙重網關(雙重網關,外部網關處理安全,認證,限流,監控,日志等,內部網關處理緩存,重試,熔斷等)
————————————————
版權聲明:本文為CSDN博主「藏呆羊」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zangdaiyang1991/article/details/92573264