中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Spring cloud gateway定制的微服務網關

發布時間:2020-07-24 23:20:26 來源:網絡 閱讀:508 作者:java架構師1 欄目:編程語言

在構建微服務的架構體系過程中,API網關是一個非常重要的組件。那我們應該怎樣實現一個微服務API網關,本文主要介紹Spring Cloud Gateway的功能,以及如何基于Spring Cloud Gateway定制自己的網關。

基于Spring cloud gateway定制的微服務網關
Spring Cloud Gateway
Spring Cloud Gateway提供的是一個用于在Spring MVC之上構建API網關的library,它的目標是提供一種簡單而有效的方式路由API請求,它提供了一個切面,主要關注:安全、監控/metrics、彈性伸縮。
Spring Cloud Gateway 特性:

使用Spring Framework 5, Project Reactor 和 Spring Boot 2.0實現;
可以在請求的任何屬性上匹配路由;
通過Predicate 和 filter 指定路由;
集成了Hystrix 的熔斷機制;
集成了Spring Cloud 的服務發現機制;
易于編寫 Predicate 和 Filter;
請求限流;
重定向;

定制API網關的目標

從Spring cloud gateway的官方文檔中可以查到,它主要關注于安全、監控、彈性伸縮,但是它只是提供了開發這些功能的基礎,直接用于生產的話,用起來體驗不是很好。各種配置都是寫在application.yaml的配置文件中,修改起來不是很方便,每次修改都需要重啟服務,有一種不需要重啟服務的方法是使用配置中心;但是這些配置(路由策略、熔斷機制、限流策略等)配置不是很好記,不滿足國內軟件的要求(漂亮的配置后臺)。

安全:關于安全其實Spring cloud gateway本身并沒有任何實現,要想實現網關的安全控制,一般有兩種方式:依賴Spring boot security實現基于JWT(或者OAuth3) token的認證;另一種就是直接使用網關分配appId,來識別事先配置的權限。以上是API權限的控制,還有一種安全是參數防篡改的方法:對請求參數做簽名驗簽名。

API網關的安全目標是,支持多種安全方式自由選擇和組合,并且可以在管理后臺配置,實時生效。

動態路由:意思是在線修改路由配置,并實時生效。Spring cloud gateway自身提供的路由配置方式有兩種:編寫代碼和application.yaml中配置,在Spring cloud gateway啟動的時候加載到內存中,所以要修改路由的話也是需要重啟網關。但Spring cloud gateway提供了自定義路由RouteDefinitionRepository類的入口,并且還監聽了刷新路由事件RefreshRoutesEvent。

API網關的動態路由的目標是,支持在管理后臺配置和修改服務路由,并且實時生效。具體實現方式可以參考 動態路由的實現方式詳解。

熔斷、降級:在分布式系統中這兩個特性一般是同時出現,代表了系統容錯性。Spring cloud gateway中依賴Hystrix來實現,目前支持的是在application.yaml中配置熔斷和降級策略,這種配置方式,修改的話需要重啟網關。

API網關的熔斷降級配置目標是,支持在管理后臺操作:是否開啟斷路器、熔斷策略、調整降級方案,并且實時生效。

限流:API網關上一般會有大量請求,為了提供整體服務的可用性和穩定性,經常會對指定服務限流。當請求量達到限流上限的時候,可以選擇拒絕服務、排隊或者降級;Spring cloud gateway中依賴了redis來實現限流,通過KeyResolver來配置限流策略。它也存在同樣的問題,就是修改配置需要重啟服務。

API網關的限流目標是,支持管理后臺配置限流策略,以及速率調整,并且實時生效。
彈性伸縮:這一般是有基礎設施平臺提供的特性,一般的容器云平臺都是支持,實時監控API網關的壓力和健康狀態,自動做出相應的伸縮容處理。整個Spring cloud體系都是基于云原生的指導思想建設的,所以還是比較容易實現這一點的。

API網關的彈性伸縮目標是,支持標準的容器云平臺的部署,并且能提供平臺監控指標。
監控:監控是一個高可用系統必不可少的功能,Spring cloud gateway是通過Spring boot actuator實現可監控的,它可以輸出全方位的監控數據,并且還支持定制監控指標。還通過micrometer提供了多種監控數據格式的輸出,最常用的就是prometheus。

API網關的監控目標是,通過Actuator+Prometheus+Grafana三個工具組合來實現API網關的可視化監控,并且配置相應的報警。

API文檔:一個完美的API文檔是API網關臉面,因為接入API網關的應用(也就是API的用戶)最先看到的就是API文檔,作為程序員大家都不喜歡寫這種文檔,因此API網關必須能提供一種方法,方便輸出漂亮的API文檔。目前swagger ui早已在Spring cloud的后端微服務中流行開來,因此API網關需要將它們聚合起來。

API網關的API文檔目標是,通過聚合后端服務的swagger ui來實現API文檔的輸出,當然還需要結合安全特性來控制API文檔的權限。

實現一個API網關

上面設定了要實現一個API網關的各種目標(要求),并且論證了基于Spring cloud gateway實現它們的可行性,下面就需要依依實現它們了,最終你會發現,實現了一個阿里云的API網關。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扎赉特旗| 渝北区| 泰宁县| 丰镇市| 郎溪县| 安徽省| 大洼县| 集安市| 凤冈县| 樟树市| 五原县| 宜川县| 保亭| 丰都县| 武邑县| 安仁县| 福鼎市| 普兰县| 庆元县| 卓尼县| 阿拉善左旗| 巨野县| 白银市| 新野县| 新邵县| 安陆市| 监利县| 儋州市| 九寨沟县| 台北县| 曲松县| 和田市| 麻江县| 汉阴县| 宣汉县| 钟山县| 嵊泗县| 兰坪| 云安县| 乌鲁木齐市| 栾川县|