Eureka服务注册中心、

Ribbon客户端负载均衡

Feign声明式REST服务调用组件

一、目前的架构存在的问题
我们之前搭建了服务提供者microserver-provider-user微服务,以及服务消费者microserver-consumer-movie微服务,并且都将相关服务注册到Eureka Server注册中心中,各个微服务也使用了Ribbon进行了客户端负载均衡,使用了Feign进行声明式REST服务调用,所以截止到目前,我们搭建的Demo的结构如下模式:

spring cloud 超时 熔断机制

在上面的架构下,在某些场景下,可能会有一些问题出现,例如服务提供响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到服务返回。在高负载场景下,如果不做任何处理,这种问题很可能造成所有用户请求的线程都被耗竭,而不能响应用户的进一步请求。严重一些的,会引起所谓的“雪崩效应”。
服务雪崩效应描述的是一种因服务提供者的不可用导致服务消费者的不可用,并将不可用逐渐放大的过程。

解决方案:

1.超时机制

2.断路器模式

spring cloud 超时 熔断机制

熔断的作用:就是在特定的环境下关掉当前线路,从而保护整个系统的效果。

刚开始,熔断开关默认是关闭的,所有请求都可以通过,当失败次数达到阈值时,熔断开关变为打开状态,所有的请求都不能通过,直接返回异常失败信息,但当经过一个窗口期后,熔断开关变为半打开状态,这时允许一个请求通过,如果这个请求正确执行成功后,熔断开关为变为关闭状态,否则熔断开关变为打开状态,继续从打开的状态的步骤开始判断。

针对雪崩效应,整合这些解决方案,hystrix就诞生了,就是超时熔断机制功能。

相关文章: