超时:为什么等待也必须有边界?

超时:为什么等待也必须有边界?

超时不是“过了这段时间,远端一定失败”,而是等待方预先规定:到某个时刻仍未得到可用结果,就停止等待并转入下一种处理。付款请求迟迟收不到回复就是典型情形。网络可能丢包,服务器可能仍在处理,付款甚至可能已经成功;超时只说明调用方没有及时获得确定答案。

它重要,因为等待会占用注意、线程和连接。没有边界,不确定就可能长期扣住资源。超时把“也许还会回来”的开放等待,变成可管理的决定点。

它不同于截止期限和重试。截止期限规定整个任务最晚完成时间;超时约束其中一次等待;重试是超时后的可能动作。盲目重试可能重复付款或加重拥堵,还需幂等性、退避等约束。超时不消除不确定性,只限制系统为不确定性付出的时间和资源。

https://aws.amazon.com/builders-library/challenges-with-distributed-systems/
https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/


了解 Geoffrey Chen 的更多信息

订阅后即可通过电子邮件收到最新文章。