系统时间发生跳变时如何保证性能链路统计与超时调度仍然可信
简答题中等698 次浏览
参考答案与解析
# 核心结论
性能持续时间、超时截止和重试退避应使用单调时钟;面向用户展示的日期、日志发生时间和业务日历规则才使用墙上时钟。系统自动校时、时区变化、用户手动改时及设备休眠可能使墙上时钟向前或向后跳变,如果直接用两个日历时间相减,就会产生负耗时、虚假长请求、集中超时或缓存提前失效。多运行时和跨进程链路还必须记录时间源、起点、精度及是否包含休眠,来源不同的时间戳不能直接相减。
# 底层机制
墙上时钟用于表达现实世界的日期时间,可能被网络校时修正;单调时钟强调同一时间域内非递减,更适合测量间隔。但单调时钟并非全球统一:有的时间源包含设备休眠,有的会在休眠期间暂停;不同进程、脚本运行时、原生层和服务端的计时起点也可能不同,进程
