亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringCloud之SpringCloud?gateway網關路由怎么配置

發布時間:2023-04-04 16:41:54 來源:億速云 閱讀:157 作者:iii 欄目:開發技術

本篇內容介紹了“SpringCloud之SpringCloud gateway網關路由怎么配置”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、前言

微服務中經常用到gateway作為網關,它有什么作用,怎么使用?

Spring Cloud Gateway的目標提供統一的路由方式且基于Filter 鏈的方式提供了網關基本的功能, 例如:安全、監控、指標和限流 。

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

特點:

1、動態路由:能夠匹配任何請求屬性

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

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

3、集成Hystrix的斷路器功能

4、集成SpringCloud服務發現功能

5、請求限流功能

6、支持路徑重寫

二、代碼演示

1、配置文件

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

yml格式配置如下:

server:
  port: 9999
#服務名稱
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 會轉發到 zhufeng-web-user 服務
          uri: lb://zhufeng-web-user  #在服務注冊中心找服務名為 zhufeng-web-user 的服務
          predicates:
            - Path=/user/info  # 設置路由斷言,當請求 /user/info 時進行轉發
        - id: zhufeng-web-msg  # 請求 http://localhost:9999/route/msg/info 會轉發到 zhufeng-web-msg 服務
          uri: lb://zhufeng-web-msg
          predicates:
            - Path=/route/msg/info  # 設置路由斷言,當請求 /msg/info 時進行轉發
          filters:
            - StripPrefix=1  # 前綴, 在當前路徑匹配中表示去掉第一個前綴 /route

配置說明:

1、定義gateway的端口為9999

2、注冊中心使用nacos

3、配置路由規則:

        請求 http://localhost:9999/user/info 會轉發到 zhufeng-web-user 服務

        請求 http://localhost:9999/route/msg/info 會轉發到 zhufeng-web-msg 服務

如果使用的是properties配置文件,則需要對數組的配置進行轉換:

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

2、pom依賴

使用的微服務的版本信息如下:

 <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 網關依賴,內置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中移除默認nacos-client版本,替換方式如下:

<!--注冊中心客戶端 -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<exclusions>
		<!--移除默認版本,默認為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 網關啟動類
 * @author 月夜燭峰
 * @date 2022/7/22 20:11
 */
@SpringCloudApplication
public class GatewayConfigApplication {
 
	public static void main(String[] args) throws Exception {
		SpringApplication.run(GatewayConfigApplication.class, args);
	}
 
}

 3、創建微服務

創建兩個微服務 zhufeng-web-user 、 zhufeng-web-msg

SpringCloud之SpringCloud?gateway網關路由怎么配置

在zhufeng-web-user創建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 月夜燭峰
 * @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","月夜燭峰");
        return userJson.toJSONString();
    }
}

配置文件:

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

在 zhufeng-web-msg 創建對應Controller 

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

配置文件:

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

分別啟動網關微服務、zhufeng-web-user、zhufeng-web-msg

SpringCloud之SpringCloud?gateway網關路由怎么配置

進入nacos控制臺,可以看到已經注冊成功。

三、請求測試

1、微服務請求轉發

zhufeng-gateway-config微服務只有一個啟動類,沒有其它代碼,所有的請求會根據路由規則進行轉發。

請求 http://localhost:9999/user/info 會轉發到 zhufeng-web-user 服務

SpringCloud之SpringCloud?gateway網關路由怎么配置

請求 http://localhost:9999/route/msg/info 會轉發到 zhufeng-web-msg 服務 

SpringCloud之SpringCloud?gateway網關路由怎么配置

轉發到 zhufeng-web-user 的路由規則 比較好理解,就是根據請求路徑進行轉發,但是在zhufeng-web-msg微服務中,我們并沒有配置  route  的請求前綴,但依然可以轉發到 MsgController , 這是因為gateway通過過濾器 filters 屬性 StripPrefix=1 去掉了第一個uri前綴。

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

原uri /route/msg/info  轉換為  /info

2、第三方請求轉發

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

在gateway中新增配置項,properties格式如下:

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

請求 http://localhost:9999/route/yyzhufeng 會轉發到 https://www.csdn.net/

SpringCloud之SpringCloud?gateway網關路由怎么配置

“SpringCloud之SpringCloud gateway網關路由怎么配置”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新建县| 嵊州市| 黄龙县| 南靖县| 江门市| 贵州省| 民权县| 垣曲县| 渭南市| 睢宁县| 乌鲁木齐县| 格尔木市| 丰都县| 苏尼特右旗| 巍山| 大城县| 常山县| 麻江县| 油尖旺区| 新安县| 防城港市| 博湖县| 铜山县| 西丰县| 开原市| 额尔古纳市| 杭锦后旗| 平陆县| 盈江县| 尼玛县| 鱼台县| 阿克苏市| 吉木乃县| 景泰县| 湘阴县| 扶余县| 东港市| 昭苏县| 和龙市| 博客| 福清市|