gateway是一个分布式网关组件,其具有路由、断言、过滤等功能。也可集成其他组件来增强网关。

我是在以Nacos为注册中心和配置中心的基础上进行的。

Nacos的简单配置使用(一步到位)_wuyingle1的博客-CSDN博客

然后导入依赖

        <--网关依赖,导入该依赖后不需要再导入spring的web依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.2.10.RELEASE</version>
        </dependency>

在配置中心创建配置,当然不在配置中心写配置在项目的配置文件里也行,只不过你每改一次配置都要重启一次。

 

 配置

spring:
  cloud:
    gateway:
      routes:
        - id: host_route1
          uri: http://127.0.0.1:8081
          order: 1
          predicates:
            - Path=/user/get
            - Weight=DEFAULT_GROUP, 10
        - id: host_route2
          uri: http://127.0.0.1:8082
          order: 2
          predicates:
            - Path=/user/post
            - Weight=DEFAULT_GROUP, 90
          filters:
            - SetStatus=401

routes路由组:下面可分配多个路由地址,代码中我分配了两个路由

路由:由路由id、uri、order、predicates等组成

id:随意,但是要唯一

uri:你要路由到的服务地址

order:顺序优先级,当两个地址相同时,是从小到大匹配的所以会匹配1

predicates:断言

- Path=/*:匹配的路径

- Weight=:请求权重分配,当路径相同时可根据不同权重来分配请求地址 ,例子中的意思是给分组DEFAULT_GROUP的url:http://127.0.0.1:8081/user/get分配10%权重,给分组DEFAULT_GROUP的url:http://127.0.0.1:8082/user/get分配90%权重,也就是路由到第一个的概率为10%,第二个的概率为90%。

filters过滤:

- PrefixPath=/wyl:地址路径前添加一层路径,例:/wyl/user/post

- RedirectTo=302, http://127.0.0.1:8081/user/get:重定向地址,返回状态302

- SetPath=/wyl/{path}:通过模板设置路径,与PrefixPath类似,设置一个路径模板如/user/post映射到{path}上路径就是/wyl/user/post

- RewritePath=/user/post,/user/get:将/user/post路径改写成/user/get

- SetStatus=401:设置返回状态

还有更多的过滤方式可浏览官方文档

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐