Hystrix
文章平均质量分 72
sun_qiangwei
这个作者很懒,什么都没留下…
展开
-
一、Hystrix 简介
在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC) 。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服...原创 2018-05-19 18:30:15 · 6435 阅读 · 0 评论 -
十、Hystrix 参数详解
Hystrix属性优先级1、内置全局默认值(Global default from code),默认值如果某属性未通过下面的任何方式进行设置,则默认使用内置全局默认值。2、动态全局默认属性(Dynamic global default property),默认属性可以通过此方式来更改某属性的全局默认值。3、内置实例默认值(Instance default from code),实例默认可以在写代码...原创 2018-05-19 18:43:35 · 2683 阅读 · 0 评论 -
九、Hystrix线程池
Hystrix把服务调用统称为依赖调用,Hystrix通过命令模式封装依赖调用,每一个依赖调用封装在HystrixCommand中,每个命令在Hystrix的线程池中运行。另外可以对其配置分组名、线程组,使得不同的依赖可以分类在不同的线程组,隔离不同模块的依赖,也可根据负载情况,配置不同组的线程数。命令名称HystrixCommandKeyHystrixCommand的名字,比如可以是某远程服务名...原创 2018-05-19 18:41:55 · 781 阅读 · 0 评论 -
八、Hystrix 工作流程解析
Hystrix内部存在一套精细、高效和简洁的流程,该流程为实现hystrix的服务降级、故障隔离、访问限流和对被依赖服务运行信息的维护奠定了坚实的基础。Hystrix整体工作流程hystrix整个工作流程涉及到熔断器、缓冲、线程池等组件。这些组件分别实现了故障隔离、访问合并、服务降级和访问限流等功能,正是这些组件高效密切的配合确保了服务的稳定运行。下面是hystrix的整体工作流程图:整个流程可以...原创 2018-05-19 18:40:43 · 797 阅读 · 0 评论 -
七、Hystrix请求合并(request collapser)
Hystrix支持N个请求自动合并为一个请求,这个功能在有网络交互的场景下尤其有用,比如每个请求都要网络访问远程资源,如果把请求合并为一个,将使多次网络交互变成一次,极大节省开销。请求合并有很多种级别:1、Global Context,tomcat所有调用线程,对一个依赖服务的任何一个command调用都可以被合并在一起。2、User Request Context,tomcat内某一个调用线程,...原创 2018-05-19 18:38:55 · 783 阅读 · 0 评论 -
六、Hystrix请求缓存(request cache)
Hystrix支持将一个请求结果缓存起来,在同一个请求上下文中,具有相同key的请求将直接从缓存中取出结果,很适合查询类的接口,可以使用缓存进行优化,减少请求开销,从而跳过真实服务的访问请求。Hystrix请求结果缓存的作用:1、在同一个请求上下文中,可以减少使用相同参数请求原始服务的开销。3、请求缓存在 run() 和 construct() 执行之前生效,所以可以有效减少不必要的线程开销。要使...原创 2018-05-19 18:38:19 · 758 阅读 · 0 评论 -
五、Hystrix特性之降级
Fallback相当于是降级操作。所谓降级,就是指在Hystrix执行非核心链路功能失败的情况下,该如何处理,比如返回默认值或者从缓存中取值。触发降级的情况1、hystrix调用各种接口,或者访问外部依赖(如mysql、redis等等)时,执行方法中抛出了异常。2、对每个外部依赖,无论是服务接口,中间件,资源隔离,对外部依赖只能用一定量的资源去访问,线程池/信号量,如果资源池已满,则后续的请求将会...原创 2018-05-19 18:37:47 · 905 阅读 · 0 评论 -
四、Hystrix特性之熔断
熔断器(CircuitBreaker)熔断器的原理很简单,如同电力过载保护器。它可以实现快速失败,如果它在一段时间内侦测到许多类似的错误,会强迫其以后的多个调用快速失败,不再访问远程服务器,从而防止应用程序不断地尝试执行可能会失败的操作,使得应用程序继续执行而不用等待修正错误,或者浪费CPU时间去等到长时间的超时产生。熔断器也可以使应用程序能够诊断错误是否已经修正,如果已经修正,应用程序会再次尝试...原创 2018-05-19 18:35:49 · 669 阅读 · 0 评论 -
三、Hystrix特性之限流
限流在日常生活中很常见,比如节假日你去一个旅游景点,为了不把景点撑爆,管理部门通常会在外面设置拦截,限制景点的进入人数(等有人出来之后,再放新的人进去)。对应到计算机中,比如要搞活动、秒杀等,通常都会限流。在Hystrix中:1、如果是线程隔离,可以通过线程数+队列大小限制。参数如下:hystrix.threadpool.default.coreSizehystrix.threadpool.def...原创 2018-05-19 18:34:48 · 7203 阅读 · 0 评论 -
二、Hystrix特性之资源隔离
在一个分布式系统中,服务之间都是相互调用的,比如,商品详情展示服务会依赖商品服务,价格服务,商品评论服务,如下图所示:调用三个依赖服务会共享商品详情服务的线程池,如果其中的商品评论服务因不可用导致线程阻塞,这个时候后续的大量商品详情请求过来了,那么线程池里所有线程都因等待响应而被阻塞,整个商品详情服务对外不可用,从而造成服务雪崩,如图所示:一、资源隔离之线程隔离1、简介货船为了进行防止漏水和火灾的...原创 2018-05-19 18:33:38 · 991 阅读 · 0 评论 -
十一、Hystrix Dashboard+Turbine
除了隔离依赖服务的调用外,Hystrix还提供了近乎实时的监控,Hystrix会实时的,累加的记录所有关于HystrixCommand的执行信息,包括执行了每秒执行了多少请求,多少成功,多少失败等等,更多指标请查看:https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring导出监控数据有了这些指标,Netflix还提供了一个类库(h...原创 2018-05-20 08:16:00 · 479 阅读 · 0 评论