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

Posted CodeJiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud 统一网关Gateway -- 为什么需要网关Gateway快速入门路由断言工厂(Route Predicate Factory)相关的知识,希望对你有一定的参考价值。

本节案例承接上节

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 小结



以上是关于SpringCloud 统一网关Gateway -- 为什么需要网关Gateway快速入门路由断言工厂(Route Predicate Factory)的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud 统一网关Gateway -- 路由的过滤器配置默认过滤器

SpringCloud 统一网关Gateway -- 全局过滤器 GlobalFilter@Order注解过滤器链执行顺序Gateway跨域问题处理

SpringCloud 统一网关Gateway -- 全局过滤器 GlobalFilter@Order注解过滤器链执行顺序Gateway跨域问题处理

SpringCloud Gateway网关为认证中心和用户微服务构建统一的认证授权入口

十一SpringCloud实用篇_Gateway服务网关

十一SpringCloud实用篇_Gateway服务网关