资讯专栏INFORMATION COLUMN

Spring Cloud Gateway的入门案例

lavnFan / 1942人阅读

摘要:原文摘要本篇文章主要介绍了什么是,并基于的版本编写一个的入门案例,即基本代理的路由转发配置。作为生态系中的网关,目标是替代,其不仅提供统一的路由方式,并且基于链的方式提供了网关基本的功能,例如安全,监控埋点,和限流等。

原文: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 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工程

配置Spring Cloud Gateway的相关Maven依赖


    
        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
            
        
    


2.2 Spring Cloud Gateway主程序

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: 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
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

相关文章

  • spring cloud gateway 之限流篇

    摘要:常见的限流方式,比如适用线程池隔离,超过线程池的负载,走熔断的逻辑。在令牌桶算法中,存在一个桶,用来存放固定数量的令牌。,令牌桶每秒填充平均速率。 转载请标明出处: https://www.fangzhipeng.com本文出自方志朋的博客 在高并发的系统中,往往需要在系统中做限流,一方面是为了防止大量的请求使服务器过载,导致服务不可用,另一方面是为了防止网络攻击。 常见的限流方式,...

    joy968 评论0 收藏0
  • spring cloud gateway 全局过滤器

    摘要:全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,访问限制等等。单独定义只需要实现这两个接口就可以了。欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程 全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,IP访问限制等等。 接口定义类:org.springframework.c...

    crossea 评论0 收藏0
  • springboot(六)——springboot与webflux结合初探

    摘要:的这几天看了看的请求处理流程,因为之前一直用的和,一开始对的处理流程有点懵逼,找不到入口,后来跟了代码,在网上找了点资料,发现的入口在的方法该方法的作用就是把接收到的或者最终需要返回的,包装转换为和。 spring-cloud-gateway 的ReactorHttpHandlerAdapter 这几天看了看spring-cloud-gateway的请求处理流程,因为之前一直用的spr...

    hersion 评论0 收藏0
  • Spring Cloud GateWay 路由转发规则介绍

    摘要:组合示例相同的也可以配置多个,请求的转发是必须满足所有的后才可以进行路由转发,组合使用示例如下所示总结本章节讲解了的相关谓词断言基本使用方式,内部提供了很多种灵活的路由转发规则,在同一个路由内存在多个时,同时满足规则后请求才会被路由转发。 Spring在因Netflix开源流产事件后,在不断的更换Netflix相关的组件,比如:Eureka、Zuul、Feign、Ribbon等,Zuu...

    zgbgx 评论0 收藏0
  • SpringCloud组件: GateWay整合Eureka转发服务请求

    摘要:单服务我们简单编写一个请求地址,输出字符串信息,添加依赖如下所示配置文件如下所示服务名注册到服务端口号配置该服务的服务名称为,这里对应的。 在上一篇文章Spring Cloud GateWay 路由转发规则介绍中我们讲解了SpringCloud Gateway内部提供的断言、谓语,让我们可以组合更精确的业务场景进行请求,既然SpringCloud GateWay担任了网关的角色,在之前...

    warmcheng 评论0 收藏0

发表评论

0条评论

lavnFan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<