讲熔断前,需要了解一下微服务;
什么是微服务?简单点说一个应用程序根据功能进行划分成不同小的服务,这些服务之间存在着相互协调、互相配合,为用户提供最终价值。每个服务都具有独立运行的能力,这些小的服务合在一起叫 微服务;
什么是熔断?
当微服务中的某个子服务,发生异常服务器宕机,其他服务在进行远程调用时不能正常访问而一直占用资源导致正常的服务也发生资源不能释放而崩溃,这时为了不造成整个微服务群瘫痪,进行的保护机制 就叫做“熔断”;

发生熔断后怎么恢复正常?
恢复前我们需要了解熔断的三种状态:关闭状态(服务正常状态下是关闭的),开启状态(服务宕机状态下是开启的),半开状态(熔断状态为开启状态,并且超过设置的时间;这时状态有开启转换为半开状态);当服务为半开状态,这时允许少量的请求会访问到发生异常的服务里,如果有响应结果,熔断状态转换为关闭状态,如果没有结果 则继续为开启状态。

熔断的简单使用?

  1. 创建一个能够提供远程调用的服务端A;
  2. 创建一个客户端B,并且添加Hystrix依赖;创建对应的调用服务端A的方法的类;使用@EnableHystrix开启Hystrix,使用@HystrixCommand(fallbackMethod = “调用失败直接返回的方法名”)添加到方法上;使用RestTemplate来调用服务端A的方法;
  3. 常用配置(根据业务要求,可以不用)
    timeoutInMilliseconds 线程超时时间 (默认1000ms)
    circuitBreaker:
    #当在配置时间窗口内的请求达到此数量的失败后,进行短路
    requestVolumeThreshold: 20
    #出错百分比阈值,当达到此阈值后,开始短路。默认50%)
    errorThresholdPercentage: 50%
    #短路多久以后开始尝试是否恢复,默认5s)-单位ms
    sleepWindowInMilliseconds: 500
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐