Gateway基本配置的参数以及yml示例

Spring Cloud Gateway作为API网关,可以通过配置文件来定义路由规则、过滤器和相关参数。

参入如下:

  1. routes: 定义了一组路由规则,每个路由规则包含了路由的ID、目标URI、断言集合和过滤器集合。

    • id: 路由的唯一标识符,用于区分不同的路由规则。
    • uri: 请求最终被转发到的目标地址,可以是具体的URL或者服务名称。
    • predicates: 断言集合,用于定义路由匹配的条件,如路径、方法、头信息等。可以使用多种断言类型,如Path、Method、Header等。
    • filters: 过滤器集合,用于在请求被路由前后对请求或响应进行修改。可以添加多个过滤器,按照顺序执行。
    • order: 路由的优先级,数字越小,优先级越高。当有多个路由规则匹配时,将根据优先级选择最合适的路由。
    • default-filters: 默认的过滤器配置,可以全局应用。这些过滤器将应用于所有的路由规则。
  2. discovery.locator.enabled: 当设置为true时,Spring Cloud Gateway将从服务发现客户端获取服务实例信息,以实现负载均衡。这需要与服务注册中心(如Eureka)配合使用。

  3. hystrix.command: 与Hystrix相关的配置,可以设置降级和熔断的相关参数。Hystrix是一个用于处理分布式系统中的容错和隔离的工具。

    • fallbackUri: 指定降级时的备用URI,当请求失败时会转发到该URI进行处理。
    • execution.isolation.thread.timeoutInMilliseconds: 设置Hystrix命令执行的超时时间,单位为毫秒。
  4. requestratelimiter: 用于设置请求速率限制的参数,如replenishRateburstCapacity

    • key-resolver: 用于解析请求的键值,用于确定是否超过速率限制。
    • redis-rate-limiter.replenishRate: 每秒允许的请求数。
    • redis-rate-limiter.burstCapacity: 令牌桶的最大容量。
  5. stripPrefix: 用于配置是否移除请求路径的前缀。例如,如果设置为1,则请求路径中的前缀将被删除。

  6. preserveHostHeader: 用于配置是否保留原始请求的Host头信息。如果设置为false,则在转发请求时将不包含原始的Host头信息。

  7. retry: 用于配置请求重试的策略,如重试次数和状态码。

    • retries: 重试次数。
    • methods: 指定哪些HTTP方法需要进行重试,如GET、POST等。
    • backoff: 退避策略,用于控制重试之间的等待时间。
      • firstBackoff: 第一次重试的等待时间。
      • maxBackoff: 最大等待时间。
      • factor: 退避因子,用于计算后续重试的等待时间。
      • jitter: 抖动因子,用于增加重试之间的随机性。
  8. requestSize: 用于限制客户端请求体的最大大小。可以设置一个具体的大小,如10MB。

  9. modifyRequestBody: 用于修改请求体内容的配置。

    • replace: 替换请求体中的内容。
      • from: 要替换的原始内容。
      • to: 替换后的新内容。

yml配置示例

spring:
  cloud:
    gateway:
      # 定义路由规则
      routes:
        - id: route_id
          uri: http://example.com
          predicates:
            - Path=/api/**
          filters:
            - StripPrefix=1
            - name: RequestRateLimiter
              args:
                key-resolver: "#{@ipKeyResolver}"
                redis-rate-limiter.replenishRate: 10
                redis-rate-limiter.burstCapacity: 20
          order: 100
          default-filters:
            - name: Retry
              args:
                retries: 3
                methods: GET,POST
                backoff:
                  firstBackoff: 100ms
                  maxBackoff: 1000ms
                  factor: 2
                  jitter: 0.2
        # 其他路由规则...

      # 配置服务发现客户端
      discovery:
        locator:
          enabled: true

      # 配置 Hystrix
      hystrix:
        command:
          fallbackUri: forward:/fallback
          execution:
            isolation:
              thread:
                timeoutInMilliseconds: 2000

      # 配置请求体大小限制
      requestSize:
        maxSize: 10MB

      # 配置请求体修改
      modifyRequestBody:
        replace:
          from: "oldValue"
          to: "newValue"

网关的在项目中的应用

Spring Cloud Gateway主要用于作为API网关,提供路由、安全、监控等功能。它是基于Spring 5和Spring Boot 2构建的,是一个响应式的API网关。

首先,Gateway在微服务架构中扮演着重要的角色,它不仅是请求的入口点,还负责请求的分发和增强。以下是Gateway的一些关键功能:

  • 请求路由:根据请求的属性(如header、路径、参数等)将请求转发到相应的服务。
  • 服务发现:与服务注册中心集成,实现负载均衡和服务实例的选择。
  • 安全性:提供身份验证和授权功能,确保只有合法请求能够访问后端服务。
  • 监控和指标:记录和报告网关的性能指标,帮助开发者了解系统的运行状况。
  • 容错性:通过集成Hystrix等工具,提供熔断和降级功能,保护系统在故障时的稳定性。
  • 限流:通过配置请求速率限制,防止系统过载。
  • 路径改写:在将请求转发到后端服务之前,可以对请求的路径进行修改。

总的来说,Spring Cloud Gateway是专为微服务架构设计的API网关,它不仅提供了强大的路由功能,还支持服务的发现、安全控制、监控和容错等,是构建微服务系统的重要组件。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值