SpringCloud 统一网关Gateway -- 为什么需要网关Gateway快速入门路由断言工厂(Route Predicate Factory)
Posted CodeJiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud 统一网关Gateway -- 为什么需要网关Gateway快速入门路由断言工厂(Route Predicate Factory)相关的知识,希望对你有一定的参考价值。
1. 为什么需要网关
1.1 为什么需要网关
没有网关,我们的微服务消费端,全都要对外网进行暴露。每个微服务消费端,都要进行自己的安全过滤,身份验证,这无疑增加了开发工作量。另外一个原因,如果有安全规则问题,需要更新维护,那么,所有的服务消费端都要更新一遍。
所以,我们需要对请求进行统一的收口,统一的过滤,这是网关最重要的作用。其次,配合服务注册与发现,网关对请求代理后,还可以把请求分发到运转正常的服务消费端,分发的同时也实现了负载均衡,这是网关的另一个重要作用。
网关功能:
- 身份认证和权限校验
- 服务路由、负载均衡
- 请求限流
1.2 网关的技术实现
2. Gateway快速入门
搭建网关服务的步骤:
- 创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖。创建启动类。
- 编写路由配置及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跨域问题处理