写点什么

Meta 如何使用精确时间协议处理闰秒

作者:Craig Risi

  • 2025-04-25
    北京
  • 本文字数:843 字

    阅读完需:约 3 分钟

Meta 如何使用精确时间协议处理闰秒

许多系统的协调、日志记录、安全和分布式操作都依赖于精确一致的计时。对于金融交易、数据库复制和计划任务等时间敏感的流程,即使是一秒的误差,也会导致故障。对于需要严格同步的系统,如分布式数据库、遥测管道或事件驱动架构,闰秒处理错误会导致数据丢失、重复或不一致。因此,在依赖高精度时间的环境中,准确地管理闰秒可确保系统的可靠性和一致性。


闰秒是对协调世界时(UTC)的周期性调整,为的是应对地球自转的不规则性,确保原子时与天文时保持同步。虽然对于精确计时,这些调整是必要的,但对于需要高精度同步的系统(如使用精确时间协议(PTP)的系统)来说,这些调整可能会带来挑战。PTP 的设计目的是使网络内的时钟同步达到亚微秒级精度,因此,闰秒的处理尤为重要。


通常,网络时间协议(NTP)系统采用传统的闰秒处理方法,如抹平法,即将多出的一秒分摊到一段时间内,以尽量减少中断。然而,由于对精度的要求更高,所以在 PTP 系统中应用类似技术是有问题的。即使是最小的调整也会导致同步错误,违反 PTP 所要维持的严格精度标准。


为了解决这个问题,Meta 开发了一种算法方法,并将其集成到 PTP 服务中。该方法通过 fbclock 库实现了自抹平技术。Fbclock 库会返回一个代表最早和最近纳秒时间戳的时间值元组,从而提供一个“不确定性窗口”(WOU)。在闰秒事件中,该库通过每 62.5 微秒移动一纳秒来调整这些值。这种无状态、可重现的方法使得系统能够自动处理闰秒,而无需人工干预。


这种自抹平策略具有多种优势,包括可以无缝地处理闰秒以及保持 PTP 系统所需的高精度。不过,有得必有失。例如,在与使用不同抹平方法(如 NTP 的二次抹平)的系统集成时,可能会出现差异,从而可能导致在抹平期间出现同步问题。


在使用 PTP 的高精度环境中,闰秒管理需要创新性的解决方案才能保持同步精度。从 Meta 的算法方法中,我们可以看到如何使用量身定制的策略来有效地应对闰秒带来的挑战,确保时间敏感系统的可靠性和精确性。


原文链接:

https://www.infoq.com/news/2025/04/meta-precision-time-leap-seconds/

2025-04-25 08:001

评论

发布
暂无评论
Meta 如何使用精确时间协议处理闰秒_后端_InfoQ精选文章