Spring Cloud 学习笔记 —— 服务网关 Gateway 简介及 HelloWorld 简单使用

12.1 Spring CloudGateway简介

Gateway 是基于 Spring 5.0 、Spring boot 2.0 、Project item 来开发的
特点:

  • 限流
  • 路径重写
  • 动态路由
  • 集成 Spring Cloud DiscoveryClient
  • 集成 Hystrix 断路器

和 Zuul 对比

  • 1.Zuul 是 Netflix 公司的开源产品,Spring Cloud Gateway 是 Spring 家族中产品,可以和 Spring 家族中的其他组件更换的融合
  • 2.Zuul1 不支持长链接,例如 websocket
  • 3.Spring Cloud Gateway 支持限流
  • 4.Zuul 基于 Servlet,Spring Cloud Gateway 基于 Netty 来开发,实现了异步和非阻塞,占用资源更小,性能强于 Zuul
  • 未来 Spring Cloud Gateway 更具有前景

12.2 基本用法

Spring Cloud Gateway 支持两种不同的用法:

  • 编码式
  • yml 配置

两种都看下

1.编码式
首先创建 Spring Boot 项目的 moudle 模块,属于 javaboycloud 项目,添加 Spring Cloud Gateway 依赖;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不要添加 Web 依赖,因为 Web 依赖默认添加 Tomcat,而 Gateway 没有使用 Tomcat ,使用的是 Netty。只需要添加Gateway 依赖即可,Gateway 依赖中包含 Netty 依赖

  • (1)项目创建成功后,只需要配置一个 RouteLocator 这样一个 Bean ,首先看一下测试地址
    http://httpbin.org/get(可以直接用)
    在这里插入图片描述

  • (2)在启动类加一个 Bean

   @Bean
    RouteLocator routeLocator(RouteLocatorBuilder builder){
        return builder.routes()
                .route("javaboy_route",r ->r.path("/get").uri("http://httpbin.org"))
                .build();
    }

意思是把 “/get” 路径的请求转发到 “http://httpbin.org” 上去访问 "/get"请求

  • (3)启动项目,访问:http://localhost:8080/get
    在这里插入图片描述
    这就是编程式
    properties 配置
  • (1)注释 RouteLocator Bean 对象
//    @Bean
    RouteLocator routeLocator(RouteLocatorBuilder builder){
        return builder.routes()
                .route("javaboy_route",r ->r.path("/get").uri("http://httpbin.org"))
                .build();
    }
spring.cloud.gateway.routes[0].id=javaboy-route
spring.cloud.gateway.routes[0].predicates[0]=Path=/get
spring.cloud.gateway.routes[0].uri=http://httpbin.org

routes 路由是一个数组,predicates 判断也是一个数组,配置数组要用中括号,中括号内是数组的第几项,例如第一项:"[0]",第二项:"[1]"

  • (2)重启项目,访问:http://localhost:8080/get依然成功
    在这里插入图片描述
    这就是 properties 配置

2.yml 配置

  • (1)注释 RouteLocator Bean 对象
//    @Bean
    RouteLocator routeLocator(RouteLocatorBuilder builder){
        return builder.routes()
                .route("javaboy_route",r ->r.path("/get").uri("http://httpbin.org"))
                .build();
    }
spring:
  cloud:
    gateway:
      routes:
        - id: javaboy-route
          uri: http://httpbin.org
          predicates:
            - Path=/get

yml 中的数组要加已个 “-”,每项 “:” 后边要有一个空格

  • (2)重启项目,访问:http://localhost:8080/get,继续成功
    在这里插入图片描述
    这就是 yml 配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值