美文网首页
Gateway--服务网关

Gateway--服务网关

作者: MaJiT | 来源:发表于2020-07-19 12:03 被阅读0次

Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。

1.创建网关微服务

2.导入依赖

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

2.配置微服务

spring:
  cloud:
   gateway:
      discovery:
        locator:
          enabled: true    #开启从注册中心动态创建路由
      routes:   # 路由数组[路由 就是指定当请求满足什么条件的时候转到哪个微服务]
        - id: cloud-provider-payment  # 当前路由的标识, 要求唯一
          uri: lb://cloud-payment-service #nacos中的配置
          #uri: http://localhost:8001 #实际路径
          #order: 1 # 路由的优先级,数字越小级别越高
          predicates:  # 断言(就是路由转发要满足的条件)
            #- Path=/payment/list/** # 当请求路径满足Path指定的规则时,才进行路由转发
            #- After=2018-01-20T06:06:06+08:00[Asia/Shanghai] #这个时间以后生效
            #- Cookie=username,mj #Cookie名必须为mj才能访问
            - Header=X-Access-Token, #请求头中X-Access-Token部位空
            #- Method=GET #只有GET方法能访问
            #filters:  # 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改
            #- StripPrefix=1  # 转发之前去掉1层路径

3.自定义过滤器

@Configuration
@Slf4j
public class MyGatewayFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

        log.info("################ 全局Gateway 过滤器开始工作 ###############");
        HttpHeaders headers = exchange.getRequest().getHeaders();
        //需求操作
        if (headers.containsKey("X-Access-Token")){
            exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
            return exchange.getResponse().setComplete();
        }

        return chain.filter(exchange);
    }

    @Override
    public int getOrder() {
        return 0;
    }
}

4.启动类

@SpringBootApplication
@EnableEurekaClient
public class GatewayApplication3000 {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication3000.class,args);
    }
}

注意:gateway微服务不需要引入web starter

相关文章

  • Gateway--服务网关

    Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0...

  • 网络

    1.网关GATEWAY--路由器Ip地址2.hosts:本地DNS映射表3.域名解析服务器DNS:可以是连接的路由...

  • 最简单 springcloud 项目实践

    包含如下子项目: config--配置中心 euraka--注册中心 gateway--网关 server1-n-...

  • 第五章 Gateway--服务网关

    接上一篇文章开始网关之旅,首先告诉大家网关是什么,Gateway简介,怎么配置,怎么入门,执行流程等等相关介绍。 ...

  • 2018-03-27

    微服务网关 什么是微服务网关 微服务网关也称为服务网关或者API网关。服务网关 = 路由转发 + 过滤器...

  • 为什么需要后端网关

    一、什么是服务网关 二、为什么需要服务网关 三、服务网关技术选型 1、总体流程 2、引入网关的注意点 3、服务网关...

  • 服务网关-Zuul

    一、服务网关 服务网关是在微服务前面设置一道屏障,请求先到服务网关,网关会对请求进行过滤、校验、路由转发等处理...

  • SpringCloud灰度发布

    一: 调用链分析 请求==>网关==>服务Resttemplate调用==>服务请求==>网关==>服务Fegin...

  • Spring Cloud 之服务网关

    服务网关(API GATEWAY) 服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST...

  • Spring Cloud构建微服务架构:服务网关(过滤器)【Da

    在前两篇文章:服务网关(基础)、服务网关(路由配置)中,我们了解了Spring Cloud Zuul作为网关所具备...

网友评论

      本文标题:Gateway--服务网关

      本文链接:https://www.haomeiwen.com/subject/hdslkktx.html