hystrix 单独使用_服务容错保护Hystrix(一)

2cda323de76ba91969456f7a48e00233.png

解决方法(一):

线程隔离:

什么是线程隔离:

7bf9818982e9fa77bf0aa68a1cd014d6.png

6427ff1208b0c65f4805de67a75e753b.png

0c0fb440bae49d013f92b44793da1733.png

7a63a285e1e5bea9f9e1732771bdf957.png

推断出那个接口请求量大,将这个接口与其他接口分隔出来,独立的运行在线程池中。

优缺点:

优点:

1. 使用线程池隔离可以完全隔离依赖的服务 ,请求线程可以快速放回。

2. 当线程池出现问题时,线程池隔离是独立的,不会影响其他服务和接口。

3.当失败的服务再次变得可用时,线程池将清理并可立即恢复,而不需要一个长时间的恢复。

4.独立的线程池提高了并发性。

缺点:

线程池隔离的主要缺点是它们增加计算开销( CPU) .每个命令的执行涉及到排队、调度和上下文切换都是在一个单独的线程上运行的。

怎么去实行线程隔离:

@HystrixCommand(groupKey="ego-product-provider", commandKey = "getUsers",
		    threadPoolKey="ego-product-provider", 
		    		threadPoolProperties = {
		            @HystrixProperty(name = "coreSize", value = "30"),//线程池大小
		            @HystrixProperty(name = "maxQueueSize", value = "100"),//最大队列长度
		            @HystrixProperty(name = "keepAliveTimeMinutes", value = "2"),//线程存活时间
		            @HystrixProperty(name = "queueSizeRejectionThreshold", value = "15")//拒绝请求
		    },
		    fallbackMethod = "fallback")

信号量隔离:

什么是信号量隔离:

当大量请求请求provider的时候,通过队列来限定有多少请求可以访问provider,也可以理解为给大量的请求分组,其余的没在分组中的请求返回托底数据。

a83b6c3fae2b5046e4cfa8b8cb04fe24.png

怎么去实行信号量隔离:

添加坐标:

<dependency> 
<groupId>org.springframework.cloud</groupId> 
<artifactId>spring-cloud-starter-hystrix</artifactId> 
</dependency>

配置:

@HystrixCommand(fallbackMethod = "fallback",
			commandProperties = {
    @HystrixProperty(name=HystrixPropertiesManager.EXECUTION_ISOLATION_STRATEGY, value="SEMAPHORE"),// 信号量 隔离
    @HystrixProperty
(name=HystrixPropertiesManager.EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS, value="100")//信号量最大并度
		    })

线程池隔离与信号量隔离有什么区别?

f7b336e6e5a3cbb61cefac9fde09bd1a.png

什么情况下使用线程池隔离?

请求并发量大,并且耗时长(请求耗时长一般是计算量大,或读数据库) :

采用线程隔离策略,这样的话,可以保证大量的容器(tomcat)线程可用,不会由于服务原因, -直处于阻塞或等待状态,快速失败返回。

什么情况下使用信号量隔离?

请求并发量大,并且耗时短(请求耗时短可能是计算量小,或读缓存) :

采用信号量隔离策略,因为这类服务的返回通常会非常的快,不会占用容器线程太长时间,而且也减少了线程切换的一些开销,提高了缓存服务的效率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值