每天20分钟之spring-cloud-gateway基础一

2022-08-16 23:07:16 浏览数 (2)

1 概述

基于springboot和spring webflux,基于netty运行,的http网关服务。

它的目标是替换奈飞的zuul。其实它和zuul2的性能差不多。选择其一即可。

考虑到spring的生态,使用spring-cloud-gateway更加有优势

2 核心概念

Route 网关的基础(断言为真时匹配到路由)

  • id
  • 目标uri
  • 断言
  • 过滤器

Predicate java8的函数,输入类型是webflux的ServerWebExchange,允许开发人员处理http请求

Filter是gateway上的过滤器,可以在请求发出前后做一些业务上的处理

整体流程

image.pngimage.png

maven配置

代码语言:txt复制
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-gateway -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>3.0.4</version>
        </dependency>


        <!--
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
        </dependency>
    </dependencies>

服务配置

代码语言:txt复制
spring:
  application:
    name: zuul-gateway-static
  cloud:
    gateway:
      routes:
        - id: test1
          uri: "http://www.example.com/"
          predicates:
            - Path=/abc/**
server:
  port: 10011
  address: 127.0.0.1
debug: true
management:
    endpoint:
      gateway:
        enabled: true
    endpoints:
      web:
        exposure:
          include: "*"
logging:
  config: classpath:logback-spring.xml



#eureka.instance.ip-address=127.0.0.1
#eureka.client.serviceUrl.defaultZone=http://tom:123456@localhost:9010/eureka/
#eureka.instance.preferIpAddress=true
#eureka.instance.instance-id=${spring.application.name}:${server.address}:${server.port}
#eureka.client.healthcheck.enabled=true
#eureka.instance.lease-expiration-duration-in-seconds=20
#eureka.instance.lease-renewal-interval-in-seconds=15

访问页面就可以看到转发的数据 http://127.0.0.1:10011/abc

0 人点赞