"熔断"、"限流"这两个词看起来是和性能相关的。你可能会有疑问:微服务架构支持横向拓展,性能不够加机器就可以,为什么还需要熔断呢?
是的,横向拓展确实可以提升性能,但同时也降低了可用性。假设一个服务的可用性是99.9%,假设有100个服务实例依赖这个微服务,那么整体的可用性就0.999^100=90%,可用性下降了接近10!考虑到微服务架构下的性能横向拓展,微服务有多个副本的情况下,100个实例的依赖是很正常的情况。
微服务的实际应用中,调用链条可能更长,A调用B、B调用C...链条上的任何一个服务发生故障,都会导致调用链条上后续服务发生故障,从而将故障的影响逐级放大,最终导致整个系统崩溃,这称为雪崩效应。
为了避免雪崩的发生,除了提高服务的稳定性外,还可以采取"熔断"、"限流"等防御性手段。
本章将就这两种手段进行讨论,并引入Hytrix和Guava两款开源解决方案,探讨如何在微服务架构下快速地实现服务的熔断和限流。
下一节:在正式讨论微服务架构前,有必要用简短的篇幅,讨论下微服务以及这种架构风格的优点和缺点。