最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從0到1學(xué)SpringCloud之SpringCloud?gateway網(wǎng)關(guān)路由配置示例詳解

 更新時間:2023年04月04日 10:29:18   作者:月夜?fàn)T峰  
Spring?Cloud?Gateway的目標(biāo)提供統(tǒng)一的路由方式且基于Filter?鏈的方式提供了網(wǎng)關(guān)基本的功能,?例如:安全、監(jiān)控、指標(biāo)和限流?,這篇文章主要介紹了從0到1學(xué)SpringCloud之SpringCloud?gateway網(wǎng)關(guān)路由配置示例詳解,需要的朋友可以參考下

一、前言

微服務(wù)中經(jīng)常用到gateway作為網(wǎng)關(guān),它有什么作用,怎么使用?

Spring Cloud Gateway的目標(biāo)提供統(tǒng)一的路由方式且基于Filter 鏈的方式提供了網(wǎng)關(guān)基本的功能, 例如:安全、監(jiān)控、指標(biāo)和限流 。

Spring Cloud Gateway的通信框架使用的是Netty。

特點(diǎn):

1、動態(tài)路由:能夠匹配任何請求屬性

2、可以對路由指定Predicate(斷言)和Filter(過濾器) :

predicate,可以理解為匹配條件;filter,可以理解為攔截器。

3、集成Hystrix的斷路器功能

4、集成SpringCloud服務(wù)發(fā)現(xiàn)功能

5、請求限流功能

6、支持路徑重寫

二、代碼演示

1、配置文件

為了更好的理解,我們先配置幾個請求路徑

yml格式配置如下:

server:
  port: 9999
#服務(wù)名稱
spring:
  application:
    name: zhufeng-gateway-config
  cloud:
    nacos:
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
      discovery:
         server-addr: 127.0.0.1:8848
    gateway:
      routes:
        - id: zhufeng-web-user  # 請求 http://localhost:9999/user/info 會轉(zhuǎn)發(fā)到 zhufeng-web-user 服務(wù)
          uri: lb://zhufeng-web-user  #在服務(wù)注冊中心找服務(wù)名為 zhufeng-web-user 的服務(wù)
          predicates:
            - Path=/user/info  # 設(shè)置路由斷言,當(dāng)請求 /user/info 時進(jìn)行轉(zhuǎn)發(fā)
        - id: zhufeng-web-msg  # 請求 http://localhost:9999/route/msg/info 會轉(zhuǎn)發(fā)到 zhufeng-web-msg 服務(wù)
          uri: lb://zhufeng-web-msg
          predicates:
            - Path=/route/msg/info  # 設(shè)置路由斷言,當(dāng)請求 /msg/info 時進(jìn)行轉(zhuǎn)發(fā)
          filters:
            - StripPrefix=1  # 前綴, 在當(dāng)前路徑匹配中表示去掉第一個前綴 /route

配置說明:

1、定義gateway的端口為9999

2、注冊中心使用nacos

3、配置路由規(guī)則:

        請求 http://localhost:9999/user/info 會轉(zhuǎn)發(fā)到 zhufeng-web-user 服務(wù)

        請求 http://localhost:9999/route/msg/info 會轉(zhuǎn)發(fā)到 zhufeng-web-msg 服務(wù)

如果使用的是properties配置文件,則需要對數(shù)組的配置進(jìn)行轉(zhuǎn)換:

#服務(wù)端口
server.port=9999
#服務(wù)名稱
spring.application.name=zhufeng-gateway-config
# 請求 http://localhost:9999/user/info 會轉(zhuǎn)發(fā)到 zhufeng-web-user 服務(wù)
spring.cloud.gateway.routes[0].id=zhufeng-web-user
# 在服務(wù)注冊中心找服務(wù)名為 zhufeng-web-user 的服務(wù)
spring.cloud.gateway.routes[0].uri=lb://zhufeng-web-user
# 設(shè)置路由斷言,當(dāng)請求 /user/info 時進(jìn)行轉(zhuǎn)發(fā)
spring.cloud.gateway.routes[0].predicates[0]=Path=/user/info
# 請求 http://localhost:9999/msg/info 會轉(zhuǎn)發(fā)到 zhufeng-web-msg 服務(wù)
spring.cloud.gateway.routes[1].id=zhufeng-web-msg
# 在服務(wù)注冊中心找服務(wù)名為 zhufeng-web-msg 的服務(wù) #lb://zhufeng-web-msg
spring.cloud.gateway.routes[1].uri=lb://zhufeng-web-msg
# 設(shè)置路由斷言,當(dāng)請求 /msg/info 時進(jìn)行轉(zhuǎn)發(fā)
spring.cloud.gateway.routes[1].predicates[0]=Path=/route/msg/info
# 前綴, 在當(dāng)前路徑匹配中表示去掉第一個前綴 /route
spring.cloud.gateway.routes[1].filters[0]=StripPrefix=1

2、pom依賴

使用的微服務(wù)的版本信息如下:

 <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>

<dependencies>
	<!--gateway 網(wǎng)關(guān)依賴,內(nèi)置webflux 依賴 -->
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-gateway</artifactId>
	</dependency>
 
	<!--斷路器依賴 -->
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
	</dependency>
	<dependency>
		<groupId>com.alibaba.csp</groupId>
		<artifactId>sentinel-datasource-extension</artifactId>
	</dependency>
 
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-sleuth</artifactId>
	</dependency>
</dependencies>

注意:

如果nacos使用的不是2.x版本,需要從spring-cloud-starter-alibaba-nacos-discovery中移除默認(rèn)nacos-client版本,替換方式如下:

<!--注冊中心客戶端 -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<exclusions>
		<!--移除默認(rèn)版本,默認(rèn)為2.x版本-->
		<exclusion>
			<groupId>com.alibaba.nacos</groupId>
			<artifactId>nacos-client</artifactId>
		</exclusion>
	</exclusions>
</dependency>
 
<dependency>
	<groupId>com.alibaba.nacos</groupId>
	<artifactId>nacos-client</artifactId>
	<version>1.4.3</version>
</dependency>

啟動類:

package com.zhufeng.gateway.config;
 
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
 
/**
 * @ClassName: GatewayConfigApplication
 * @Description 網(wǎng)關(guān)啟動類
 * @author 月夜?fàn)T峰
 * @date 2022/7/22 20:11
 */
@SpringCloudApplication
public class GatewayConfigApplication {
 
	public static void main(String[] args) throws Exception {
		SpringApplication.run(GatewayConfigApplication.class, args);
	}
 
}

 3、創(chuàng)建微服務(wù)

創(chuàng)建兩個微服務(wù) zhufeng-web-user 、 zhufeng-web-msg

在zhufeng-web-user創(chuàng)建Controller:

package com.zhufeng.web.controller;

import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @ClassName: UserController
 * @Description User路由測試
 * @author 月夜?fàn)T峰
 * @date 2022/7/22 20:01
 */
@RestController
@RequestMapping("user")
public class UserController {
 
    @RequestMapping("info")
    public String userInfo(){
        JSONObject userJson = new JSONObject();
        userJson.put("id","user1001");
        userJson.put("name","月夜?fàn)T峰");
        return userJson.toJSONString();
    }
}

配置文件:

#服務(wù)端口
server.port=8081
#服務(wù)名稱
spring.application.name=zhufeng-web-user

在 zhufeng-web-msg 創(chuàng)建對應(yīng)Controller 

package com.zhufeng.web.controller;
 
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
 
/**
 * @ClassName: MsgController
 * @Description 消息路由測試
 * @author 月夜?fàn)T峰
 * @date 2022/7/22 20:33
 */
@RequestMapping("msg")
@RestController
public class MsgController {
 
    @RequestMapping("info")
    public String showInfo() {
        return "good luck~";
    }
}

配置文件:

#服務(wù)端口
server.port=8080
#服務(wù)名稱
spring.application.name=zhufeng-web-msg

分別啟動網(wǎng)關(guān)微服務(wù)、zhufeng-web-user、zhufeng-web-msg

進(jìn)入nacos控制臺,可以看到已經(jīng)注冊成功。

三、請求測試

1、微服務(wù)請求轉(zhuǎn)發(fā)

zhufeng-gateway-config微服務(wù)只有一個啟動類,沒有其它代碼,所有的請求會根據(jù)路由規(guī)則進(jìn)行轉(zhuǎn)發(fā)。

請求 http://localhost:9999/user/info 會轉(zhuǎn)發(fā)到 zhufeng-web-user 服務(wù)

請求 http://localhost:9999/route/msg/info 會轉(zhuǎn)發(fā)到 zhufeng-web-msg 服務(wù) 

轉(zhuǎn)發(fā)到 zhufeng-web-user 的路由規(guī)則 比較好理解,就是根據(jù)請求路徑進(jìn)行轉(zhuǎn)發(fā),但是在zhufeng-web-msg微服務(wù)中,我們并沒有配置  route  的請求前綴,但依然可以轉(zhuǎn)發(fā)到 MsgController , 這是因?yàn)間ateway通過過濾器 filters 屬性 StripPrefix=1 去掉了第一個uri前綴。

如果設(shè)置 StripPrefix=2 ,則會去掉前面兩個前綴

原uri /route/msg/info  轉(zhuǎn)換為  /info

2、第三方請求轉(zhuǎn)發(fā)

網(wǎng)關(guān)中配置的都是我們自己的微服務(wù),如果請求的服務(wù)并沒有注冊到我們nacos中,或者請求的服務(wù)為第三方,該如何處理?

在gateway中新增配置項(xiàng),properties格式如下:

spring.cloud.gateway.routes[2].id=zhufeng-route-zhufeng
#請求 http://localhost:9999/route/yyzhufeng 會轉(zhuǎn)發(fā)到 https://www.csdn.net/
spring.cloud.gateway.routes[2].uri=https://www.csdn.net/
spring.cloud.gateway.routes[2].predicates[0]=Path=/route/yyzhufeng
# 前綴, 在當(dāng)前路徑匹配中表示去掉前兩個前綴 /route/yyzhufeng
spring.cloud.gateway.routes[2].filters[0]=StripPrefix=2

請求 http://localhost:9999/route/yyzhufeng 會轉(zhuǎn)發(fā)到 https://www.csdn.net/

到此這篇關(guān)于從0到1學(xué)SpringCloud之SpringCloud gateway網(wǎng)關(guān)路由配置示例詳解的文章就介紹到這了,更多相關(guān)SpringCloud gateway網(wǎng)關(guān)路由內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis?連接mysql數(shù)據(jù)庫底層運(yùn)行的原理分析

    Mybatis?連接mysql數(shù)據(jù)庫底層運(yùn)行的原理分析

    這篇文章主要介紹了Mybatis?連接mysql數(shù)據(jù)庫底層運(yùn)行的原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java編程經(jīng)典案例之基于斐波那契數(shù)列解決兔子問題實(shí)例

    java編程經(jīng)典案例之基于斐波那契數(shù)列解決兔子問題實(shí)例

    這篇文章主要介紹了java編程經(jīng)典案例之基于斐波那契數(shù)列解決兔子問題,結(jié)合完整實(shí)例形式分析了斐波那契數(shù)列的原理及java解決兔子問題的相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Java利用trueLicense實(shí)現(xiàn)項(xiàng)目離線證書授權(quán)操作步驟

    Java利用trueLicense實(shí)現(xiàn)項(xiàng)目離線證書授權(quán)操作步驟

    文章介紹了如何使用trueLicense實(shí)現(xiàn)離線授權(quán)控制,包括生成公私鑰、創(chuàng)建證書校驗(yàn)?zāi)K、生成證書模塊和測試模塊,通過這種方式,可以控制用戶使用的項(xiàng)目模塊、授權(quán)周期、使用的設(shè)備和服務(wù)器,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • springboot中縮短一個url鏈接的實(shí)現(xiàn)

    springboot中縮短一個url鏈接的實(shí)現(xiàn)

    縮短 URL 是現(xiàn)代應(yīng)用程序中常見的需求,通常用于減少長 URL 的長度,使其更易于分享,URL 縮短服務(wù)的核心思路是將長 URL 映射到一個唯一的短代碼,本文主要介紹了springboot中縮短一個url鏈接的實(shí)現(xiàn),感興趣的可以了解一下
    2024-09-09
  • 教你開發(fā)腳手架集成Spring?Boot?Actuator監(jiān)控的詳細(xì)過程

    教你開發(fā)腳手架集成Spring?Boot?Actuator監(jiān)控的詳細(xì)過程

    這篇文章主要介紹了開發(fā)腳手架集成Spring?Boot?Actuator監(jiān)控的詳細(xì)過程,集成包括引入依賴配置文件及訪問驗(yàn)證的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • SpringBoot:JPA + AuditingEntityListener時區(qū)設(shè)置方式

    SpringBoot:JPA + AuditingEntityListener時區(qū)設(shè)置方式

    這篇文章主要介紹了SpringBoot:JPA + AuditingEntityListener時區(qū)設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring框架之IOC介紹講解

    Spring框架之IOC介紹講解

    IOC-Inversion of Control,即控制反轉(zhuǎn)。它不是什么技術(shù),而是一種設(shè)計(jì)思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Java設(shè)計(jì)模式之單例設(shè)計(jì)模式解析

    Java設(shè)計(jì)模式之單例設(shè)計(jì)模式解析

    這篇文章主要介紹了Java設(shè)計(jì)模式之單例設(shè)計(jì)模式解析,設(shè)計(jì)模式是在大量的實(shí)踐中總結(jié)和理論化之后優(yōu)選的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問題的思考方式,設(shè)計(jì)模式免去我們自己再思考和摸索,需要的朋友可以參考下
    2023-11-11
  • intellij idea快速查看當(dāng)前類中的所有方法(推薦)

    intellij idea快速查看當(dāng)前類中的所有方法(推薦)

    這篇文章主要介紹了intellij idea快速查看當(dāng)前類中的所有方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • windows下vscode+vs2019開發(fā)JNI的示例

    windows下vscode+vs2019開發(fā)JNI的示例

    本文給大家普及windows下vscode+vs2019開發(fā)JNI的示例以及各個環(huán)節(jié)的注意事項(xiàng),文章通過示例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-06-06

最新評論

永和县| 崇州市| 临城县| 濮阳县| 巴东县| 凤城市| 开封市| 霍城县| 鄂伦春自治旗| 汾西县| 石河子市| 衡东县| 崇信县| 阳原县| 都匀市| 姚安县| 肇州县| 五河县| 德化县| 舒兰市| 丹阳市| 丹东市| 昭苏县| 嵩明县| 麻栗坡县| 宁阳县| 广州市| 扬中市| 垣曲县| 深水埗区| 望江县| 桃园市| 阿合奇县| 泽普县| 南丹县| 桐乡市| 措勤县| 安义县| 贵阳市| 右玉县| 鲁甸县|