提交¶
注意: 服务器端行为在 HTTP 边缘服务器规范 中有说明。
Ping 通过 TelemetryController
上的通用 API 提交。如果 Ping 无法立即成功提交到服务器(例如,由于缺少互联网连接),遥测会将其存储在磁盘上,并尝试发送,直到超过最大 Ping 年龄(14 天)。
注意
即使在成功提交后,主 Ping 也会保留在本地以启用 HealthReport 功能。它们将在其 180 天的保留期后被删除。
提交逻辑¶
挂起的 Ping 的发送在延迟启动完成后立即开始。它们以批次发送,最新的优先,每个批次最多包含 10 个持久化的 Ping 加上所有未持久化的 Ping。然后,发送逻辑等待每个批次完成。
如果成功,我们将触发下一个 Ping 批次的发送。这会根据需要延迟,以便每分钟仅触发一次批次发送。
如果 Ping 发送遇到错误,这意味着稍后再重试,则会触发回退超时行为,每次尝试的超时时间呈指数增长,从 1 分钟到 120 分钟的限制。任何新的 Ping 提交和“空闲-每日”事件都将此行为重置为安全机制,并触发立即 Ping 发送。
Ping 发送器¶
某些 Ping(例如,崩溃 Ping 和原因为 shutdown 的 主 Ping)使用 Ping 发送器 提交。
Ping 发送器尝试发送每个 Ping 一次,如果失败,则不会执行其他尝试:TelemetrySend
将使用前面描述的提交逻辑处理重试。
状态码¶
遥测服务器团队正在努力实现 通用服务状态码,但目前以下逻辑对遥测来说已经足够了。
2XX - 成功,不要重新提交
4XX - 请求存在某些问题 - 客户端不应尝试重新提交,因为它只会收到相同的响应
5XX - 服务器端出现错误,客户端应稍后再尝试重新提交