
定义 :




功能

特点

gateway与zuul的区别

zuul的模型


gateway模型




gateway的工作流程


filter


@Component
@Slf4j
//设置一个全局的过滤器
public class MyLogGateWayFilter implements GlobalFilter, Ordered {
//做拦截的业务逻辑处理
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
String username = exchange.getRequest().getQueryParams().getFirst("token");
if(username == null){
//如果为空 ,拦截请求 并提示信息
log.info("用户未登陆,不能访问");
exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
return exchange.getResponse().setComplete();
}
//反之则放行请求
return chain.filter(exchange);
}
//设置执行级别
@Override
public int getOrder() {
return 0;
}
}
springboot 整合gateway
网管模块
pom.xml
<dependencies>
<!--gateway的依赖包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--添加common 通用包-->
<dependency>
<artifactId>springcloud-api-common</artifactId>
<groupId>com.tina.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--添加热部署的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- 引入eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
=========================================================
启动类
@SpringBootApplication////表明是一个启动类
@EnableDiscoveryClient////开启发现注册在eureka上的其他实例
@EnableEurekaClient////表明是eureka客户端
public class GatewayApplication9527 {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication9527.class,args);
}
}
=========================================================
配置文件
server:
port: 9527
##设置name
spring:
application:
name: springcloud-gateway
# 配置gateway路由
cloud:
gateway:
discovery:
locator:
enabled: true #开启从注册中心动态创建路由的功能,利用微服务名进行路由
routes:
- id: routh_consumer
uri: lb://SPRINGCLOUD-PAYMENT-SERVICE #匹配后提供服务的路由地址
predicates:
- Path= /payment/** #断言 路径匹配的进行路由
#注册到eureka
eureka:
client:
register-with-eureka: true #是否将自己注册到注册中心,集群必须设置为true配合ribbon
fetch-registry: true #是否从服务端抓取已有的注册信息
service-url:
defaultZone: http://springcloud-eureka-server7001:7001/eureka,http://springcloud-eureka-server7002:7002/eureka
instance:
instance-id: springcloud-gateway
prefer-ip-address: true #访问路径可以显示IP地址
lease-renewal-interval-in-seconds: 1 #向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
lease-expiration-duration-in-seconds: 2 #收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除
#开启eureka负载均衡策略
ribbon:
eureka:
enabled: true
=========================================================
网友评论