1、什么是Spring Cloud Gateway
Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。2、Spring Cloud Gateway入门案例
2.1 创建maven工程,pom.xml文件4.0.0 com.lynch spring-cloud-gateway 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.0.3.RELEASE UTF-8 UTF-8 1.8 Finchley.RELEASE org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-starter-gateway org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
2.2 Spring Cloud Gateway主程序
package com.lynch;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.gateway.route.RouteLocator;import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;import org.springframework.context.annotation.Bean;/** * Spring Cloud Gateway主程序 * * @author Lynch */@SpringBootApplicationpublic class Application { @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() // basic proxy .route(r -> r.path("/baidu") .uri("http://baidu.com:80/")) .build(); } public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
2.3 编写application.yml文件
server: port: 8080spring: application: name: spring-cloud-gateway cloud: gateway: routes: - id: xujin_route uri: http://www.xujin.org:80/ predicates: - Path=/xujin logging: level: org.springframework.cloud.gateway: TRACE org.springframework.http.server.reactive: DEBUG org.springframework.web.reactive: DEBUG reactor.ipc.netty: DEBUG
2.4 基本代理路由配置等同写法
Spring Cloud Gateway提供了两种配置路由规则的方法第一:通过@Bean自定义RouteLocator
@Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() // basic proxy .route(r -> r.path("/baidu") .uri("http://baidu.com:80/")) .build(); }
第二:通过属于文件或者yml文件配置
spring: cloud: gateway: routes: - id: xujin_route uri: http://www.xujin.org:80/ predicates: - Path=/xujin
2.5 运行测试
访问http://localhost:8080/baidu,路由转发到http://www.baidu.com访问http://localhost:8080/xujin,路由转发到http://xujin.orgyml