“ 微服务熔断,是当微服务中某个子服务,发生异常不可用,其他服务在进行远程调用时不能正常访问而一直占用资源,导致正常的服务也发生资源不能释放而崩溃,这时为了不造成整个微服务群瘫痪,进行的保护机制”
我们基于 SpringCloud,搭了一个简单的微服务场景,应用 A 调 B,在 A 的测试接口上设置了 Hystrix 熔断器,熔断超时时间是 1s,如下图:
你是否知道:
这个熔断超时时间指的是 A 接口的执行时间,还是仅 A 调用 B 的调用时间?
A、B 执行逻辑计算的时间都设置了 500ms,熔断超时时间是 1s,熔断器未开启时,A 是否能拿到 B 的返回结果?
A 接口超时、抛 Exception 这两种场景都能触发它的降级熔断,底层触发逻辑有什么不一样?看似同步的请求竟然是通过异步线程来实现的?
当 A 触发熔断器开启后,它是否还能成功调用到 B 接口?难道就这样让用户一直失败
实验结果究竟如何,我们一起往下看。(心急的小伙伴可以直接滑到文末,查看答案~)
本次实验