天天看点

Hystrix断路器 - 概述

Hystrix是一个专门的服务保护框架,有些概念介绍一下:

服务降级(目的是为了提高用户体验)

在高并发情况下,防止用户一直处于等待状态(在tomcat中已经没有线程可以处理用户请求的时候,不应该让用户一直loading等待),使用服务降级的方式,返回一个友好的提示给客户端,不去处理请求,调用fallBack。比如秒杀场景,请求过多,就只返回“当前请求人数过多,请稍后再试”。

服务熔断(目的是为了保护服务)

在生活场景中,电闸里的保险丝达到极限的时候,就会被熔断然后跳闸,防止火灾发生。回到软件应用场景,在高并发情况下,如果请求数量达到一定极限(可以自己设置阈值),超出了设置的阈值,Hystrix会自动开启服务保护功能,然后通过服务降级的方式返回一个友好的提示给客户端。(服务熔断和服务降级是一起使用的)

服务隔离机制

服务隔离有两种方式:线程池隔离和信号量隔离。一般在高并发情况下,都是使用线程池隔离的。

线程池隔离原理:

Hystrix断路器 - 概述

假如现在tomcat中有两个接口,线程池最大线程数为20。客户端先是调用了100次getOrder这个接口,再去调用getUser,那getUser这个接口就会一直处于等待状态,因为没有那么多线程可以去处理这个请求了。

Hystrix断路器 - 概述

那如果采用了线程池隔离机制之后,把这两个接口的线程池都独立出来,不再公用,这样不管getOrder有多少个请求,都不会影响getUser接口。当然这种机制的缺点就是CPU占用率非常高,不过并不是所有的接口都要采用线程池隔离,只是在核心接口上使用这个隔离机制。

继续阅读