《看论文》是计算机与软件工程领域论文分析系列文章。在本系列的每篇文章中,我们都会阅读一篇来自OSDI、SOSP等顶会的论文,这里不会详细介绍所有的细节,而是会筛选论文的重点内容,如果你很感兴趣相关论文中,可直接点击链接阅读原文。本文介绍2020年OSDI期刊上的论文-Sundial:Fault-tolerantClockSynchronizationforDatacenters[^1]。本文实现的日晷可以在数据中心提供高精度、容错的时间同步机制。还可以保证数据中心发生故障时,不同服务器之间的绝对时间差小于~100ns,比业界其他系统好一到两个数量级。这里的~100ns也称为时间不确定性上限(Time-UncertaintyBound)。这里首先介绍论文中提到的时间不确定性上限,最后介绍日晷的系统架构,包括时间同步频率和错误恢复的设计。时间不确定性上限时间不确定性上限是一个很有意思的概念。假设我们有以下两台服务器。两台服务器的本地绝对时间存在一定差异。服务器A在X时间使用时间戳T从数据库中读取数据,而服务器B在随后的Y时间使用时间戳T-1向数据库写入数据:图1-时间不确定性上限看整体,由于轻微不同服务器的绝对时间存在差异,出现后的时间戳反而使用更早的时间戳,这会带来潜在的问题。但是如果我们能够确定不同服务器之间绝对时间的最大差异,让服务器在读取数据时等待一段时间,就可以保证读写操作时机的正确性。这里的等待时间就是上面说的不确定时间。性能上限,值越小,系统响应速度越快。很多系统对时间不确定性的上限都有要求,例如:分布式事务数据库、一致性快照、网络遥测、单向延迟和分布式日志等。该值越小,系统可以提供越好、更快的响应能力和更大的一致性。系统架构设计日晷采用软硬件结合的方式进行设计,包括下图所示的三个主要组成部分。它将在硬件中完成同步时间信息、检测系统错误等重要功能。该软件负责计算同步生成树和故障。时间触发错误恢复机制:图2-日晷框架日晷论文从软件和硬件两个维度介绍了它的设计和实现原理,这里从时钟同步和错误恢复的功能维度来介绍系统的设计。时钟同步Sundial中的时钟同步机制与SDN的数据平面和控制平面非常相似,其中作为控制平面的控制器在初始化时计算所有服务器和备选同步路径之间的时钟同步关系,并作为数据的面板的服务器会负责同步时间。如下图,当节点正常工作时,根节点0的时间会同步到节点4和6,节点1会从节点4获取最新的时间:图3-同步生成树,因为服务器使用本地用于计时的石英晶体谐振器(CrystalOscillator)会因为数据中心的温度和电压变化而变得不准确,不同时钟之间的差异会越来越大,所以硬件需要每隔100μs触发一次时间同步,以及同步消息会沿着控制器计算出的生成树同步向下传递,一旦接收到时间同步消息,就会发送给其他节点。虽然同步的频率极其频繁,而且这个数据包的优先级很高,但是由于每个数据包的大小只有100字节,这样只会占用网络整体带宽的0.01%,只会增加10ns至多其他数据包的网络延迟。错误恢复为了发现同步生成树中的节点错误,日晷需要软件和硬件的配合。硬件会使用超时时间检测上游发送的同步数据包。一旦超时或者上游发送的时间不在预期范围内,硬件就会触发软件的错误恢复处理机制。sundial-spanning-tree-and-fault-tolerance图4-故障恢复正如我们在上一节中提到的,集中控制器会为非根节点提供故障同步路径的备选同步路径,备选同步路径需要遵循多个条件才能提高备用路径的可用性,这里就不介绍了。熟悉图算法并有兴趣的读者可以直接阅读论文了解相关内容。以上所有备选路径均由中央控制器计算并存储在硬件本地,以便在发生故障时能够快速从本地错误中恢复。综上所述,虽然精确的绝对时间看似离我们很远,但其实起着非常重要的作用。Sundial论文中提出的技术可以为数据中心的服务器提供更准确的绝对时间、更准确的事件和更低的时间误差。确定性上限将Spanner数据库的提交延迟减少了70%到80%,中值从211μs到49μs,第99分位数减少了~550μs:BaselineWithSundial中位数211μs49μs第99分位数784μs238μs表1-Spanner提交等待LatencyPerformanceImprovement大多数系统不需要如此复杂的系统同步时间。我们只需要使用RFC5905中的NTP协议就可以得到毫秒级的精度时间[^2],虽然这和纳秒级的时间有几个数量级的差距,但是可以满足大部分场景的需求.[^1]:YuliangLi、GautamKumar、HemaHariharan、HassanWassel、PeterHochschild、DavePlatt、SimonSabato、MinlanYu、NanditaDukkipati、PrashantChandra、AminVahdat。2020.日晷:数据中心的容错时钟同步。在第13届USENIX操作系统设计与实现会议(OSDI'20)的会议记录中。USENIX协会,美国,1171-1186。[^2]:RFC5905-网络时间协议版本4-IETF工具https://tools。ietf.org/html/rfc5905本文转载自微信公众号“毫无逻辑”,可关注下方二维码。转载本文请联系真诺逻辑公众号。
