真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于Springcloudgateway定制的微服務(wù)網(wǎng)關(guān)

在構(gòu)建微服務(wù)的架構(gòu)體系過程中,API網(wǎng)關(guān)是一個(gè)非常重要的組件。那我們應(yīng)該怎樣實(shí)現(xiàn)一個(gè)微服務(wù)API網(wǎng)關(guān),本文主要介紹Spring Cloud Gateway的功能,以及如何基于Spring Cloud Gateway定制自己的網(wǎng)關(guān)。

成都創(chuàng)新互聯(lián)公司客戶idc服務(wù)中心,提供達(dá)州服務(wù)器托管、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級技術(shù)保障。

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

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

定制API網(wǎng)關(guān)的目標(biāo)

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

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

API網(wǎng)關(guān)的安全目標(biāo)是,支持多種安全方式自由選擇和組合,并且可以在管理后臺配置,實(shí)時(shí)生效。

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

API網(wǎng)關(guān)的動態(tài)路由的目標(biāo)是,支持在管理后臺配置和修改服務(wù)路由,并且實(shí)時(shí)生效。具體實(shí)現(xiàn)方式可以參考 動態(tài)路由的實(shí)現(xiàn)方式詳解。

熔斷、降級:在分布式系統(tǒng)中這兩個(gè)特性一般是同時(shí)出現(xiàn),代表了系統(tǒng)容錯(cuò)性。Spring cloud gateway中依賴Hystrix來實(shí)現(xiàn),目前支持的是在application.yaml中配置熔斷和降級策略,這種配置方式,修改的話需要重啟網(wǎng)關(guān)。

API網(wǎng)關(guān)的熔斷降級配置目標(biāo)是,支持在管理后臺操作:是否開啟斷路器、熔斷策略、調(diào)整降級方案,并且實(shí)時(shí)生效。

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

API網(wǎng)關(guān)的限流目標(biāo)是,支持管理后臺配置限流策略,以及速率調(diào)整,并且實(shí)時(shí)生效。
彈性伸縮:這一般是有基礎(chǔ)設(shè)施平臺提供的特性,一般的容器云平臺都是支持,實(shí)時(shí)監(jiān)控API網(wǎng)關(guān)的壓力和健康狀態(tài),自動做出相應(yīng)的伸縮容處理。整個(gè)Spring cloud體系都是基于云原生的指導(dǎo)思想建設(shè)的,所以還是比較容易實(shí)現(xiàn)這一點(diǎn)的。

API網(wǎng)關(guān)的彈性伸縮目標(biāo)是,支持標(biāo)準(zhǔn)的容器云平臺的部署,并且能提供平臺監(jiān)控指標(biāo)。
監(jiān)控:監(jiān)控是一個(gè)高可用系統(tǒng)必不可少的功能,Spring cloud gateway是通過Spring boot actuator實(shí)現(xiàn)可監(jiān)控的,它可以輸出全方位的監(jiān)控?cái)?shù)據(jù),并且還支持定制監(jiān)控指標(biāo)。還通過micrometer提供了多種監(jiān)控?cái)?shù)據(jù)格式的輸出,最常用的就是prometheus。

API網(wǎng)關(guān)的監(jiān)控目標(biāo)是,通過Actuator+Prometheus+Grafana三個(gè)工具組合來實(shí)現(xiàn)API網(wǎng)關(guān)的可視化監(jiān)控,并且配置相應(yīng)的報(bào)警。

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

API網(wǎng)關(guān)的API文檔目標(biāo)是,通過聚合后端服務(wù)的swagger ui來實(shí)現(xiàn)API文檔的輸出,當(dāng)然還需要結(jié)合安全特性來控制API文檔的權(quán)限。

實(shí)現(xiàn)一個(gè)API網(wǎng)關(guān)

上面設(shè)定了要實(shí)現(xiàn)一個(gè)API網(wǎng)關(guān)的各種目標(biāo)(要求),并且論證了基于Spring cloud gateway實(shí)現(xiàn)它們的可行性,下面就需要依依實(shí)現(xiàn)它們了,最終你會發(fā)現(xiàn),實(shí)現(xiàn)了一個(gè)阿里云的API網(wǎng)關(guān)。


網(wǎng)頁標(biāo)題:基于Springcloudgateway定制的微服務(wù)網(wǎng)關(guān)
轉(zhuǎn)載源于:http://weahome.cn/article/jppsce.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部