首页 > 其他分享 >网关SpringCloudGateway配置

网关SpringCloudGateway配置

时间:2024-06-07 11:46:43浏览次数:19  
标签:网关 lb SpringCloudGateway 配置 id cloud Path gateway 路由

1.2.快速入门

如何利用网关实现请求路由。由于网关本身也是一个独立的微服务,因此也需要创建一个模块开发功能。大概步骤如下:
  • 创建网关微服务
  • 引入SpringCloudGateway、NacosDiscovery依赖
  • 编写启动类
  • 配置网关路由
 

1.2.1.创建项目

首先,我们要在hmall下创建一个新的module,命名为hm-gateway,作为网关微服务:  

1.2.2.引入依赖

hm-gateway模块的pom.xml文件中引入依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>hmall</artifactId>
        <groupId>com.heima</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>hm-gateway</artifactId>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <!--common-->
        <dependency>
            <groupId>com.heima</groupId>
            <artifactId>hm-common</artifactId>
            <version>1.0.0</version>
        </dependency>
        <!--网关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!--nacos discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--负载均衡-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
 

1.2.3.启动类

hm-gateway模块的com.hmall.gateway包下新建一个启动类: 代码如下:
package com.hmall.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

1.2.4.配置路由

接下来,在hm-gateway模块的resources目录新建一个application.yaml文件,内容如下:
server:
  port: 8080
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: 192.168.150.101:8848
    gateway:
      routes:
        - id: item # 路由规则id,自定义,唯一
          uri: lb://item-service # 路由的目标服务,lb代表负载均衡,会从注册中心拉取服务列表
          predicates: # 路由断言,判断当前请求是否符合当前规则,符合则路由到目标服务
            - Path=/items/**,/search/** # 这里是以请求路径作为判断规则
        - id: cart
          uri: lb://cart-service
          predicates:
            - Path=/carts/**
        - id: user
          uri: lb://user-service
          predicates:
            - Path=/users/**,/addresses/**
        - id: trade
          uri: lb://trade-service
          predicates:
            - Path=/orders/**
        - id: pay
          uri: lb://pay-service
          predicates:
            - Path=/pay-orders/**
 

1.2.5.测试

启动GatewayApplication,以 http://localhost:8080 拼接微服务接口路径来测试。例如: http://localhost:8080/items/page?pageNo=1&pageSize=1   此时,启动UserApplication、CartApplication,然后打开前端页面,发现相关功能都可以正常访问了:

1.3.路由过滤

路由规则的定义语法如下:
spring:
  cloud:
    gateway:
      routes:
        - id: item
          uri: lb://item-service
          predicates:
            - Path=/items/**,/search/**
其中routes对应的类型如下: 是一个集合,也就是说可以定义很多路由规则。集合中的RouteDefinition就是具体的路由规则定义,其中常见的属性如下: 四个属性含义如下:
  • id:路由的唯一标示
  • predicates:路由断言,其实就是匹配条件
  • filters:路由过滤条件,后面讲
  • uri:路由目标地址,lb://代表负载均衡,从注册中心获取目标微服务的实例列表,并且负载均衡选择一个访问。
  这里我们重点关注predicates,也就是路由断言。SpringCloudGateway中支持的断言类型有很多:
名称 说明 示例
After 是某个时间点后的请求 - After=2037-01-20T17:42:47.789-07:00[America/Denver]
Before 是某个时间点之前的请求 - Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]  
Between 是某两个时间点之前的请求 - Between=2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver]
Cookie 请求必须包含某些cookie - Cookie=chocolate, ch.p
Header 请求必须包含某些header - Header=X-Request-Id, \d+
Host 请求必须是访问某个host(域名) - Host=**.somehost.org,**.anotherhost.org
Method 请求方式必须是指定方式 - Method=GET,POST
Path 请求路径必须符合指定规则 - Path=/red/{segment},/blue/**
Query 请求参数必须包含指定参数 - Query=name, Jack或者- Query=name
RemoteAddr 请求者的ip必须是指定范围 - RemoteAddr=192.168.1.1/24
weight 权重处理  
 

标签:网关,lb,SpringCloudGateway,配置,id,cloud,Path,gateway,路由
From: https://www.cnblogs.com/linzepro/p/18236950

相关文章

  • 顶顶通呼叫中心中间件-如何配置识别不同语种的ASR
    文章目录前言联系我们创建不同语种的语音识别任务开始对接识别不同语种的ASR重启asrproxy程序使用识别不同语种的ASR前言之前讲过顶顶通的asrproxy程序如何对接第三方的ASR,比如:阿里云的ASR。不知道如何对接的,可以参考:对接阿里云ASR和TTS。本文讲解顶顶通如何对......
  • OCA/base_report_to_printer 配置Odoo云打印
    系统结构安装部署Odoo安装模块依赖pipinstallpycups安装OCA模块report-print-send/base_report_to_printercupscups简介CUPS(CommonUNIXPrintingSystem)是一个开源的打印系统,用于在Unix-like操作系统上管理打印任务。它提供了打印机驱动程序、打印队列管理、打印作业......
  • nginx配置跨域文档记录
    参考:https://www.cnblogs.com/PengfeiSong/p/12993446.html@目录概要代码小结概要这个跨域我之前配置过,昨天搜了下教程没有配成功,今天上午又花了近一上午才搞定,特意过来记录下代码server{listen80;server_nameapi.xxx.space;client_max_body_size50M;......
  • allure安装配置使用 简单版
     环境安装一、安装配置JDK先检查是否安装JDK,cmd中查看java版本:java-version若未安装,以下面的步骤安装:1、Oracle官网下载JDK:https://www.oracle.com/java/technologies/downloads/,请下载安装JDK8及以上版本2、安装JDK3、JDK配置环境变量:win10系统右击“我的电脑”-->"属......
  • BENTLY 3500/91 通信网关模块
    3500/91规格:输入电压范围:12-48VDC。输出电压范围:5VDC。输出电流:最大10A。效率:大于90%。尺寸:170mmx105mmx32mm。重量:1.5kg。3500/91应用领域:工业自动化和过程控制:用于连接不同网络或协议的设备,实现不同网络之间的通信和数据交换,为工业自动化和物联网应用提供了重要......
  • k8s——secret配置资源管理
    一、Secret 1.1Secret定义  Secret是用来保存密码、token、密钥等敏感数据的k8s资源,这类数据虽然也可以存放在Pod或者镜像中,但是放在Secret中是为了更方便的控制如何使用数据,并减少暴露的风险。 1.2Secret类型kubernetes.io/service-account-token:由Kubernetes......
  • 关于Solidity脚本相关环境配置及脚本数据的查找
    来源:在solidity安全中心做题时,有些题需要通过脚本进行计算,可以是JavaScript也可以是python的脚本,solidity安全方面初次接触可能不清楚该如何运行solidity的相关脚本。下面我来分开说说JavaScript和Python对应的环境配置python篇:首先确保你的电脑中存在Python环境Python安装......
  • 如何在Windows系统下配置最新的MinGW(GCC14)环境,同时应用到Dev-C++中
    如何在Windows系统下配置最新的MinGW(GCC14)环境,同时应用到Dev-C++中前言本教程只面向小白,目的是配置出一个Windows能用的新GCC环境,未深入涉及细节配置。在访问文中链接时,你可能需要使用能更快速访问国际网络的工具。安装MinGW环境先访问MinGW的官网:https://www.mingw-w64.org/......
  • springboot启动之-本地配置(一)
    没有前言,只有源码~~,依然是最简单的依赖plugins{ id'java' id'org.springframework.boot'version'3.3.0' id'io.spring.dependency-management'version'1.1.5'}java{ sourceCompatibility='17'}dependenci......
  • zabbix邮箱报警配置
    1.1配置监控的自定义key判断当前机器登录的用户数量,超过3个1.想好,你这个需求,如何用命令采集,构造出结果who|wc-l2.写zabbix-agent的配置文件[root@zabbix-server-71/etc/zabbix/zabbix_agentd.d]#catuserparameter_login_user.confUserParameter=login.user,who|wc-......