神不知鬼不觉,阿里程序员把地球多出的1秒“变没”了

2023-11-03 22:30

本文主要是介绍神不知鬼不觉,阿里程序员把地球多出的1秒“变没”了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在谈到“闰秒”的时候,大部分人可能会有点陌生,也许大家都知道有“闰年”,“闰月”一说,但是可能还真没有想到还有“闰秒”这一说。事实上,这几年,随着科技的发展,尤其IT和金融业的突起,在计算精细的领域,对一秒也不容忽视,所以“闰秒”这个概念也被越来越多的人知道。对于阿里巴巴这么一个大体量的互联网公司,面对的挑战总是巨大的。下面我们来讲讲阿里巴巴是如何应对闰秒的。

image


秒的定义

为了让大家对“秒”有更深的理解,我们来回顾一下“秒”的历史,究竟是怎么过来的?“秒”究竟是如何定义的?

  • 1956年,秒定义为平均太阳日的1/86400
  • 1960至1967年之间,定义为1960 年地球自转一周时间的1/86400
  • 1967年,国际计量大会决定,以铯原子基态的两个超精细能级间在零磁场下跃迁辐射 9,192,631,770 周期所持续的时间。
  • 1977年,人类认识到了引力时间膨胀会导致在不同高度的原子钟时间不同,重新定义为”水平面的铯 原子”基态的两个超精细能级间在零磁场下跃迁辐射 9,192,631,770 周期所持续的时间。
  • 2019年,国际时间频率咨询委员会将讨论“秒”的重新定义问题。 随着人类认知的进步,对秒的定义逐渐发生了变化,从1967年开始,时间的计量标准便正式由天文学的宏观领域过渡到了物理学的微观领域。

随着科技的发展,科学家对“秒”的定义其实也在发生变化。


时间的定义

在这个地球上,每个地区,国家的人都有自己本地的时间。由于历史的原因,和近代国际组织对时间的统一,使得现在有多种对时间的定义方法。

UT(世界时)

UT(Universal Time,世界时)是一种以格林尼治子夜起算的平太阳时,由于以地球自转为基准,观测精度受限于地球的自转速度的稳定,地球体积不均匀、潮汐引力以及其他星球的扰动的原因,导致地球转速不稳定,每日误差达数毫秒。

TAI(国际原子时)

TAI(international atomic time)为国际原子时,1971年建立,利用某些元素(如铯、氢、铷)的原子能级跃迁频率有极高稳定性的特性定义时间标准,现为国际计量局(BIPM)的时间部门维持,综合全球约60个实验室中的大约240台各种自由运转的原子钟提供的数据进行处理,得出“国际时间标准”称为国际原子时 (TAI),每日误差为数纳秒。

TAI时间原点为UT 1958 年1月1日 00:00:00 ,在此之后TAI就沿着原子秒的节拍一直走下去,和UT误差也越来越大。

UTC(协调世界时)

上面已经说过,科学上有两种时间计量系统:基于天文测量而得出的“世界时”和以物理学发展发现的原子振荡周期固定这一特性而来的“原子时”,UTC就是用于将世界时(UT,天文时间)和国际原子时(TAI,原子时间)协调起来的另外一套计量系统, 1971年国际计量大会通过决议,使用UTC(协调世界时)来计量时间, 协调的原则就是UTC以原子秒长节拍,在时刻上尽量接近于世界时(UT)。

image


目前UTC是事实上的时间标准,比如所有计算机中的时间就是UTC时间(通过时区换算为本地时间), 而闰秒,实际上就是UTC特有的。


闰秒产生的原因是什么?

地球自转被称为“世界时间”。不过,由于潮汐、地壳运动、冰川融化、地震等自然现象,地球的自转速度并非恒定,而是有时快,有时慢。

1967 年原子钟的出现意味着人类计时不用再依赖于地球的自转,时间的计量标准正式由天文学的宏观领域过渡到物理学的微观领域,也就是所谓的“原子时间”。

细心的科学家发现,两者之间存在微妙差异。于是,国际地球自转和参考系服务会(IERS)在差异超过 0.9秒时,会协调“世界时间”加上或减去 1 秒,消除这个误差。

这多出来的1秒,就是闰秒。


第27次闰秒

闰秒究竟是多一秒,还是少一秒,也是有依据的,国际地球自转和参考系服务会(IERS)基于实际观测,地球自转和参考系服务会提前六个月公布下一次闰秒的时间。

通常在该年度的 6 月 30 日或 12 月 31 日午夜进行。

由于北京时间与格林尼治时间相差8小时,中国是在2017年1月1日迎来7时59分60秒的特殊现象。

最近四次闰秒分别发生在 2005 年 12 月 31 日、2008 年 12 月 31 日和 2012 年 6 月 30 日,2015年7月1日。

从 1988 年这一做法被确立至今,一共发生过 26 次闰秒。2017 年 1 月 1 日这次是第 27 次闰秒。

image


本次闰秒公告在 国家授时中心闰秒公告和IERS关于闰秒公告中有权威的发布。

image


由于我们在正八区,所以,闰秒时刻我们是在早上八点,所以这次闰秒实际是这样子的:

image
没错,我们的生活多了整整1秒哦~


闰秒的影响

北京时间2017年1月1日7时59分59秒后,全球同步多出1秒这事儿,对日常生活影响不大。但是对于IT,金融,航天行业,若处理不当,也可能引发危机。比如说,2012年闰秒发生时,包括LinkedIn在内不少国外知名网站都曾遇到故障。

因为“闰秒”不是一个规律的东西,而是那些科学家发现,“哎呀,今年地球转的有点快,我们年底要加个闰秒吧”,于是,“闰秒”就产生了。但是,程序员在写代码的时候,却没有考虑到会有闰秒,除了程序员写的代码,其实还有大量的操作系统处理不了闰秒也会有影响,会导致各种异常。

最常见的情况是,如果服务器操作系统是Linux,在一些老的内核版本中存在BUG无法处理闰秒,导致收到闰秒通告消息可能会宕机、插入闰秒可能会宕机、打印闰秒日志也能引发宕机。就说说红帽的老发行版,出现的“Systems hang due to leap-second livelock.,High CPU usage after inserting leap second”。
链接:https://access.redhat.com/solutions/154793

即便不宕机,在应用层,应用程序也可能无法处理这多出来的1s导致应用core掉。甚至可能影响到那些对时间敏感、事务性较强的应用,比如DB。

目前,国际大公司通用的解决方案是将这一秒分成许多份,再平均分配到一整天中。

日本有一家股票交易所将这一秒平均分成 7200 份,分摊到两个小时里,在分摊结束时间恢复同步时,刚好赶上开市。

Google则是在闰秒时刻前的24小时开始逐步调慢时间,理论上在闰秒时刻前,和标准UTC时间最大误差趋近于1秒。


阿里如何应对?

这次我们依然采用的方案是“将1秒拆分成86400份”应对本次闰秒,缓慢同步消除闰秒带来的 1 秒误差这一基本方案。

在NTP中存在两种时间同步机制:一种是“slew”,一种是“step”,虽然“slew”的方式也是缓慢的调整,但是面对阿里巴巴复杂的业务,这种方式并不能满足和解决这个问题,我们在5k集群下测试和验证,探索出一个更佳优秀的方案,就是将1s拆分成86400份。这个方案相比之间的“slew”的方案有如下改进:

  • 同步速率由 0.5ms/s 调整为 0.011574ms/s
  • 同步窗口由之前的 2000 秒调整为 86400 秒(24 小时)
  • 同步起止时刻由之前的闰秒时刻后,调整为闰秒时刻前 12 小时开始,闰秒时刻后 12 小时终止
  • 整个同步窗口和标准 UTC 时间的最大误差由之前的 1 秒减小到 0.5 秒(500 毫秒)


方案测试

在闰秒发生前2个月,我们对闰秒过度方案进行了多次测试,并且在超大规模的集群中测试,结合过去经验,根据我们的方案如果把在client的每分钟采集的时间和标准时间产生的offset数据汇总成图,可以看到时间的变化是极其缓慢和微小的。

横坐标: 时间,单位:分钟,24小时一共有1440分钟
纵坐标: offset, 单位:ms

image


image


对于阿里巴巴如此大体量的互联网公司,遇到的挑战总是更大的,在方案实施过程中我们也有发现了若干问题,在内部时间源时间聚合期间,个体时间服务器的时间变化收到本身硬件,以及网络,温度等,各种外部因素的影响。这些因素产生的影响也是要引起注意的。

原文链接

这篇关于神不知鬼不觉,阿里程序员把地球多出的1秒“变没”了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/341288

相关文章

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

阿里云服务器ces

允许公网通过 HTTP、HTTPS 等服务访问实例 https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.0.0.3ca96b0b3KGTPq#allowHttp

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

看病要排队这个是地球人都知道的常识

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝唯有付出,才有丰富的果实收获! 看病要排队这个是地球人都知道的常识。 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来

【无线通信发展史⑧】测量地球质量?重力加速度g的测量?如何推导单摆周期公式?地球半径R是怎么测量出来的?

前言:用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注,你们的鼓舞是我继续更新的动力。 我为什么会写这个系列呢? 首先肯定是因为我本身就是一名从业通信者,想着更加了解自己专业的知识,所以更想着从头开始了解通信的来源以及在每一个时代的发展进程。 为什么会从头开始写通信? 我最早是学习了中华上下五千年,应该说朝代史,这个算个人兴趣,从夏

node.js实现阿里云短信发送

效果图 实现 一、准备工作 1、官网直达网址: 阿里云 - 短信服务 2、按照首页提示依次完成相应资质认证和短信模板审核; 3、获取你的accessKeySecret和accessKeyId; 方法如下: 获取AccessKey-阿里云帮助中心 4、获取SignName(签名名称)和 TemplateCode(模板code); 二、代码实现 1、项目结构 【/c