摘要:原文摘要本篇文章主要介绍了什么是,并基于的版本编写一个的入门案例,即基本代理的路由转发配置。作为生态系中的网关,目标是替代,其不仅提供统一的路由方式,并且基于链的方式提供了网关基本的功能,例如安全,监控埋点,和限流等。
原文:http://xujin.org/sc/gw/gw-01/
摘要:本篇文章主要介绍了什么是Spring Cloud Gateway,并基于Spring Cloud Gateway的Finchley.M8版本编写一个Spring Cloud Gateway的入门案例,即基本代理的路由转发配置。
1.Spring Gateway概述 1.1 什么是Spring Cloud GatewaySpring 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工程配置Spring Cloud Gateway的相关Maven依赖
2.2 Spring Cloud Gateway主程序ch18-1 cn.springcloud.book 1.0-SNAPSHOT 4.0.0 ch18-1-gateway jar ch18-1-gateway http://springcloud.cn Finchley.M8 org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-cloud-starter-gateway org.springframework.boot spring-boot-maven-plugin spring-snapshots Spring Snapshots https://repo.spring.io/snapshot true spring-milestones Spring Milestones https://repo.spring.io/milestone false spring-snapshots Spring Snapshots https://repo.spring.io/snapshot true spring-milestones Spring Milestones https://repo.spring.io/milestone false
SpringCloudGatewayApplication.java,代码如下所示:
package cn.springcloud.book.gateway; 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; @SpringBootApplication public class SpringCloudGatewayApplication { @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(SpringCloudGatewayApplication.class, args); } }2.3 编写application.yml文件
server: port: 8080 spring: application: name: spring-cloud-gateway spring: 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: DEBUG2.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
PS,以上两种方式等同。2.5 错误的示范代码如下:
@Bean public RouteLocator routingConfig() { return Routes.locator() .route("xujin_route") .uri("http://xujin.org") .predicate(host("**.xujin.org")) .build(); }
温馨提示,上面这种写法是基于Spring Cloud Gateway FM4的版本,相关代码已废弃,目前Spring Cloud Gateway将会在FM9之后Realese。2.6 运行测试
访问http://localhost:8080/baidu,路由转发到http://www.baidu.com
访问http://localhost:8080/xujin,路由转发到[http://xujin.orgyml
](http://xujin.org)
@Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() //basic proxy .route(r -> r.path("/baidu") .uri("http://baidu.com:80/") ).build(); }
spring: cloud: gateway: routes: - id: xujin_route uri: http://www.xujin.org:80/ predicates: - Path=/xujin
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71417.html
摘要:常见的限流方式,比如适用线程池隔离,超过线程池的负载,走熔断的逻辑。在令牌桶算法中,存在一个桶,用来存放固定数量的令牌。,令牌桶每秒填充平均速率。 转载请标明出处: https://www.fangzhipeng.com本文出自方志朋的博客 在高并发的系统中,往往需要在系统中做限流,一方面是为了防止大量的请求使服务器过载,导致服务不可用,另一方面是为了防止网络攻击。 常见的限流方式,...
摘要:全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,访问限制等等。单独定义只需要实现这两个接口就可以了。欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程 全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,IP访问限制等等。 接口定义类:org.springframework.c...
摘要:的这几天看了看的请求处理流程,因为之前一直用的和,一开始对的处理流程有点懵逼,找不到入口,后来跟了代码,在网上找了点资料,发现的入口在的方法该方法的作用就是把接收到的或者最终需要返回的,包装转换为和。 spring-cloud-gateway 的ReactorHttpHandlerAdapter 这几天看了看spring-cloud-gateway的请求处理流程,因为之前一直用的spr...
摘要:组合示例相同的也可以配置多个,请求的转发是必须满足所有的后才可以进行路由转发,组合使用示例如下所示总结本章节讲解了的相关谓词断言基本使用方式,内部提供了很多种灵活的路由转发规则,在同一个路由内存在多个时,同时满足规则后请求才会被路由转发。 Spring在因Netflix开源流产事件后,在不断的更换Netflix相关的组件,比如:Eureka、Zuul、Feign、Ribbon等,Zuu...
摘要:单服务我们简单编写一个请求地址,输出字符串信息,添加依赖如下所示配置文件如下所示服务名注册到服务端口号配置该服务的服务名称为,这里对应的。 在上一篇文章Spring Cloud GateWay 路由转发规则介绍中我们讲解了SpringCloud Gateway内部提供的断言、谓语,让我们可以组合更精确的业务场景进行请求,既然SpringCloud GateWay担任了网关的角色,在之前...
阅读 1345·2021-09-24 10:26
阅读 1674·2019-08-30 14:14
阅读 2050·2019-08-29 16:54
阅读 342·2019-08-29 14:09
阅读 1451·2019-08-29 12:55
阅读 906·2019-08-28 18:13
阅读 1542·2019-08-26 13:39
阅读 2531·2019-08-26 11:43