SpringCloud Gateway 服务网关,断言

SpringCloud Gateway 使用非阻塞模式,性能优于 Netflix Zuul,并且支持长连接,其核心组件就是断言和过滤器。

在之前Consul 主项目中添加 gateway模块,实现服务网关功能。

SpringCloud Gateway 路由功能,使用断言进行请求和路由的匹配,匹配上的请求被发送到对应的网关 web 处理器进行处理,处理器处理时经过一系列过滤器。

1、maven依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

2、配置文件

server:
  port: 8801
spring:
  application:
    name: gateway
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: gateway
    gateway:
      discovery:
        locator:
          enabled: false
          lower-case-service-id: true
      routes:
        - id: logservice
          uri: lb://logservice
          predicates:
          - Path=/log/**
          filters:
          - StripPrefix=1
        - id: orderservice
          uri: lb://orderservice
          predicates:
          - Path=/order/**
          filters:
          - StripPrefix=1

# 配置日志
logging:
  level:
    org.springframework.cloud.gateway: debug

routes节点下可以设置多个路由,每个路由由唯一id,匹配对应的服务,

在predicates节点下配置断言, Gateway 内置了多种断言,常用的有 Path, 路径路由断言,上面uri里的lb意思是使用负载均衡,也可以为具体的网址。

Method 方法路由断言,只允许指定的请求方法类型通过。其他还包括Header,Cookie, Host,QueryParam,RemoteAddr, DateTime。

3、启动类上添加注解

@EnableDiscoveryClient

4、从网关访问日志服务和订单服务

http://localhost:8801/log/log

http://localhost:8801/order/order

猜你喜欢

转载自blog.csdn.net/suoyx/article/details/115025535