![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hystrix
mtsbv110
这个作者很懒,什么都没留下…
展开
-
一、Hystrix 设计原则
1.1 Hystrix是什么?在分布式系统中,每个服务都可能会调用很多其它的服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。Hystrix可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。Hystrix通过将依赖服务进行资源隔离,进而处置某个依赖服务出现故障的时候,这种故障在整个系统所有的依赖服务调用中进行蔓延,同时Hys...原创 2020-04-20 14:08:41 · 305 阅读 · 0 评论 -
二、Hystrix线程池隔离技术的应用
2.1 集成Hystrix线程池依赖POMpom.xml<dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>1.5.12</vers...原创 2020-04-20 14:11:55 · 192 阅读 · 0 评论 -
三、Hystrix信号量隔离技术的应用
3.1 线程池隔离技术与信号量隔离技术的区别hystrix里面,核心的一项功能,其实就是所谓的资源隔离,要解决的最最核心的问题,就是将多个依赖服务的调用分别隔离到各自自己的资源池内避免说对某一个依赖服务的调用,因为依赖服务的接口调用的延迟或者失败,导致服务所有的线程资源全部耗费在这个服务的接口调用上一旦说某个服务的线程资源全部耗尽的话,可能就导致服务就会崩溃,甚至说这种故障会不断蔓延...原创 2020-04-20 14:14:26 · 1057 阅读 · 0 评论 -
四、Hystrix的线程池+服务+接口划分以及资源池的容量大小控制
4.1 隔离策略execution.isolation.strategy指定了HystrixCommand.run()的资源隔离策略,THREAD或者SEMAPHORE,一种是基于线程池,一种是信号量线程池机制,每个command运行在一个线程池中,限流是通过线程池的大小来控制的信号量机制,command是运行在调用线程中,但是通过信号量的容量来进行限流如何在线程池和...原创 2020-04-20 14:15:26 · 844 阅读 · 0 评论 -
五、 深入分析hystrix执行时流程以及内部原理
5.1 构建一个HystrixCommand|HystrixObservableCommand一个HystrixCommand或一个HystrixObservableCommand对象,代表了对某个依赖服务发起的一次请求或者调用构造的时候,可以在构造函数中传入任何需要的参数HystrixCommand主要用于仅仅会返回一个结果的调用HystrixObservableCom...原创 2020-04-20 14:16:41 · 343 阅读 · 0 评论 -
六、 request cache的请求缓存
查找是否开启了request cache,是否有请求缓存,如果有缓存,直接取用缓存,返回结果6.1 reqeust context请求上下文概念首先,有一个概念,叫做reqeust context,请求上下文。一般来说,在一个web应用中reqeust context(请求上下文),在一个web应用中,Hystrix会在一个filter里面,对每一个请求都施加一个请求上下文,例如...原创 2020-04-21 09:33:56 · 2635 阅读 · 0 评论 -
七、 短路器开启之后fallback降级机制
7.1 四种情况fallback降级机制(1)[error] Hystrix调用各种接口,或者访问外部依赖,mysql,redis,zookeeper,kafka,等等,如果出现了任何异常的情况比如说报错了,访问mysql报错,redis报错,zookeeper报错,kafka报错。(2)[reject] 对每个外部依赖,无论是服务接口,中间件,资源隔离,对外部依赖只能用一...原创 2020-04-21 09:37:27 · 308 阅读 · 0 评论 -
八、 深入理解hystrix的短路器执行原理
circuit breaker:短路器,快速熔断(一旦后端服务故障,立刻熔断,阻止对其的访问)8.1 短路器的流量在一定的时间窗口内超过了一定的阈值HystrixCommandProperties.circuitBreakerRequestVolumeThreshold()短路器的流量在一定的时间窗口内超过了一定的阈值。举个例子,要求在10s内,经过短路器的流量必须达到20个...原创 2020-04-21 09:38:41 · 650 阅读 · 0 评论 -
九、 深入理解线程池隔离技术的设计原则
9.1 线程池隔离技术面对的场景Hystrix采取了bulkhead舱壁隔离技术,来将外部依赖进行资源隔离,进而避免任何外部依赖的故障导致本服务崩溃(线程池隔离,学术名称:bulkhead,舱壁隔离)。外部依赖的调用在单独的线程中执行,这样就能跟调用线程隔离开来,避免外部依赖调用timeout耗时过长,导致调用线程被卡死Hystrix对每个外部依赖用一个单独的线程池,这样的话,如果对...原创 2020-04-21 09:39:20 · 634 阅读 · 0 评论 -
十、 基于timeout机制为服务接口的调用超时提供安全保护
一般来说,在调用依赖服务的接口的时候,比较常见的一个问题,就是超时,超时是在一个复杂的分布式系统中,导致不稳定,或者系统抖动,或者出现说大量超时,线程资源hang死,吞吐量大幅度下降,甚至服务崩溃,超时最大的一个问题。10.1 手动设置timeout时长execution.isolation.thread.timeoutInMilliseconds手动设置timeout时长...原创 2020-04-21 09:39:54 · 146 阅读 · 0 评论 -
十一、 Hystrix的高阶知识
11.1 request collapser请求合并技术第六章(Request Cache请求缓存)优化过一个批量查询的接口了,request cache来做优化,相同的请求参数就可以直接取用缓存了的记录。但仍需要一次业务操作接口中需要发送多次网络请求,调用多次接口,才能拿到结果。可以使用HystrixCollapser将多个HystrixCommand合并到一起,多个command放在一个c...原创 2020-04-21 09:41:51 · 321 阅读 · 0 评论