Spring Cloud GateWay的简单使用

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路Spring Cloud GateWay的简单使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

什么是Gateway

Spring Cloud Gateway官方文档:Spring Cloud Gateway

1.网关是一个服务:

Spring Cloud GateWay是Spring Cloud的⼀个全新项⽬,⽬标是取代Netflix Zuul,基于Spring5.0+SpringBoot2.0+WebFlux(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能⾼于Zuul,官⽅测试,GateWay是Zuul的1.6倍,旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式
2.网关的三大功能

  • Route(路由):这是网关的基本构建块。它由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配
  • Predicate(断言):这是一个 Java 8 的 Predicate。输入类型是一个 ServerWebExchange。我们可以使用它来匹配来自 Http 请求的任何内容,例如 headers 或参数
  • Filter(过滤器):这是 org.springframework.cloud.gateway.filter.GatewayFilter 的实例,我们可以使用它修改请求和响应

3.工作流程

Spring Cloud GateWay的简单使用

 客户端向 SpringCloud Gateway 发出请求。如果 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。 过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(pre)或之后(post)执行业务逻辑

简单入门

1.新建模块并选择Gateway依赖        

Spring Cloud GateWay的简单使用

2.将此模块聚合到gulimall-Common中

<dependency>
    <groupId>com.liucan.gulimall</groupId>
    <artifactId>gulimall-common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

 3.配置注册中心地址、应用名称、端口

# 应用名称
spring.application.name=gulimall-gateway
# 注册中心地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# 服务端口
server.port=88

4.在主启动类中添加 @EnableDiscoveryClient 开启服务注册与发现

5.在nacos中为Gateway新建一个命名空间

Spring Cloud GateWay的简单使用

6.回到配置列表切到刚刚创建的Gateway命名空间中新增配置

Spring Cloud GateWay的简单使用在配置内容配置一下Gateway的应用名

7.在项目中新建bootstrap.properties,内容如下

#应用名
spring.application.name=gulimall-getaway

# 指定nacos配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

# 指定选择哪个配置中心中的命名空间
spring.cloud.nacos.config.namespace=fa43f669-99ae-44fe-a50d-54ba43ecf027

# 指定选择命名空间下的组
spring.cloud.nacos.config.group=dev

 8.新建 application.yml 在里面编写路由规则

要求:在我们访问 http://localhost:88/hello?url=qq 时,跳转到https://www.qq.com

           在我们访问 http://localhost:88/hello?url=baidu 时,跳转到https://www.baidu.com

spring:
  cloud:
    gateway:
      routes:
        - id: test_route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu

        - id: test_route1
          uri: https://www.qq.com
          predicates:
            - Query=url,qq  # Query 为精确匹配 则 url的参数等于qq时,为请求路由

        1.routes 接收的是一个数组,可支持多种路由模式

        2.- id:为这个路由规则的名称,可随意

        3. predicates:路由的规则,支持正则表达式。则断言为真,才会请求路径

        4.uri :要路由的地址

9.启动主启动类,测试 

Spring Cloud GateWay的简单使用

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154459.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!