用了半个世纪的「闰秒」将被取消:程序员该知道的时序知识

一条听起来很「冷门」但影响深远的技术新闻:国际计量机构决定,使用超过半个世纪的「闰秒」制度将逐步取消。对于普通人是新闻,对于程序员则是必须搞懂的时序问题。

闰秒是什么

地球自转并不均匀,会慢慢变慢;而原子钟极其稳定。为了让「以地球自转为准的世界时」和「以原子钟为准的国际原子时」尽量对齐,过去几十年里,人类偶尔会在某个时刻「加一秒」——这就是闰秒。

自 1972 年起,全球一共插入过 27 次闰秒。

为什么程序员讨厌它

  • 时间可能倒退或重复:加闰秒的那一刻,同一秒会「出现两次」,靠时间戳排序、去重的系统会直接错乱。
  • 分布式系统的一致性被打破:日志顺序、事务时间、幂等判断都可能出问题。
  • 各家实现不统一:有的「暂停一秒」,有的「抹平摊到一天」,结果就是不同系统之间对不上。

2012 年就曾出现过大面积故障:闰秒插入瞬间,不少使用 Linux 的服务器 CPU 负载飙升、服务卡死。

取消之后,工程上要注意什么

  1. 统一用时间戳而不是本地时间:存储和计算尽量走 UTC(最好以 Unix 时间戳形式),避免本地时区转换带入的额外复杂度。
  2. 借助 NTP/chrony 并开启平滑处理:现代时间同步服务已支持「闰秒平滑」(leap smear),让系统时间缓慢偏移而非突然跳变。
  3. 慎用「时间倒退」假设:代码中不要假设「后取的时间一定大于先取的」,用逻辑时钟或版本号做顺序判断更稳妥。
  4. 测试环境复现闰秒场景:可以做简单的时间篡改测试,验证监控、告警、调度是否会被时间跳变带崩。

一句话总结

闰秒取消,是把「天文时间」和「计算机时间」解耦。对开发者来说,好消息是未来少了一类玄学故障;但只要你还在处理跨系统的时间,把 UTC 时间戳用规范、把顺序判断交给逻辑时钟,这两条永远不会过时。

© 版权声明
THE END
喜欢就支持一下吧
点赞31 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容