Spring Cloud Alibaba 入门学习笔记第四篇:Gateway路由网关

什么是Gateway路由网关

关于Gateway路由网关,这篇文章介绍的非常详细:Gateway网关简介及使用

Spring Cloud Gateway 特性:(官方文档机翻)

	基于 Spring Framework 5、Project Reactor 和 Spring Boot 2.0

	能够匹配任何请求属性的路由。

	谓词和过滤器特定于路由。

	断路器集成。

	Spring Cloud DiscoveryClient 集成

	易于编写谓词和过滤器

	请求速率限制

	路径重写

Spring Cloud Gateway: 官方文档地址

总的来说就是一个牛皮的基于Spring WebFlux的请求处理框架

简单使用

引入JAR

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <!--        nacos 注册中心-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>

配置路由

server:
  port: 8000
spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true  # 开启路由网关服务发现
          lower-case-service-id: true  # 服务名转为小写
          url-expression: 'lb://'+serviceId   # 服务调用方式  serviceId表示注册中心的服务名称
      routes:
        # 服务转发
        - id: test-service  #必填 路由id
          uri: lb://service-a   # 必填 对应上面的url-expression   表示调用注册中心里面的名为service-a的服务
          predicates:      # 必填 至少有一种匹配方式
            - Path=/api/**  # 匹配所有api开头的路径    (其他匹配方式见官方文档)
          filters:     # 非必填
            - StripPrefix=1  # 将路径的第一个值去掉后转发 例如 /api/getUser  会变成 /getUser
        # 路由转发
        - id: cookie_route
          uri: http://hjljy.cn/    # 转发到http://hjljy.cn/
          predicates:
            - Cookie=name, hjljy # 如果携带cookie,参数名为name,值为hjljy,则转发
    nacos:
      server-addr: 127.0.0.1:8848  # 注册中心地址
      discovery:
        service: gateway

使用测试

1 启动nacos注册中心
2 启动路由网关服务(需要先保证注册中心存在一个名为service-a的服务,并且有个接口 /getUser )
3 访问 127.0.0.1:8000/api/getUser 查看是否返回正确的数据

注意事项

  • 需要去掉对spring-boot-starter-web 的依赖,不能同时存在
  • 服务名避免使用下划线链接

标题:Spring Cloud Alibaba 入门学习笔记第四篇:Gateway路由网关
作者:hjljy
地址:https://www.aliuying.com/articles/2021/05/31/1622431497283.html

评论

取消