总结 zuul 路由配置规则 以及 超时设置

总结:
1.配置zuul.routes.<路由规则> 如果路由规则和存在的服务应用名是一致的serviceID可以不用配置
2.配置服务的ribbon超时时间应该 小于 hystrix 时间,否则ribbon超时失效
3.服务配置的 ribbon.ReadTimeout: 30000 超过30s 会执行 implements FallbackProvider 自定义的兜底方法

application.yml配置文件

spring:
  profiles:
    active: dev
  application:
    name: zuul-gateway
    
  servlet:
    multipart:
      max-file-size: 1048576
      max-request-size: 1048576
      file-size-threshold: 1024
      location: /
zuul:
  host: #如果路由方式是serviceId的方式,那么ribbon的生效,如果是url的方式,则zuul.host开头的生效。
    maxTotalConnections : 20000
    connection-request-timeout-millis: 12000
    socketTimeoutMillis: 12000
    connect-timeout-millis: 12000
  ribbon:
    eager-load:
      enabled: true


ribbon:
  eager-load:
    enabled: true

hystrix:
  command:
    user-manager-service:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 100000
    data-upload-service:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 100000

user-manager-service:
  ribbon:
    NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList
    ConnectTimeout: 20000
    ReadTimeout: 30000
    MaxTotalHttpConnections: 500
    MaxConnectionsPerHost: 100

配置服务的ribbon超时时间 小于 hystrix 时间,否则ribbon超时失效

user-manager-service:
  ribbon:
    NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList
    ConnectTimeout: 20000
    ReadTimeout: 30000  #超过30s服务超时(认为服务挂掉了)
    MaxTotalHttpConnections: 500
    MaxConnectionsPerHost: 100

application-dev.yml

#单例模式启动zuul Server
server:
  port: 8101 #启动端口
  max-http-header-size: 10485760

spring:
  mvc:
    static-path-pattern: /**
  resources:
    static-locations: classpath:/static/,classpath:/public/,file:${img.path.prifix}

img:
  path:
    prifix: C:/image

zuul:
  #为zuul设置一个公共的前缀
  prefix: /baas/api
  stripPrefix: false
  host:
    connect-timeout-millis: 120000 #HTTP连接超时要比Hystrix的大
    socket-timeout-millis: 120000   #socket超时
  routes:
    user-manager-service: #自定义的路由规则名 与服务应用名一致 可以不配置serviceId
      path: /base/user/**  #映射到服务的应用名为user-manager-service的服务
      stripPrefix: false #
      sensitiveHeaders:

user-manager-service 服务的应用名 与自定义的路由规则名一致 可以不配置serviceId

spring:
  application:
    name: data-upload-service
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 3 和 Zuul 的集成是一个典型的微服务网关解决方案。Zuul 是 Netflix 提供的一个用于构建灵活、可靠的企业级 API 网关的工具。它可以在多个层面上提供路由、过滤等功能,比如请求转发、日志记录、安全控制等。 ### Spring Boot 3 中集成 Zuul 的步骤 假设您已经有一个基于 Spring Boot 开发的服务,并希望将其作为微服务的一部分部署到 Zuul 网关下,以下是一些基本步骤: #### 步骤 1: 添加依赖 首先,在您的 `pom.xml` 文件或 `build.gradle` 文件中添加对 Zuul 的依赖。对于 Maven,示例如下: ```xml <dependencies> <!-- 其他依赖 --> <dependency> <groupId>com.netflix.zuul</groupId> <artifactId>zuul</artifactId> <version>${zuul.version}</version> </dependency> </dependencies> ``` 确保更新 `<version>` 标签为您所使用的 Zuul 版本。 #### 步骤 2: 创建 Zuul 应用 接下来,创建一个新的 Spring Boot 应用。您可以从 `application.yml` 或 `application.properties` 文件开始配置 Zuul: ```yaml server: port: 9500 spring: application: name: zuul-gateway zuul: routes: your-service-name: url: lb://your-service-name path: /api/** # 这里的路径应指向您的实际服务端点 ``` 在此配置中,`lb://your-service-name` 表示 Zuul 将通过负载均衡器查找名为 `your-service-name` 的服务实例。 #### 步骤 3: 启动并运行 确保所有依赖项都已安装并且所有文件均已同步,然后可以使用以下命令启动应用: ```bash mvn spring-boot:run # 如果使用 Maven ./gradlew bootRun # 如果使用 Gradle ``` 这将启动您的 Zuul 实现,现在可以访问如 `/api/*` 的 URL 来访问您的服务。 ### 完善功能 可以根据需要进一步配置 Zuul,例如添加自定义过滤器、处理特定错误码等。过滤器可以帮助实现更多的功能性需求,如身份验证、日志记录或性能监控。 #### 相关问题 - 示例: 1. **如何在 Spring Boot 3 中启用自动发现和路由服务**? 2. **如何配置 Zuul 过滤器来实施更复杂的权限检查**? 3. **如果遇到网络延迟或连接超时的问题,如何优化 Zuul 性能?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值