SpringCloud是基于SpringBoot实现的一套微服务框架,包括Eureka、Ribbon、Hystrix、Feign、Zuul等。
Eureka:注册中心
要管理分布式环境下的各个Spring Boot微服务,必然存在服务的注册问题。所以我们先从服务的注册谈起。既然是注册,必然有个管理注册中心的服务器,各个在Spring Cloud管理下的Spring Boot应用就是需要注册的client。
Ribbon:负载均衡
顾名思义,不用解释。
Hystrix:起到自我保护的作用
解决的问题:雪崩问题(比如生产汽车,一个零件不能使用,其他的都要等待这个零件修复好才能使用,这样的话会导致整个工厂陷入等待的状态,陷入瘫痪)
方法:线程隔离,服务熔断(降级)
意思:把每个功能的线程进行隔离,这样的话可以保证一个功能失败的话其他功能还能继续使用;然后的话如果线程池已满或者请求超时的话,返回一个友好的提示信息(比如连接失败)。
熔断的状态:开启、关闭、半打开
关闭:服务器的熔断状态是关闭的,所有请求正常访问
开启:所有请求会被降级,Hystric会对请求情况进行比较,当一定时间内失败请求百分比打到一个值时会触发熔断,默认的值是50%
半打开:关闭的状态不是永久的,关闭后会进入休眠时间(默认5秒),随后熔断器进入半打开状态,此时会释放部分请求通过,如果都是健康的话熔断器不会打开,否则将会打开。
相关属性配置:
circuitBreaker.requestVolumeThreshold:触发熔断的最小次数,默认20
circuitBreaker.errorThresholdPercentage:触发熔断的失败请求最小占比,默认50%
circuitBreaker.sleepWindowInMilliseconds:休眠时长,默认5000毫秒
Feign:声明式服务调用,也就远程调用。
Zuul:服务的网关,可以进行拦截等操作。