`
wang94777600
  • 浏览: 11502 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SpringCloud- 第六篇 Hystrix参数配置(三)

阅读更多

1:概述

image.png
image.png

Hystrix使用Archaius作为配置属性的默认实现。官方配置文档: https://github.com/Netflix/Hystrix/wiki/Configuration
每个属性有四个优先级,依次增大:

  • 1:代码的全局默认值
  • 2:动态全局默认属性
    可以使用全局属性文件来更改全局默认值。
  • 3:代码实例默认
    定义特定于实例的默认值,比如在HystrixCommand构造函数中设置的值
  • 4:动态实例属性
    可以动态设置实例特定的值,从而覆盖前面三个默认级别,格式是:
    hystrix.command.命令key.属性名称=值

2:请求上下文

1:requestCache.enabled
设置是否开启请求的缓存功能,默认true
2:requestLog.enabled
设置是否开启请求的日志功能,默认true

3:命令执行

  • execution.isolation.strategy
    指示HystrixCommand.run()执行哪个隔离策略,选项:
    1:THREAD - 它在单独的线程上执行,并发请求受线程池中线程数的限制
    2:SEMAPHORE - 它在调用线程上执行,并发请求受信号计数的限制
    3:官方推荐使用线程隔离策略,默认也是按照线程隔离进行处理。
    4:信号量隔离的方式是限制了总的并发数,每一次请求过来,请求线程和调用依赖服务的线程是同一个线程,那么如果不涉及远程RPC调用(没有网络开销)则使用信号量来隔离,更为轻量,开销更小。
    5:信号量的大小可以动态调整, 线程池大小不可以动态调整。
    6:配置示例:
@HystrixCommand(fallbackMethod = "error", commandProperties = { @HystrixProperty(name="execution.isolation.strategy", value = "THREAD") })
  • execution.isolation.thread.timeoutInMilliseconds
    表示请求线程总超时时间,如果超过这个设置的时间hystrix就会调用fallback方法。value的参数为毫秒,默认值为1000ms。
@HystrixCommand(fallbackMethod = "error", commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "4000") })
  • execution.timeout.enabled
    这个超时开关表示,当超时后是否触发fallback方法,默认为true。
  • execution.isolation.thread.interruptOnTimeout
    表示HystrixCommand.run()在发生超时时是否应该中断执行,默认true
  • execution.isolation.thread.interruptOnCance
    表示HystrixCommand.run()在发生取消时是否应该中断执行,默认false
  • execution.isolation.semaphore.maxConcurrentRequests
    当隔离策略使用SEMAPHORE时,最大的并发请求量,如果请求超过这个最大值将拒绝后续的请求,默认值为10

4:回退

  • fallback.isolation.semaphore.maxConcurrentRequests
    设置HystrixCommand.getFallback()方法允许从调用线程进行请求的最大数量,默认10
    如果达到最大并发限制,则随后的请求将被拒绝,并抛出异常。
  • fallback.enabled
    开启fallback功能,默认true

5:断路器

  • circuitBreaker.enabled
    设置是否将使用断路器来跟踪健康状况,并且如果断路器跳闸则将其短路。默认true
  • circuitBreaker.requestVolumeThreshold
    设置滚动窗口中将使电路跳闸的最小请求数量,默认20。
    熔断器在整个统计时间内是否开启的阀值,每个熔断器默认维护10个bucket,每秒一个bucket,每个bucket记录成功,失败,超时,拒绝的状态,该阈值默认20次。也就是一个统计窗口时间内(10秒钟)至少请求20次,熔断器才启动。
  • circuitBreaker.sleepWindowInMilliseconds
    熔断器默认工作时间,默认值为5秒,熔断器中断请求5秒后会进入半打开状态,放部分流量过去重试,如果重试成功则会恢复正常请求。
  • circuitBreaker.errorThresholdPercentage
    熔断器错误阈值,默认为50%。当在一个时间窗口内出错率超过50%后熔断器自动启动。熔断器启动后会自动转发到配置的fallbackMethod,进行降级处理。
  • circuitBreaker.forceOpen
    断路器强制开关,如果设置为true则表示强制打开熔断器,所有请求都会拒绝,默认false
  • circuitBreaker.forceClosed
    断路器强制开关,如果设置为true则表示强制关闭熔断器,所有请求都会允许,默认false

6: 度量指标

  • metrics.rollingStats.timeInMilliseconds
    设置统计滚动窗口的持续时间,以毫秒为单位。默认10秒
  • metrics.rollingStats.numBuckets
    该属性设置滚动统计窗口分成的桶的数量。默认10
  • metrics.rollingPercentile.enabled
    表示执行延迟是否应该跟踪和计算为百分比。如果被禁用,则所有汇总统计返回为-1。默认true
  • metrics.rollingPercentile.timeInMilliseconds
    设置滚动窗口的持续时间,在该窗口中保留执行时间以允许百分数计算(单位毫秒),默认1分钟。
  • metrics.rollingPercentile.numBuckets
    设置rollingPercentile窗口将被分成的桶的数量,默认6
  • metrics.rollingPercentile.bucketSize
    设置每个存储桶的最大执行次数,如果在执行多次,将在桶的开头重写。默认100
    例如,如果存储区大小设置为100,并表示10秒的存储区窗口,但在此期间发生500次执行,则只有最后100次执行将保留在该10秒存储区中
  • metrics.healthSnapshot.intervalInMilliseconds
    设置允许执行健康快照之间等待的时间(以毫秒为单位)。默认500

7: ThreadPool配置

  • coreSize
    线程池核心线程数,默认值为10。
  • MAXIMUMSIZE
    设置线程池大小,默认10
  • maxQueueSize
    配置线程池任务队列的大小,默认值为 -1。当使用 -1 时,SynchronousQueue将被使用,即意味着其实这个队列只是一个交换器,任务将被直接交给工作线程处理。如果工作线程不足,那任务将被拒绝;如果使用任何正整数,LinkedBlockingQueue将被使用
  • queueSizeRejectionThreshold
    表示等待队列超过阈值后开始拒绝线程请求,默认值为5,如果maxQueueSize为-1,则该属性失效。
  • keepAliveTimeMinutes
    设置活动保持时间,以分钟为单位,默认1分钟
  • allowMaximumSizeToDivergeFromCoreSize
    配置maximumSize生效。这个值可以等于或高于coreSize,默认false
image.png
image.png
分享到:
评论

相关推荐

    毕业设计之SpringCloud-B2C电子商务平台App端.zip

    3. **配置文件**:如application.properties或application.yml,用于设置SpringCloud服务的各种配置参数。 4. **Dockerfile**:可能包含用于容器化部署的服务定义,便于在不同环境中快速部署。 5. **README.md**:...

    第二章 使用SpringCloud框架实现一个微服务.pdf

    随着项目的深入,可以进一步学习SpringCloud的其他组件,如服务发现(Eureka)、负载均衡(Ribbon)、熔断机制(Hystrix)和配置中心(Config Server),以增强服务的可扩展性和容错性。此外,还可以探索如何集成...

    springCloud

    断路器示意图 SpringCloud Netflix实现了断路器库的名字叫Hystrix. 在微服务架构下,通常会有多个层次的服务调用. 下面是微服架构下, 浏览器端通过API访问后台微服务的一个示意图: hystrix 1 一个微服务的超时...

    SpringCloudLearning_forezp.tar.gz

    史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本) 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本) 史上最简单的...

    从零开始搭建SpringCloud第六节源码及截图修正版

    7. **查看截图**:提供的"搭建springcloud步骤截图"文件可能包含这些步骤的可视化展示,帮助我们更好地理解和操作。例如,可能有Eureka Server启动后的界面截图,服务注册成功的状态截图,以及Zuul路由配置和效果的...

    springCloud.rar

    4. **Hystrix**: Hystrix 是一个延迟和容错库,用于隔离访问远程服务、第三方库,防止级联失败,增加系统的弹性。它提供了断路器模式,当服务调用持续失败时,断路器打开,避免了系统的雪崩效应。 5. **Zuul**: ...

    SpringCloud学习笔记(十一)微服务项目结构搭建 代码包

    在本篇SpringCloud学习笔记中,我们将探讨微服务项目结构的搭建,这通常是任何基于SpringCloud的大型分布式系统开发的第一步。SpringCloud作为一个强大的微服务框架,提供了多种工具和服务来帮助开发者构建、配置和...

    springcloud集成mysql+mybatis+分页可运行demo

    SpringCloud Netflix提供了包括Eureka(服务注册与发现)、Zuul(API网关)、Hystrix(断路器)等一系列服务治理工具。在本示例中,Eureka将作为服务注册中心,帮助各个微服务实例之间进行通信。而Zuul可以作为统一...

    (代码)SpringCloud第07讲:Http模板化客户端Feign

    在Spring Cloud项目中引入Feign依赖后,需要在配置中启用Feign客户端,并可以通过`@FeignClient`注解来定义接口,指定服务的名称。例如: ```java @FeignClient(name = "service-provider") public interface ...

    SpringCloud学习之运行第一个Eureka程序示例代码.zip

    在Spring Cloud生态系统中,Eureka是核心的服务发现组件,它允许微服务之间的相互发现和通信。本教程将深入探讨如何运行Eureka的第一个程序示例,从而帮助你理解Eureka的基本用法。 首先,Eureka Server是整个服务...

    LCN兼容spring cloud2.0的jar包

    在这个版本中,Spring Cloud致力于提供更好的稳定性和性能,同时保持向后兼容性,使得像LCN这样的第三方组件能够轻松地与之协同工作。 LCN的核心功能包括: 1. **服务注册**:服务提供者启动时会自动注册到LCN服务...

    LCN适配springcloud2.0的jar包

    6. **断路器集成**:虽然LCN本身没有内置断路器,但可以与Spring Cloud的Hystrix或者其他第三方断路器库结合使用,以实现服务降级和熔断功能。 7. **日志追踪**:为了方便问题排查,LCN支持日志追踪,可以集成...

    基于微服务框架的个人博客系统《SpringCloud版》(SpringBoot+SpringCloud+MyBati.zip

    它集成了大量常用的第三方库配置,如数据源、JPA、定时任务、缓存等,使得开发者可以快速地创建一个独立运行的Spring应用,而无需繁琐的配置。 Spring Cloud 作为微服务解决方案的集合,提供了服务发现、配置中心、...

    第三周期(2021_08_01-2021_08_10).pdf

    在本文中,我们将深入探讨Spring Cloud Gateway的重要特性、工作原理以及如何配置和使用。 **1. 动态路由配置** Spring Cloud Gateway支持通过微服务名实现动态路由,这意味着它可以动态地根据服务实例的注册信息来...

    lamp-cloud微服务脚手架

    lamp-cloud微服务脚手架是一个基于SpringCloud(Hoxton.SR10) + SpringBoot(2.3.10.RELEASE)的SaaS微服务脚手架,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API、分布式事务、大文件...

    Spring Cloud中关于Feign的常见问题总结

    确保项目中包含`spring-cloud-starter-netflix-hystrix-stream`,这通常已经在Spring Cloud的BOM中包含了。 第二步:配置Hystrix Dashboard和Turbine。在`application.yml`或`application.properties`中配置...

    gulimall.zip 谷粒商城高级篇全部代码,已测试通过

    《谷粒商城高级篇——基于SpringCloud的微服务架构解析》 在当今互联网技术日新月异的时代,微服务架构已经成为了大型企业级应用开发的首选。谷粒商城作为一个典型的电商项目,其高级篇源码的发布,为开发者提供了...

    spring boot 服务提供者工程

    它集成了大量常用的第三方库配置,如 JDBC、MongoDB、RabbitMQ、Quartz 等,让开发者可以“开箱即用”。在“spring boot 服务提供者工程”中,我们看到 `spring.application.name=hello-service` 这个配置,这是 ...

    lamp-cloud微服务脚手架-其他

    lamp-cloud是一个基于SpringCloud(Hoxton.SR10) + SpringBoot(2.3.10.RELEASE)的SaaS微服务脚手架,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API、分布式事务、大文件断点分片续传...

Global site tag (gtag.js) - Google Analytics