目錄
SpringGateway網(wǎng)關(guān)
奈非框架簡(jiǎn)介
什么是網(wǎng)關(guān)
網(wǎng)關(guān)的主要功能有
Spring Gateway簡(jiǎn)介
網(wǎng)關(guān)路由配置
動(dòng)態(tài)路由
SpringGateway網(wǎng)關(guān)
奈非框架簡(jiǎn)介
早期(2020年前)奈非提供的微服務(wù)組件和框架受到了很多開(kāi)發(fā)者的歡迎
這些框架和SpringCloud Alibaba的對(duì)應(yīng)關(guān)系我們要了解
現(xiàn)在還有很多舊項(xiàng)目維護(hù)是使用奈非框架完成的微服務(wù)架構(gòu)
Nacos對(duì)應(yīng)Eureka都是注冊(cè)中心
Dubbo對(duì)應(yīng)Ribbon+feign都是實(shí)現(xiàn)微服務(wù)遠(yuǎn)程RPC調(diào)用的組件
Sentinel對(duì)應(yīng)Hystrix都是做項(xiàng)目限流熔斷降級(jí)的組件
Gateway對(duì)應(yīng)Zuul都是網(wǎng)關(guān)組件
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)一入口
所有外界的請(qǐng)求都需要先經(jīng)過(guò)網(wǎng)關(guān)才能訪問(wèn)到我們的程序
提供了統(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)
Spring Cloud Gatewayhttps://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/
網(wǎng)關(guān)路由配置
對(duì)當(dāng)前項(xiàng)目所有服務(wù)器添加路由配置信息
server:
port: 9000
spring:
application:
name: gateway
cloud:
nacos:
discovery:
# 網(wǎng)關(guān)也是微服務(wù)項(xiàng)目的一部分,所以也要注冊(cè)到Nacos
server-addr: localhost:8848
gateway:
# routes就是路由的意思,在此處配置是一個(gè)數(shù)組類(lèi)型
routes:
- id: gateway-shanghai
uri: lb://shanghai
predicates:
- Path=/sh/**
# 數(shù)組類(lèi)型中編寫(xiě) "-"開(kāi)頭,表示是一個(gè)數(shù)組元素
# id表示當(dāng)前路由的名稱,沒(méi)有和其他任何出現(xiàn)過(guò)的名字關(guān)聯(lián),和之后的內(nèi)容也沒(méi)有關(guān)聯(lián)
- id: gateway-beijing
# 當(dāng)前路由配置的路由目標(biāo)配置,也就是路由路徑
# lb是LoadBalance的縮寫(xiě),beijing是路由目標(biāo)服務(wù)器的名稱
uri: lb://beijing
# 下面編寫(xiě)路由條件\規(guī)則,也就是滿足什么樣的路徑會(huì)訪問(wèn)beijing服務(wù)器
# 我們要配置內(nèi)置斷言來(lái)配置路徑路徑 predicates(斷言)
predicates:
# 斷言其實(shí)就是滿足某個(gè)條件時(shí)做什么操作的設(shè)置
# predicates和routes類(lèi)似,也是一個(gè)數(shù)組類(lèi)型
# ↓ P大寫(xiě)!!!!! 表示以/bj/開(kāi)頭的請(qǐng)求都會(huì)路由到beijing服務(wù)器
- Path=/bj/**
# spring.cloud.gateway.routes[0].uri
# spring.cloud.gateway.routes[0].predicates[0]
上面的yml配置了bejing和shanghai項(xiàng)目的路由信息
我們使用
http://localhost:9000/bj/show可以訪問(wèn)beijing服務(wù)器的資源
http://localhost:9000/sh/show可以訪問(wèn)shanghai服務(wù)器的資源
以此類(lèi)推,再有很多服務(wù)器時(shí),我們都可以僅使用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)啟即可
?
server:
port: 9000
spring:
application:
name: gateway
cloud:
nacos:
discovery:
# 網(wǎng)關(guān)也是微服務(wù)項(xiàng)目的一部分,所以也要注冊(cè)到Nacos
server-addr: localhost:8848
gateway:
discovery:
locator:
# 這就是開(kāi)啟動(dòng)態(tài)路由的配置,動(dòng)態(tài)路由配置默認(rèn)是關(guān)閉的,需要手動(dòng)開(kāi)啟才能生效
# 動(dòng)態(tài)路由生成規(guī)則為:在網(wǎng)關(guān)端口號(hào)后先寫(xiě)要路由到的目標(biāo)服務(wù)器在nacos注冊(cè)的名稱
# 再編寫(xiě)具體路徑
# 例如 localhost:9001/bj/show -> localhost:9000/beijing/bj/show
enabled: true
按上面修改完配置之后
我們可以重啟gateway來(lái)測(cè)試動(dòng)態(tài)路由路徑是否生效文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-493140.html
動(dòng)態(tài)路由生成規(guī)則為:在網(wǎng)關(guān)端口號(hào)后先寫(xiě)要路由到的目標(biāo)服務(wù)器在nacos注冊(cè)的名稱,再編寫(xiě)具體路徑文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-493140.html
到了這里,關(guān)于SpringGateway網(wǎng)關(guān)(Spring Gateway是Spring自己編寫(xiě)的,也是SpringCloud中的組件)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!