12,服务保护机制springCloudHystrix

微服务高可用技术

    大型复杂的分布式系统中,高可用相关的技术架构非常重要。
     高可用架构非常重要的一个环节,就是如何将分布式系统中的各个服务打造成高可用的服务,
从而足以应对分布式系统环境中的各种各样的问题,避免整个分布式系统被某个服务的故障给拖垮。
       比如 :
        服务间的调用超时
         服务间的调用失败
        要解决这些棘手的分布式系统可用性问题,就涉及了高可用分布式系统中的很多重要技术,包括:
   
       资源分离
       限流与过载保护
       熔断
       优雅降级
       容错
       超时控制
       监控运维
 服务降级,熔断,限流概念
 1,   服务雪崩效应:
      服务雪崩效应产生与服务服务堆积在同一个线程池中,因为所有的请求
都是同一个线程池进行处理,这时候如果高并发情况下,所有的请求全部访问同一个接口,
  这时候可能会导致其他服务没有线程进行接受请求,这就是服务雪崩效应。
 ,2,服务降级:
      在高并发情况下,防止用户一直等待,使用服务降级方式(直接返回一个友好的提示给客户端,调用fallBack方法),
3,服务熔断
     服务熔断
           熔断机制目的为了保护服务,在高并发情况下,如果请求达到一定
极限(可以自己设置阔值)如果流量超出了设置阔值然后直接拒绝访问,保护当前服务。
使用服务降级方式方式返回一个有好的提示,服务熔断和服务降级一起使用。
4, 服务隔离
因为默认情况下,只有一个线程池会维护所有的服务接口,如果大量的请求访问同一个接口,
达到tomcat线程池默认极限,可能会导致其他服务无法访问。
解决服务雪崩效应:使用服务隔离机制(线程池方式和信号量),使用线程池方
式实现隔离的原理:相当于每个接口(服务)都有自己独立的线程池,因为每个线程池
互不影响,这样的话就可以解决服务雪崩效应。
 线程池隔离:
      每个服务接口,都有自己独立的线程池,每个线程池互不影响。
信号量隔离:
   使用一个原子计数器(或信号量)来记录当前有多少个线程在运行,当请求进来时
先判断计数器的数值,若超过设置的最大线程个数则拒绝该请求,若不超过则通行,
这时候计数器+1,请求返回成功后计数器-1.

5,服务限流
       服务限流就是对接口访问进行限制,常用服务限流算法:令牌桶,漏桶,计数器也可以进行粗暴限流实现。

Hystrix 简单介绍

    Hystrix是国外知名的视屏网站Netflix所开源的非常流行的高可用加厚框架,Hystrix
能够完美的解决分布式系统架构中打造高可用服务面临的一些列技术难题。
    hytrix “豪猪”,具有自我保护的能力。hyrix通过如下机制来解决雪崩效应问题,
    在微服务架构中,我们把每个业务都拆成了单个服务模块,然后当有业务需求时,
服务间可以相互调用,但是,由于网络原因或者其他一些因素,有可能出现服务不可用的情况,
当某个服务出现问题时候,其他腐恶如果继续调用这个服务,就有可能出现线程阻塞。但是如果痛死
有大量的请求,就会造成线程资源被占用玩,这样就有可能导致服务瘫痪,由于服务间会互相调用
,很容易造成蝴蝶效应导致整个系统宕掉。因此。就有人提出来断路器来解决这一问题。
   
     资源隔离:包括线程池隔离和信号量隔离,限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务的调用。
 
     降级机制:超时降级,资源不足时(线程或者信号量)降级,降级后可以配合降级接口返回托底数据。

       熔断: 当失败率达到阀值自动触发降级(如果因网络故障、超时造成的失败率高)。熔断器触发的快速失败会进行快速恢复。
 
   缓存:提供了请求缓存,请求合并实现。

你可能感兴趣的:(12,服务保护机制springCloudHystrix)