文档

Spring Cloud Gateway官方文档地址

特性

  • Java 8
  • Spring Framework 5
  • Spring Boot 2
  • 动态路由
  • 内置到Spring Handler映射中的路由匹配
  • 基于HTTP请求的路由匹配 (Path, Method, Header, Host, etc…​)
  • 过滤器作用于匹配的路由
  • 支持Spring Cloud DiscoveryClient配置路由,与服务发现与注册配合使用

应用

本文springcloud基于Finchley.RELEASE版本

  1. pom.xml引入gateway依赖
        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>
复制代码
  1. 新建自定义filter,继承AbstractGatewayFilterFactory
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpHeaders;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;import java.util.Arrays;
import java.util.List;/*** 过滤器* @author 爱飘de小子*/
@Slf4j
@Component
public class CustomGatewayFilterFactory extends AbstractGatewayFilterFactory<CustomGatewayFilterFactory.Config> {public CustomGatewayFilterFactory() {super(Config.class);log.info("加载 自定义拦截器 [Custom]...");}@Overridepublic Config newConfig() {return new Config();}@Overridepublic List<String> shortcutFieldOrder() {return Arrays.asList("enabled");}/*** @param config* @return*/@Overridepublic GatewayFilter apply(CustomGatewayFilterFactory.Config config) {return (exchange, chain) -> {//Custom=false 跳过验证if (!config.isEnabled()) {return chain.filter(exchange);}//获取请求信息ServerHttpRequest request = exchange.getRequest();HttpHeaders headers = request.getHeaders();//获取请求参数  //具体业务略....String token = headers.getFirst("token");System.out.println("====token===="+token);return chain.filter(exchange);};}public static class Config {/*** 控制是否开启拦截器*/private boolean enabled;public Config() {}public boolean isEnabled() {return enabled;}public void setEnabled(boolean enabled) {this.enabled = enabled;}}
}
复制代码
  1. bootstrap.yml配置gateway
spring:application:name: gateway-democloud:gateway:discovery:locator:enabled: true  #是否开启lower-case-service-id: truedefault-filters:  #全局过滤器配置routes:- id: weburi: lb://epw-webpredicates:- Path=/web/**filters:- StripPrefix=1# 配置自定义CustomGatewayFilterFactory  ,Custom是CustomGatewayFilterFactory的前缀,gateway默认省略GatewayFilterFactory- Custom=true- id: commonuri: lb://epw-commonpredicates:- Path=/common/**filters:- StripPrefix=1eureka:instance:prefer-ip-address: truelease-renewal-interval-in-seconds: 10 #表示eureka client发送心跳给server端的频率,默认为30秒health-check-url-path: /actuator/health #健康检查的地址(依赖spring-boot-starter-actuator)client:registry-fetch-interval-seconds: 10 #表示eureka client间隔多久去拉取服务注册信息,默认为30秒service-url:defaultZone: http://localhost:8761/eureka/
复制代码

说明:

  • default-filters: 里面可以定义一些共同的filter,对所有路由都起作用
  • routes:具体的路由信息,是一个数组,每一个路由基本包含部分:
  • id:这个路由的唯一id,不定义的话为一个uuid
  • uri:http请求为lb://前缀 + 服务id;ws请求为lb:ws://前缀 + 服务id;表示将请求负载到哪一个服务上
  • predicates:表示这个路由的请求匹配规则,只有符合这个规则的请求才会走这个路由。为一个数组,每个规则为并且的关系。
  • filters:请求转发前的filter,为一个数组。
  • order:这个路由的执行order

4.项目启动启动类

import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;/*** @author 爱飘de小子*/
@SpringCloudApplication
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}}
复制代码

说明: @SpringCloudApplication是一个组合注解,包含@SpringBootApplication @EnableDiscoveryClient

springcloud服务网关-gateway相关推荐

  1. SpringCloud 微服务网关Gateway 动态路由配置

    概述:在上一章节<SpringCloud 微服务网关Gateway介绍及简单路由配置>中我们讲述了Gateway的最简单的路由配置方式.但是其中比较明显的问题就是我们在配置路由服务的地址时 ...

  2. SpringCloud—— 微服务网关GateWay

    目录 1.GateWay网关概述 1.1.什么是GateWay? 1.2.为什么要使用微服务网关? 1.3.Zuul与GateWay网关的区别? 2.快速入门 2.1.创建项目 2.2.配置yml文件 ...

  3. 博海拾贝--springcloud的组件及使用(3)服务网关 GateWay

    Srpingcloud 服务网关 GateWay 前言: Spring Cloud Gateway是springcloud官方推出的第二代网关框架,她包括转发.限流.熔断.权限校验等功能. 本文就来介 ...

  4. Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway

    转载自  Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway Spring 官方最终还是按捺不住推出了自己的网关组件:Spring Cloud Gateway ,相比之前我们使 ...

  5. Spring Cloud之(十八)微服务网关GateWay

    十八.微服务网关GateWay Zuul 1.x 是一个基于阻塞 IO 的 API Gateway 以及 Servlet:直到 2018 年 5 月,Zuul 2.x(基于Netty,也是非阻塞的,支 ...

  6. SpringCloud 微服务网关Gateway介绍及简单路由配置

    概述:什么是微服务网关?为了解决用户客户端在调用微服务系统中的多个消费者工程接口时,需要维护非常多的消费者应用接口地址等信息,以及可能存在不同应用见的调用跨域等问题,微服务网关组件随即出现.网关作为用 ...

  7. 微服务_服务网关(Gateway)

    目录 一.为什么需要网关 二.SpringCloud网关的实现方式 三.Gateway实践 1)创建gateway服务,引入依赖 2)编写启动类 3)编写基础配置和路由规则 4)重启测试 5)网关路由 ...

  8. 微服务网关Gateway(七)

    前言 zuul目前已经出现了分歧,zuul 升级到 Zuul2的时候出现了内部分歧,并且导致Zuul的核心人员的离职,导致Zuul2一直跳票,等了两年,目前造成的局面是Zuul已经没人维护,Zuul2 ...

  9. 微服务网关Gateway

    使用场景 不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会多次请求不同的微服务,增加了客户端 ...

最新文章

  1. cloud-init 工作原理 - 每天5分钟玩转 OpenStack(171)
  2. 前端构建工具gulp之基本介绍
  3. Linux 利用yum源安装php5.6+nginx
  4. eclipse中插件修改svn用户名密码
  5. POJ 3164 Command Network (最小树形图)
  6. javascript保留两位
  7. JDBC 获取被插入数据的主键ID值
  8. 内存工作原理及发展历程
  9. 配置Windows Server 2008群集
  10. csu 1578 Opening Ceremony (递推 )
  11. 计算机教室管理使用规则,多媒体教室使用管理细则
  12. 搭窝---开篇语---爆笑语录
  13. 惠普Elite Mini 800 G9 评测
  14. 2017北邮计算机考研经验总结,北邮计算机专考研经验总结.docx
  15. 设计模式(四)工厂模式
  16. 拿到FaceBook注册用户的手机号有多简单?看这篇文章就够了。
  17. Android实现3DTouch效果
  18. 小迪渗透内网渗透(玖)
  19. Fastdfs数据迁移方案
  20. 5G网络正式商用对4G物联网卡造成何种影响?

热门文章

  1. android Bitmap类方法属性 详细说明
  2. 我的小纠结,技术与认知哪个更重要?
  3. posix,perl正则表达式区别
  4. javaweb中服务器启动所执行的程序
  5. Android Robolectric 加载运行本地 So 动态库
  6. 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“的解决
  7. Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析
  8. 130825组队赛-Regionals 2012, North America - East Central NA
  9. 从ip_queue到nfnetlink_queue(上)
  10. 准备在北京Tech·Ed上组织博客园聚会