什么是网关?
API网关 : 系统的统一入口
网关的作用
请求分发
负载均衡
过滤拦截
网络隔离
![](https://i-blog.csdnimg.cn/blog_migrate/0f4a41ae0c5d42a83ed4dddf704d86d3.png)
Gate集成
添加依赖
<!--gateway网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
配置application.yml
spring:
application:
name: shop-gateway
gateway:
discovery:
locator:
enabled: true # 让gateway可以发现nacos中的微服务
自定义路由规则
id : 路由的标识
uri : 路由指向的目的地,转发到的微服务是哪个
predicate : 断言条件判断,只有true才会执行路由
filter : 过滤器用于修改请求和响应信息
spring:
cloud:
gateway:
routes:
- id: product_route
uri: lb://product-service
predicates:
- Path=/product-serv/**
filters:
- StripPrefix=1
Filter的生命周期
PRE : 在请求路由之前调用,可以利用这个过滤器实现身份验证
POST : 在路由到微服务以后执行,将响应从微服务发送给客户端
局部路由过滤器和全局路由过滤器
GatewayFilter : 对单个路由的过滤器,实现GatewayFilter接口
GlobalFilter : 对所有里有生效,不用配置,实现GlobalFilter接口
Gateway网关集成Sentinel
添加依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-spring-cloud-gateway-adapter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>
配置application.yml
spring:
cloud:
sentinel:
transport:
port: 8719
dashboard: localhost:8080