弹性服务

在理想情况下,我们期望的是匀速平滑的用户访问,与可靠稳定的上游服务,但是这二者往往都是不可达到的。某个服务不可用初期的表现就是响应时间变慢、队列或线程占满、异常比例升高等,如果不加以控制或者调度,则可能演化为整个系统的雪崩。

  • 流量控制:流量控制是为了保护服务提供方不被过于频繁的调用压垮,其主要手段是对过于频繁的调用直接拒绝或者排队等待。在 Sentinel 中,我们常通过 QPS 或者线程占用数来定义是否频繁调用。

  • 熔断降级:熔断降级的核心是为了避免服务调用方被不可靠的服务拖死,其主要手段是对不可用的服务允许重试,并且快速失败。在 Sentinel 中,我们常通过对 RT 过高,或频繁抛出异常的调用来判断是否为不可靠服务。