分布式系统架构中高可用方案技术选型:Hystrix 框架实现服务保护使用详解
Hystrix
Hystrix 是 Netflix 开源的高可用框架,能够完美解决分布式系统架构中高可用服务的问题
断路器
服务降级
服务熔断
服务隔离机制
服务雪崩效应
Hystrix 具有自我保护能力
服务保护概念
在微服务高可用分布式系统中会出现:服务间的调用超时,服务间的调用时失败问题
服务雪崩效应
默认情况下,Tomcat 只有一个线程池处理客户端发送的请求,这样在高并发的情况下客户端所有请求堆积在同一个服务接口,就会产生 Tomcat 所有线程池去处理服务接口,会导致其它服务接口无法访问,这样在其它接口访问的时候就会产生延迟和等待
服务雪崩效应严重会造成连环雪崩效应,可能会导致所有微服务接口无法访问,导致整个服务瘫痪
基于 Hystrix 解决服务雪崩效应的机制:
服务降级:
服务熔断:
服务隔离:
服务降级
在高并发的情况下,防止用户等待,服务调用 fallBack 方法,返回一个友好提示直接给客户端而不会去处理请求,目的是为了提升用户体验
服务熔断
在高并发的情况下,设定服务的阈值,当流量过高超出给定的阈值,会自动开启保护功能,使用服务降级方式返回一个友好提示给客户端
熔断机制和服务降级是一起作用的
服务熔断的目的是为了保护服务
服务隔离
服务隔离有两种:线程池隔离和信号量隔离
线程池隔离:
每个服务接口都有自己独立的线程池,每个线程池互补影响
由于线程池 CPU 占用率非常高,不是所有服务接口都采用线程池隔离,只有核心关键的接口才会采用线程池隔离
Hystrix 环境搭建
导入 Hystrix 依赖:spring-cloud-starter-netflix-hystrix
在服务消费者(Consumer)项目中的配置文件中开启 Hystrix 断路器
在配置文件中设置 hystrix 服务超时时间,防止业务服务响应不及时,执行服务降级
在主类上标注 @EnableFeignClient 开启 Fegin 的 Hystrix 功能
在服务实现的方法上标注 @HystrixCommand 注解使用 Hystrix 框架
fallback 接口
Hystrix 使用类方式 fallback 进行服务降级的方法处理
版权声明: 本文为 InfoQ 作者【攻城狮Chova】的原创文章。
原文链接:【http://xie.infoq.cn/article/4e2ac319b629130a0a1b56125】。文章转载请联系作者。
评论