引子
分布式系统调用的三态
在传统的单机系统中,调用一个函数,要么返回成功,要么返回失败。这就是两态系统(2-state system)。
在分布式系统中,由于系统是分布在不同机器上的。还可能有一种状态叫:超时。成功、失败和超时是分布式系统调用的三态。
为什么要超时处理
对于超时这种状态,长时间等待会影响用户体验,并发量大时还可能会因为线程池耗尽而不能响应其他请求。如果这个服务的调用方也是一个服务,那就有可能产生级联反应,导致其他服务不可用,最终产生雪崩效应。
超时处理的手段
超时处理的两个要点:判断什么时候超时和超时后怎么处理。
判断什么时候超时在无基础数据时可通过经验估算一个相对合理值。在服务上线后可依赖统计进行设置,比如设置99%的请求响应时间为超时时间。还可以通过人工智能进行调参来设置。
超时后一般采用快速失败,如果不是核心服务,可直接超时返回失败。如果是核心服务,可以设置相应的重试次数。