hystrix和sentinel 流量管控熔断

当时服务器有限,如果同时多个人去创建任务 es做聚合导致内存不够,然后通过慢调用控制熔断!!!

hystrix停止更新维护  不可动态配置
Hystrix常用的线程池隔离会造成线程上下切换的overhead比较大;Hystrix使用的信号量隔离对某个资源调用的并发数进行控制,效果不错,但是无法对慢调用进行自动降级;Sentinel通过并发线程数的流量控制提供信号量隔离的功能;
 
feign.hystrix.enabled=true  fallback方法的返回值一般是设置的默认值或者来自缓存!!
@FeignClient(name= "spring-cloud-producer",fallback = HelloRemoteHystrix.class)
@HystrixCommand(fallbackMethod="test") 加在方法上!! 调用超过一定时间就返回

核心无降级业务!!!!   边缘业务或者可降级的业务   保护后端的es集群!!!!做聚合,生成报告!!!!
hystrix为每个fegin服务都分配了线程池,这样服务间调用就不会影响!!!!!!, 之前多个服务是共用一个 

请求错误比率来熔断 同一个接口次数超过设定阈值并且错误比例超过设置错误阈值时候  当5秒内失败的次数达到20次就会触发熔断  5s后在半熔断状态!!!
Closed:熔断器关闭状态,调用失败次数积累,到了阈值(或一定比例)则启动熔断机制
Open:熔断器打开状态,此时对下游的调用都内部直接返回错误!!,不走网络,请求不到线程池,但设计了一个时钟选项,默认的时钟达到了一定时间,到了这个时间,进入半熔断状态;
Half-Open:半熔断状态,允许定量的服务请求,如果调用都成功(或一定比例)则认为恢复了,关闭熔断器,否则认为还没好,又回到熔断器打开状态;

hystrix-dashboard2018停止维护了图形界面可以看到线程池状态 每个请求的成功数 熔断数  
三把利器用来保护系统:缓存、降级和限流
服务熔断一般是某个服务(下游服务)故障引起,自动触发  而服务降级一般是从整体负荷考虑;人工干预,开关预置、配置中心,把无关接口服务降级不可用,让出资源错开高峰
有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限流。
对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了)、排队或等待(比如秒杀、评论、下单)、降级

java -jar sentinel-dashboard-1.7.0.jar
高并发场景下,服务器可能会因为爆炸性的流量冲击导致拒绝服务,甚至整个服务集群都会因为出现雪崩效益而大面积宕机  或者服务挂掉!!提供良好的返回
Sentinel支持的熔断降级维度更多,可对多种指标进行流控、熔断,且提供了实时监控和控制面板,功能更为强大
限流 就是超过一定qps    !!@SentinelResource(value = "byResource", blockHandler = "handleException")
熔断 #打开sentinel对feign的支持feign:sentinel:enabled: true   fallback 
将规则持久化到nacos 
<dependency>
	<groupId>com.alibaba.cloudgroupId>
	<artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
	<version>2.2.0.RELEASEversion>
dependency>

你可能感兴趣的:(框架,java,分布式,spring,cloud)