Hystrix 的常用配置以及隔离方式解析

server:

port: 8081

spring:

application:

name: consumer-user-service

eureka:

client:

service-url:

defaultZone: http://localhost:8761/eureka/

fetch-registry: true

register-with-eureka: true

instance:

instance-id: ${spring.application.name}:${server.port}

prefer-ip-address: true

feign:

hystrix:

enabled: true

hystrix: #hystrix 的全局控制

command:

default: #default 是全局控制,也可以换成单个方法控制,把 default 换成方法名即可

fallback:

isolation:

semaphore:

maxConcurrentRequests: 1000 #信号量隔离级别最大并发数

circuitBreaker:

enabled: true #开启断路器

requestVolumeThreshold: 3 #失败次数(阀值)

sleepWindowInMilliseconds: 20000 #窗口时间

errorThresholdPercentage: 60 #失败率

execution:

isolation:

Strategy: thread #隔离方式 thread 线程隔离集合和 SEMAPHORE 信号量隔离级别

thread:

timeoutInMilliseconds: 3000 #调用超时时长

ribbon:

ReadTimeout: 5000 #要结合 feign 的底层 ribbon 调用的时长

ConnectTimeout: 5000

隔离方式

在这里插入图片描述

两种隔离方式

  • thread 线程池 按照 group(10 个线程)划分服务提供者,用户请求的线程和做远程的线程不一样

    • 好处 :当 B 服务调用失败了 或者请求 B 服务的量太大了 不会对 C 服务造成影响 用户访问比较大的情况下使用比较好 异步的方式,隔离的彻底。

    • 缺点 :线程间切换开销大,对机器性能影响

    • 应用场景 调用第三方服务 并发量大的情况下

  • SEMAPHORE 信号量隔离 每次请进来 有一个原子计数器 做请求次数的++ 当请求完成以后 –

    • 好处 对 cpu 开销小

    • 缺点 并发请求不易太多 当请求过多 (有阈值)就会拒绝请求 做一个保护机制,影响其他服务。隔离不彻底

    • 场景 使用内部调用 ,并发小的情况下

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值