SpringCloud Gateway使用

本文基于springboot+nacos+gateway實(shí)現(xiàn)生百,使用springboot作為基礎(chǔ)工程涧尿,nacos作為注冊(cè)中心及配置中心形纺,gateway作為網(wǎng)關(guān)
項(xiàng)目整體使用版本號(hào):
springboot-2.6.8
springcloud-2021.0.3
spring-cloud-alibaba-2021.0.1.0

1. Gateway網(wǎng)關(guān)服務(wù):

創(chuàng)建普通的springboot工程昭抒,網(wǎng)關(guān)服務(wù)中不要添加spring-boot-starter-web依賴:
pom依賴

        <!-- gateway網(wǎng)關(guān) -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!-- nacos注冊(cè)中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- nacos配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- nacos配置中心需要使用到的bootstrap -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.1</version>
        </dependency>
        <!--fegin組件  不加該依賴會(huì)出現(xiàn)503問(wèn)題  -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- Feign Client for loadBalancing -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
            <version>3.1.3</version>
        </dependency>

yml配置
bootstrap.yml:naocs配置中心需要的依賴瞬矩,因?yàn)橐獌?yōu)先加載茶鉴,所以使用該名稱yml:

spring:
  application:
    name: GatewayService
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8082
        group: testGroup
        name: GatewayService
        file-extension: yaml
        namespace: Dev

application.yml普通yml文件配置,包含sentinel配置丧鸯,nacos注冊(cè)中心配置蛤铜,gateway網(wǎng)關(guān)配置及相關(guān)服務(wù)路由配置

server:
  port: 8083

spring:
  application:
    name: GatewayService
  # 該配置用于解決 springboot使用tomcat  Springcloud gateway使用netty 導(dǎo)致沖突,所以添加改配置丛肢,然后不添加spring-boot-starter-web依賴  網(wǎng)關(guān)服務(wù)就可以正常啟動(dòng)了
  main:
    web-application-type: reactive
  cloud:
    nacos:
      server-addr: 127.0.0.1:8082
      discovery:
        group: testGroup
        namespace: Dev
    sentinel:
      transport:
        dashboard: 127.0.0.1:8080
    gateway:
      # 全局超時(shí)限制
      httpclient:
        connect-timeout: 1000
        response-timeout: 200
      routes:
        - id: testService01
          # 如果使用nacos作為注冊(cè)中心围肥,這里直接使用lb://服務(wù)名  非nacos uri: http://127.0.0.1:8001
          uri: lb://testService01
          predicates:
#            - Path=/test01/**
            - name: Path
              args:
                pattern: /test01/**
          # 針對(duì)某個(gè)路由進(jìn)行超時(shí)限制,配置該項(xiàng)蜂怎,則全局配置不對(duì)該路由起作用
          metadata:
            response-timeout: 300
            connect-timeout: 300
        - id: testService02
          # 如果使用nacos作為注冊(cè)中心穆刻,這里直接使用lb://服務(wù)名  非nacos uri: http://127.0.0.1:8001
          uri: lb://testService02
          predicates:
            - name: Path
              args:
                pattern: /test02/**

服務(wù)啟動(dòng)類

@SpringBootApplication
@EnableDiscoveryClient // nacos注冊(cè)中心使用配置
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

大版本控制

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.8</version>
    </parent>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.0.1.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2. 測(cè)試應(yīng)用服務(wù)01:

pom依賴配置,使用nacos作為注冊(cè)中心及配置中心

    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.1</version>
        </dependency>
    </dependencies>

yml配置
bootstrap.yml:naocs配置中心需要的依賴杠步,因?yàn)橐獌?yōu)先加載氢伟,所以使用該名稱yml:

spring:
  application:
    name: Test-Service-01
  cloud:
    nacos:
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8082
        # 命名空間  可區(qū)分環(huán)境使用 dev開(kāi)發(fā)環(huán)境  pro生產(chǎn)環(huán)境
        namespace: Dev
        # 配置列表 dataID前綴
        name: testService01
        # 配置列表 dataID后綴
        file-extension: yaml
        # 如果不配置該項(xiàng),則使用DEFAULT_GROUP 不支持配置自動(dòng)更新
        # 如果配置該項(xiàng)幽歼,支持配置自動(dòng)更新
        group: testGroup
        # 動(dòng)態(tài)刷新功能   true開(kāi)啟   false關(guān)閉
        refresh-enabled: true

application.yml普通yml文件配置朵锣,包含sentinel配置,nacos注冊(cè)中心配置甸私,gateway網(wǎng)關(guān)配置及相關(guān)服務(wù)路由配置

server:
  port: 8090

spring:
  application:
    name: testService01
  cloud:
    nacos:
      server-addr: 127.0.0.1:8082
      discovery:
        group: testGroup
        namespace: Dev
    sentinel:
      transport:
        dashboard: 127.0.0.1:8080

啟動(dòng)類

@SpringBootApplication
@EnableDiscoveryClient // nacos注冊(cè)中心配置
public class TestServiceDemo01Application {

    public static void main(String[] args) {
        SpringApplication.run(TestServiceDemo01Application.class, args);
    }

}

測(cè)試方法類

@RestController
@RefreshScope // nacos配置中心動(dòng)態(tài)刷新獲取配置
public class TestController {

    @Value("${test.val:}")
    private String val;

    @GetMapping("/test01/get")
    public String get() throws Exception{
        Thread.sleep(205);
        return val;
    }

}

3. nacos注冊(cè)中心相關(guān)截圖:

注冊(cè)中心上顯示的服務(wù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诚些,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子皇型,更是在濱河造成了極大的恐慌诬烹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弃鸦,死亡現(xiàn)場(chǎng)離奇詭異绞吁,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)唬格,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門家破,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)颜说,“玉大人,你說(shuō)我怎么就攤上這事员舵∧匝兀” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵马僻,是天一觀的道長(zhǎng)庄拇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)韭邓,這世上最難降的妖魔是什么措近? 我笑而不...
    開(kāi)封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮女淑,結(jié)果婚禮上瞭郑,老公的妹妹穿的比我還像新娘。我一直安慰自己鸭你,他們只是感情好屈张,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著袱巨,像睡著了一般阁谆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愉老,一...
    開(kāi)封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天场绿,我揣著相機(jī)與錄音,去河邊找鬼嫉入。 笑死焰盗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咒林。 我是一名探鬼主播熬拒,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼垫竞!你這毒婦竟也來(lái)了澎粟?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤件甥,失蹤者是張志新(化名)和其女友劉穎捌议,沒(méi)想到半個(gè)月后哼拔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體引有,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年倦逐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了譬正。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宫补。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖曾我,靈堂內(nèi)的尸體忽然破棺而出粉怕,到底是詐尸還是另有隱情,我是刑警寧澤抒巢,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布贫贝,位于F島的核電站,受9級(jí)特大地震影響蛉谜,放射性物質(zhì)發(fā)生泄漏稚晚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一型诚、第九天 我趴在偏房一處隱蔽的房頂上張望客燕。 院中可真熱鬧,春花似錦狰贯、人聲如沸也搓。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)傍妒。三九已至,卻和暖如春栖袋,著一層夾襖步出監(jiān)牢的瞬間拍顷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工塘幅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昔案,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓电媳,卻偏偏與公主長(zhǎng)得像踏揣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匾乓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容