微服务框架搭建(网关路由)

文章目录

1.创建gateway工程

微服务框架搭建(网关路由)

![在这里插入图片描述](https://www.icode9.com/i/ll/?i=21d19a7e32d74b4d8883ca74300011eb.png?,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASSdtIHRoZSBiZXN0,size_20,color_FFFFFF,t_70,g_se,x_16)

2.引入pom文件

因为我使用的是spring2.2.2版本,cloud使用的Hoxton.SR9
cloud因为版本过高导致jar包冲突,我就降低了cloud的版本为Hoxton.RELEASE(完整的pom文件可以去我的github上看)


        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

3.注册进入nacos

  • 引入pom文件
 <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
  • 修改配置

4.添加路由规则

  • 增加bootstrap配置文件夹
    微服务框架搭建(网关路由)
spring:
  server:
    port: 80
  application:
    name: hz-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.1.202:8848
    gateway:
      discovery:
        locator:
          enabled: true    # 是否开启负载均衡策略
      routes:
        # system
        - id: system
          uri: lb://hz-system
          # 断言
          predicates:
            - Path=/system/**
          # 过滤
          filters:
            # 剥离一级路径
            - StripPrefix=1

5.过滤器的使用

继承GlobalFilter然后实现filter方法

@Component
public class GatewayFilter implements GlobalFilter {


    // 白名单,用于跳过某些请求
    private static final String[] whiteList = {
            "/system/config"
    };

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String url = exchange.getRequest().getURI().getPath();
        System.out.println("网关:" + url);
        // 这里可以用来做用户登录验证
        // 跳过不需要验证的路径
        if (Arrays.asList(whiteList).contains(url)) {
            // 传递给下一个过滤器
            return chain.filter(exchange);
        }
        return chain.filter(exchange);
//        throw  new RuntimeException("鉴权错误");
    }
}
上一篇:SpringCloud2020 Gateway+NACOS,503 Service Unavailable解决


下一篇:通过GatewayWorker/Workerman搭建Websocket微服务