SpringCloud 统一网关Gateway -- 为什么需要网关、Gateway快速入门、路由断言工厂(Route Predicate Factory)

本文介绍了Spring Cloud Gateway作为微服务网关的作用,包括身份验证、服务路由和请求限流。通过创建新模块并引入相关依赖,搭建了网关服务,并配置了Nacos服务发现和路由规则。示例中展示了如何利用After路由断言实现特定时间后的请求处理。文章总结了Gateway的基本流程,并探讨了Spring提供的11种RoutePredicateFactory的使用。
摘要由CSDN通过智能技术生成

本节案例承接上节

1. 为什么需要网关


1.1 为什么需要网关

没有网关,我们的微服务消费端,全都要对外网进行暴露。每个微服务消费端,都要进行自己的安全过滤,身份验证,这无疑增加了开发工作量。另外一个原因,如果有安全规则问题,需要更新维护,那么,所有的服务消费端都要更新一遍。

所以,我们需要对请求进行统一的收口,统一的过滤,这是网关最重要的作用。其次,配合服务注册与发现,网关对请求代理后,还可以把请求分发到运转正常的服务消费端,分发的同时也实现了负载均衡,这是网关的另一个重要作用。

网关功能:

  • 身份认证和权限校验
  • 服务路由、负载均衡
  • 请求限流

在这里插入图片描述


1.2 网关的技术实现

在这里插入图片描述


2. Gateway快速入门

搭建网关服务的步骤:

  1. 创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖。创建启动类。
  2. 编写路由配置及nacos地址

2.1 创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖

创建新的module:
在这里插入图片描述引入SpringCloudGateway的依赖和nacos的服务发现依赖:
在这里插入图片描述

    <dependencies>
        <!--nacos服务注册发现依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--网关gateway依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
    </dependencies>

创建启动类:
在这里插入图片描述

package cn.itcast.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);
    }
}

2.2 编写路由配置及nacos地址

在这里插入图片描述

lb是Load Balance的缩写,意思就是负载均衡。
在这里插入图片描述

server:
  port: 10010
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes:
        - id: my-gateway # 路由标示,必须唯一
          uri: lb://user-service # 路由的目标地址
          predicates: # 路由断言,判断请求是否符合规则
            - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
        - id: order-service
          uri: lb://order-service
          predicates:
            - Path=/order/**

启动项目进行测试:

可以发现现在可以成功的拿到数据,测试成功。

在这里插入图片描述
在这里插入图片描述


2.3 gateway流程

在这里插入图片描述


2.4 小结

在这里插入图片描述


3. 路由断言工厂(Route Predicate Factory)


3.1 介绍

在这里插入图片描述
在这里插入图片描述
Spring提供了11种基本的Predicate工厂:
在这里插入图片描述
spring路由工厂官网

这里详细说明了11种基本的Predicate工厂的功能和用法:
在这里插入图片描述


3.2 示例

在这里插入图片描述在这里插入图片描述

- After=2017-01-20T17:42:47.789-07:00[America/Denver]
这就表示在 美国 丹佛时间 2030年1月20号 17:42:47 之后的请求才会生效。如果是这个时间之间的请求就会404 not found。


3.3 小结

在这里插入图片描述



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeJiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值