最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

SpringGateway網(wǎng)關(guān)

2022-08-03 19:56 作者:星月襲空  | 我要投稿

奈非框架簡(jiǎn)介

早期(2020年前)奈非提供的微服務(wù)組件和框架受到了很多開(kāi)發(fā)者的歡迎

這些框架和SpringCloud Alibaba的對(duì)應(yīng)關(guān)系我們要了解

Nacos對(duì)應(yīng)Eureka都是注冊(cè)中心

Dubbo對(duì)應(yīng)Ribbon+feign都是實(shí)現(xiàn)微服務(wù)遠(yuǎn)程調(diào)用的組件

Sentinel對(duì)應(yīng)Hystrix都是項(xiàng)目限流熔斷降級(jí)的組件

Gateway對(duì)應(yīng)Zuul都是網(wǎng)關(guān)項(xiàng)目

Gateway框架不是阿里寫(xiě)的,是Spring提供的

什么是網(wǎng)關(guān)

"網(wǎng)"指網(wǎng)絡(luò),"關(guān)"指關(guān)口或關(guān)卡

網(wǎng)關(guān):就是指網(wǎng)絡(luò)中的關(guān)口\關(guān)卡

網(wǎng)關(guān)就是當(dāng)前微服務(wù)項(xiàng)目的"統(tǒng)一入口"

程序中的網(wǎng)關(guān)就是當(dāng)前微服務(wù)項(xiàng)目對(duì)外界開(kāi)放的統(tǒng)一入口

因?yàn)樘峁┝私y(tǒng)一入口之后,方便對(duì)所有請(qǐng)求進(jìn)行統(tǒng)一的檢查和管理

網(wǎng)關(guān)的主要功能有

  • 將所有請(qǐng)求統(tǒng)一由經(jīng)過(guò)網(wǎng)關(guān)

  • 網(wǎng)關(guān)可以對(duì)這些請(qǐng)求進(jìn)行檢查

  • 網(wǎng)關(guān)方便記錄所有請(qǐng)求的日志

  • 網(wǎng)關(guān)可以統(tǒng)一將所有請(qǐng)求路由到正確的模塊\服務(wù)上

路由的近義詞就是"分配"

Spring Gateway簡(jiǎn)介

我們使用Spring Gateway作為當(dāng)前項(xiàng)目的網(wǎng)關(guān)框架

Spring Gateway是Spring自己編寫(xiě)的,也是SpringCloud中的組件

SpringGateway官網(wǎng)

https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/

簡(jiǎn)單網(wǎng)關(guān)演示

SpringGateway網(wǎng)關(guān)是一個(gè)依賴(lài),不是一個(gè)軟件

所以我們要使用它的話,必須先創(chuàng)建一個(gè)SpringBoot項(xiàng)目

這個(gè)項(xiàng)目也要注冊(cè)到Nacos注冊(cè)中心,因?yàn)榫W(wǎng)關(guān)項(xiàng)目也是微服務(wù)項(xiàng)目的一個(gè)組成部分

beijing和shanghai是編寫(xiě)好的兩個(gè)項(xiàng)目

gateway項(xiàng)目就是網(wǎng)關(guān)項(xiàng)目,需要添加相關(guān)配置

我們從yml文件配置開(kāi)始添加

我們使用

http://localhost:9000/bj/show可以訪問(wèn)beijing服務(wù)器的資源

http://localhost:9000/sh/show可以訪問(wèn)shanghai服務(wù)器的資源

以此類(lèi)推,再有很多服務(wù)器時(shí),我們都可以?xún)H使用9000端口號(hào)來(lái)將請(qǐng)求路由到正確的服務(wù)器

就實(shí)現(xiàn)了gateway成為項(xiàng)目的統(tǒng)一入口的效果

動(dòng)態(tài)路由

網(wǎng)關(guān)項(xiàng)目隨著微服務(wù)數(shù)量的增多

gateway項(xiàng)目的yml文件配置會(huì)越來(lái)越多,維護(hù)的工作量也會(huì)越來(lái)越大

所以我們希望gateway能夠設(shè)計(jì)一套默認(rèn)情況下自動(dòng)路由到每個(gè)模塊的路由規(guī)則

這樣的話,不管當(dāng)前項(xiàng)目有多少個(gè)路由目標(biāo),都不需要維護(hù)yml文件了

這就是我們SpringGateway的動(dòng)態(tài)路由功能

配置文件中開(kāi)啟即可


內(nèi)置斷言

斷言的意思就是判斷某個(gè)條件是否滿足

我們之前使用了Path斷言,判斷請(qǐng)求的路徑是不是滿足條件,例如是不是/sh/**?/bj/**

如果路徑滿足這個(gè)條件,就路由到指定的服務(wù)器

但是Path實(shí)際上只是SpringGateway提供的多種內(nèi)置斷言中的一種

還有很多其它斷言

  • after

  • before

  • between

  • cookie

  • header

  • host

  • method

  • path

  • query

  • remoteaddr

時(shí)間相關(guān)

after,before,between

判斷當(dāng)前時(shí)間在指定時(shí)間之前,之后或之間的操作

如果條件滿足可以執(zhí)行路由操作,否則拒絕訪問(wèn)

我們先利用下面代碼

獲得當(dāng)前時(shí)間,這個(gè)時(shí)間的格式可能是

下面在yml配置中添加新的斷言配置,使用After設(shè)置必須在指定時(shí)間之后訪問(wèn)

必須在指定時(shí)間之后才能訪問(wèn)服務(wù)

否則發(fā)生404錯(cuò)誤拒絕訪問(wèn)

需要注意測(cè)試時(shí),先啟動(dòng)Nacos,再啟動(dòng)shanghai之后啟動(dòng)gateway

測(cè)試時(shí)必須通過(guò)9000端口訪問(wèn)才能有效果

使用Before設(shè)置必須在指定時(shí)間之前訪問(wèn)

使用Between設(shè)置必須在指定時(shí)間之間訪問(wèn)

要求指定請(qǐng)求參數(shù)

Query斷言,判斷是否包含指定的參數(shù)名稱(chēng),包含指定參數(shù)名稱(chēng)才能通過(guò)路由

內(nèi)置過(guò)濾器

Gateway還提供的內(nèi)置過(guò)濾器

不要和我們學(xué)習(xí)的filter混淆

內(nèi)置過(guò)濾器允許我們?cè)诼酚烧?qǐng)求到目標(biāo)資源的同時(shí),對(duì)這個(gè)請(qǐng)求進(jìn)行一些加工或處理

常見(jiàn)過(guò)濾器也有一些

我們給大家演示一下AddRequestParameter過(guò)濾器

它的作用是在請(qǐng)求中添加參數(shù)

進(jìn)行測(cè)試 http://localhost:9000/sh/show?name=tom

因?yàn)檫^(guò)濾器的存在,控制器可以獲取網(wǎng)關(guān)過(guò)濾器添加的參數(shù)值

其他內(nèi)置過(guò)濾器和自定義過(guò)濾器的使用,可以查閱相關(guān)文檔自己了解;


創(chuàng)建gateway網(wǎng)關(guān)子項(xiàng)目

父子相認(rèn)

修改子項(xiàng)目pom文件和依賴(lài)

application.yml文件配置如下

網(wǎng)關(guān)項(xiàng)目的knife4j配置

我們希望配置網(wǎng)關(guān)之后,在使用knife4j測(cè)試時(shí)

就不來(lái)回切換端口號(hào)了

我們需要配置Knife4j才能實(shí)現(xiàn)

在gateway項(xiàng)目中創(chuàng)建config包

SwaggerProvider

SwaggerController類(lèi)

SwaggerHeaderFilter類(lèi)

啟動(dòng)Nacos\Seata\Sentinel

啟動(dòng)cart\stock\order\business

最后啟動(dòng)gateway

可以通過(guò)10000端口測(cè)試各個(gè)業(yè)務(wù)模塊的功能

http://localhost:10000/nacos-stock/doc.html

http://localhost:10000/nacos-cart/doc.html

http://localhost:10000/nacos-order/doc.html

http://localhost:10000/nacos-business/doc.html

如果不使用網(wǎng)關(guān)一切正常,但是啟動(dòng)網(wǎng)關(guān)訪問(wèn)失敗的話,就是gateway項(xiàng)目配置問(wèn)題

Gateway和SpringMvc依賴(lài)沖突問(wèn)題和解決

之前網(wǎng)關(guān)的演示項(xiàng)目我們添加的網(wǎng)關(guān)依賴(lài)

當(dāng)前項(xiàng)目需要配置knife4j的路由配置,需要編寫(xiě)一個(gè)控制器

所以我們添加了SpringMvc的依賴(lài)

這兩個(gè)依賴(lài)在同一個(gè)項(xiàng)目中時(shí),默認(rèn)情況下啟動(dòng)會(huì)報(bào)錯(cuò)

SpringMvc框架中自帶一個(gè)Tomcat服務(wù)器

而SpringGateway框架中自帶一個(gè)Netty的服務(wù)器

在啟動(dòng)項(xiàng)目時(shí),兩個(gè)框架中包含的服務(wù)器都想占用相同端口,因?yàn)闋?zhēng)奪端口號(hào)和主動(dòng)權(quán)而發(fā)生沖突

導(dǎo)致啟動(dòng)服務(wù)時(shí)報(bào)錯(cuò)

要想能夠正常啟動(dòng)必須在yml文件配置

reactive:反應(yīng)的

添加這個(gè)配置之后,會(huì)啟動(dòng)netty服務(wù)器

SpringGateway網(wǎng)關(guān)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
田林县| 施甸县| 镇平县| 甘泉县| 陆川县| 科尔| 思南县| 麻江县| 南宫市| 宝山区| 旬邑县| 建水县| 延庆县| 青川县| 景谷| 台湾省| 剑河县| 盈江县| 阳信县| 沈丘县| 鸡泽县| 江西省| 桓仁| 历史| 彝良县| 镇安县| 易门县| 南陵县| 五台县| 界首市| 通江县| 将乐县| 盐津县| 洛川县| 瓮安县| 铜梁县| 柏乡县| 修文县| 灯塔市| 怀柔区| 师宗县|