欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

服務(wù)網(wǎng)關(guān)SpringCloudGateWay服務(wù)化和過(guò)濾器

前言

本文主要講解了網(wǎng)關(guān)代理單個(gè)服務(wù)的使用語(yǔ)法,在實(shí)際的工作中,服務(wù)的相互調(diào)用都是依賴于服務(wù)中心提供的入口來(lái)使用,服務(wù)中心往往注冊(cè)了很多服務(wù),如果每個(gè)服務(wù)都需要單獨(dú)配置的話,這將是一份很枯燥的工作。Spring Cloud Gateway 提供了一種默認(rèn)轉(zhuǎn)發(fā)的能力,只要將 Spring Cloud Gateway 注冊(cè)到服務(wù)中心,Spring Cloud Gateway 默認(rèn)就會(huì)代理服務(wù)中心的所有服務(wù),下面用代碼演示。

創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比焉耆網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式焉耆網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋焉耆地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

準(zhǔn)備服務(wù)和注冊(cè)中心

在介紹服務(wù)網(wǎng)關(guān) zuul 的使用時(shí),提供了 spring-cloud-eureka 、spring-cloud-producer 項(xiàng)目示例,本次演示我們將兩個(gè)項(xiàng)目版本升級(jí)到 Finchley.SR2 后繼續(xù)演示使用。

spring-cloud-eureka(Eureka Server) 的 pom 文件更改,其它依賴包不變。

升級(jí)前:

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

升級(jí)后:

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

spring-cloud-producer(Eureka Client)的 pom 文件更改。因?yàn)榕渲弥行男枰鳛榉?wù)注冊(cè)到注冊(cè)中心,所以需要升級(jí) Eureka Client,其他依賴沒(méi)有變動(dòng)。

升級(jí)前:

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

升級(jí)后:

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

兩個(gè)項(xiàng)目升級(jí)完依賴包后依次重啟,訪問(wèn)注冊(cè)中心地址 http://localhost:8000/ 即可看到名為 SPRING-CLOUD-PRODUCER的服務(wù)。

服務(wù)網(wǎng)關(guān)注冊(cè)到注冊(cè)中心

復(fù)制上一節(jié)的示例項(xiàng)目 cloud-gateway 重新命名為 cloud-gateway-eureka,添加 eureka 的客戶端依賴包。

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

修改 application.yml 配置文件內(nèi)容如下

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

配置說(shuō)明:

  • spring.cloud.gateway.discovery.locator.enabled:是否與服務(wù)注冊(cè)于發(fā)現(xiàn)組件進(jìn)行結(jié)合,通過(guò) serviceId 轉(zhuǎn)發(fā)到具體的服務(wù)實(shí)例。默認(rèn)為 false,設(shè)為 true 便開(kāi)啟通過(guò)服務(wù)中心的自動(dòng)根據(jù) serviceId 創(chuàng)建路由的功能。

  • eureka.client.service-url.defaultZone指定注冊(cè)中心的地址,以便使用服務(wù)發(fā)現(xiàn)功能

  • logging.level.org.springframework.cloud.gateway 調(diào)整相 gateway 包的 log 級(jí)別,以便排查問(wèn)題

修改完成后啟動(dòng) cloud-gateway-eureka 項(xiàng)目,訪問(wèn)注冊(cè)中心地址 http://localhost:8000/ 即可看到名為 CLOUD-GATEWAY-EUREKA的服務(wù)。

測(cè)試

將?Spring?Cloud?Gateway?注冊(cè)到服務(wù)中心之后,網(wǎng)關(guān)會(huì)自動(dòng)代理所有的在注冊(cè)中心的服務(wù),訪問(wèn)這些服務(wù)的語(yǔ)法為:http://網(wǎng)關(guān)地址:端口/服務(wù)中心注冊(cè)?serviceId/具體的url

比如我們的 spring-cloud-producer 項(xiàng)目有一個(gè) /hello 的服務(wù),訪問(wèn)此服務(wù)的時(shí)候會(huì)返回:hello world。

比如訪問(wèn)地址:http://localhost:9000/hello,頁(yè)面返回:hello world!

按照上面的語(yǔ)法我們通過(guò)網(wǎng)關(guān)來(lái)訪問(wèn),瀏覽器輸入:http://localhost:8888/SPRING-CLOUD-PRODUCER/hello 同樣返回:hello world!證明服務(wù)網(wǎng)關(guān)轉(zhuǎn)發(fā)成功。

我們將項(xiàng)目 spring-cloud-producer 復(fù)制一份為 spring-cloud-producer-1,將/hello服務(wù)的返回值修改為 hello world smile !,修改端口號(hào)為 9001 ,修完完成后重啟,這時(shí)候訪問(wèn)注冊(cè)中心后臺(tái)會(huì)發(fā)現(xiàn)有兩個(gè)名為 SPRING-CLOUD-PRODUCER的服務(wù)。

在瀏覽器多次訪問(wèn)地址:http://localhost:8888/SPRING-CLOUD-PRODUCER/hello,頁(yè)面交替返回以下信息:

hello?world!
hello?world?smile!

說(shuō)明后端服務(wù)自動(dòng)進(jìn)行了均衡負(fù)載。

基于 Filter(過(guò)濾器) 實(shí)現(xiàn)的高級(jí)功能

在服務(wù)網(wǎng)關(guān)Zuul高級(jí)篇中大概介紹過(guò) Filter 的概念。

Spring Cloud Gateway 的 Filter 的生命周期不像 Zuul 的那么豐富,它只有兩個(gè):“pre” 和 “post”。

  • PRE: 這種過(guò)濾器在請(qǐng)求被路由之前調(diào)用。我們可利用這種過(guò)濾器實(shí)現(xiàn)身份驗(yàn)證、在集群中選擇請(qǐng)求的微服務(wù)、記錄調(diào)試信息等。

  • POST:這種過(guò)濾器在路由到微服務(wù)以后執(zhí)行。這種過(guò)濾器可用來(lái)為響應(yīng)添加標(biāo)準(zhǔn)的 HTTP Header、收集統(tǒng)計(jì)信息和指標(biāo)、將響應(yīng)從微服務(wù)發(fā)送給客戶端等。

Spring Cloud Gateway 的 Filter 分為兩種:GatewayFilter 與 GlobalFilter。GlobalFilter 會(huì)應(yīng)用到所有的路由上,而 GatewayFilter 將應(yīng)用到單個(gè)路由或者一個(gè)分組的路由上。

Spring Cloud Gateway 內(nèi)置了9種 GlobalFilter,比如 Netty Routing Filter、LoadBalancerClient Filter、Websocket Routing Filter 等,根據(jù)名字即可猜測(cè)出這些 Filter 的作者,具體大家可以參考官網(wǎng)內(nèi)容:Global Filters

利用 GatewayFilter 可以修改請(qǐng)求的 Http 的請(qǐng)求或者響應(yīng),或者根據(jù)請(qǐng)求或者響應(yīng)做一些特殊的限制。 更多時(shí)候我們會(huì)利用 GatewayFilter 做一些具體的路由配置,下面我們做一些簡(jiǎn)單的介紹。

快速上手 Filter 使用

我們以 AddRequestParameter GatewayFilter 來(lái)演示一下,如何在項(xiàng)目中使用 GatewayFilter,AddRequestParameter GatewayFilter 可以在請(qǐng)求中添加指定參數(shù)。

application.yml配置示例

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

這樣就會(huì)給匹配的每個(gè)請(qǐng)求添加上foo=bar的參數(shù)和值。

我們將以上配置融入到 cloud-gateway-eureka 項(xiàng)目中,完整的 application.yml 文件配置信息如下:

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

這里的 routes 手動(dòng)指定了服務(wù)的轉(zhuǎn)發(fā)地址,設(shè)置所有的 GET 方法都會(huì)自動(dòng)添加foo=bar,http://localhost:9000 是 spring-cloud-producer 項(xiàng)目,我們?cè)诖隧?xiàng)目中添加一個(gè) foo() 方法,用來(lái)接收轉(zhuǎn)發(fā)中添加的參數(shù) foo。

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

修改完成后重啟 cloud-gateway-eureka、spring-cloud-producer 項(xiàng)目。訪問(wèn)地址http://localhost:9000/foo頁(yè)面返回:hello null!,說(shuō)明并沒(méi)有接受到參數(shù) foo;通過(guò)網(wǎng)關(guān)來(lái)調(diào)用此服務(wù),瀏覽器訪問(wèn)地址http://localhost:8888/foo頁(yè)面返回:hello bar!,說(shuō)明成功接收到參數(shù) foo 參數(shù)的值 bar ,證明網(wǎng)關(guān)在轉(zhuǎn)發(fā)的過(guò)程中已經(jīng)通過(guò) filter 添加了設(shè)置的參數(shù)和值。

服務(wù)化路由轉(zhuǎn)發(fā)

上面我們使用 uri 指定了一個(gè)服務(wù)轉(zhuǎn)發(fā)地址,單個(gè)服務(wù)這樣使用問(wèn)題不大,但是我們?cè)谧?cè)中心往往會(huì)使用多個(gè)服務(wù)來(lái)共同支撐整個(gè)服務(wù)的使用,這個(gè)時(shí)候我們就期望可以將 Filter 作用到每個(gè)應(yīng)用的實(shí)例上,spring cloud gateway 工了這樣的功能,只需要簡(jiǎn)單配置即可。

為了測(cè)試兩個(gè)服務(wù)提供者是否都被調(diào)用,我們?cè)?spring-cloud-producer-1 項(xiàng)目中也同樣添加 foo() 方法。

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

為了和 spring-cloud-producer 中 foo() 方法有所區(qū)別,這里使用了兩個(gè)感嘆號(hào)。同時(shí)將 cloud-gateway-eureka 項(xiàng)目配置文件中的 uri 內(nèi)容修改如下:

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

修改完之后,重新啟動(dòng)項(xiàng)目 cloud-gateway-eureka、spring-cloud-producer-1,瀏覽器訪問(wèn)地址:http://localhost:8888/foo頁(yè)面交替出現(xiàn):

服務(wù)網(wǎng)關(guān) Spring Cloud GateWay 服務(wù)化和過(guò)濾器

證明請(qǐng)求依據(jù)均勻轉(zhuǎn)發(fā)到后端服務(wù),并且后端服務(wù)均接收到了 filter 增加的參數(shù) foo 值。

這里其實(shí)默認(rèn)使用了全局過(guò)濾器 LoadBalancerClient ,當(dāng)路由配置中 uri 所用的協(xié)議為 lb 時(shí)(以u(píng)ri: lb://spring-cloud-producer為例),gateway 將使用 LoadBalancerClient 把 spring-cloud-producer 通過(guò) eureka 解析為實(shí)際的主機(jī)和端口,并進(jìn)行負(fù)載均衡。

網(wǎng)頁(yè)名稱:服務(wù)網(wǎng)關(guān)SpringCloudGateWay服務(wù)化和過(guò)濾器
本文鏈接:http://chinadenli.net/article6/gdoeog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、ChatGPT、建站公司域名注冊(cè)、品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作