首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

谷歌的技术_探究GNSS技术在

Spanner是一个全球分布式的数据库,从数据模型来看Spanner很像BigTable,都是类似于key对应着一行数据,但是却并不一样,Spanner中衍生出了“目录”的概念(把两张表合并存储)。这并不是重点,Spanner的重是它是第一个在全球范围内传递数据且保证外部一致的分布式事务的系统,且支持几种特定的事务,这显然是一个很困难的问题,我们会在文章中加以描述,这篇文章主要对Spanner的事务以及实现事务所使用的 TrueTime API 进行分析,这些也是论文中描述最为详尽,也是比较不好懂的地方。还有之所以不分析Spanner的架构是因为我觉得论文(第二节)中此方面的描述实在是有些简略,所以直接看论文就可以。

02

没有“now”-分布式系统中的同时性问题

“Now.” 从我写这个单词到你读到它,时间已经过去了至少几个星期,这种延迟我们认为是理所当然的,甚至在我们读到任何文章的时候都不会想到这个问题。 “Now.” 如果我们在同一个房间内,我大声这么说,你可能会有更强的直观性。你可能会直觉的觉得,就像我在说这个词的同时你就听到了一样。这种直觉是错误的,如果你不相信你的直觉,而是思考声音的物理原理,你就会知道从我说话到你的听觉之间一定经过了一段时间。空气的传播,带着我的话,会花费时间从我的嘴传递到你的耳朵。 “Now.” 即使我举起一个写着哪个字的牌子,我们都看着它,我们对哪个形象的感觉也不会同时发生,因为携带着这个牌子信息的光传到我们每个不同的人需要不同的时间。 虽然计算机的某些特性是虚拟的,但是他们仍然碧玺在现实世界中运行,不能忽视现实世界的挑战。海军少将Grace Hopper (我们这一领域最重要的先驱之一,他的成就包括创造了第一个编译器)用给每个学生一根11.8英寸长的电线来说明这一点,则是电在1 ns内可以传输的最大距离。这种信息,时间和距离之间的关系的物理表征可以作为一种工具来解释为什么信号(就像我们上面的比喻符号)必须总是而且不可避免地要花费时间才能到达目的地。考虑到这些延迟,很难解释“now”在计算机系统中的确切含义。 不过,如果我们提前详细计划,理论上没有什么能组织我们对“now”达成共识。(相对论在这里不是问题,尽管它很容易让人分心。人类目前所有的计算系统都有一个足够严谨的参照系,使得人们对于时间的感知存在着非物质的相对论性差异。)NTP协议用于在互联网上同步系统之间的时钟,部分工作原理是计算信息在主机之间传输的时间。一旦知道了这个传输时间,主机就可以根据这个时间来调整时钟,以匹配更权威的消息来源。通过在网络中提供一些非常精确的源,基于连续测量原子辐射的时钟。我们能够使用NTP将计算机的时钟同步到一个很小的误差范围内。在GPS中每个卫星都包含多个原子钟,这样一个时钟失败不会使卫星不可用。GPS协议允许任何人使用,只需要他们能够收到足够多的卫星信号就能解出所有的变量。不仅可以确定接收装置自己的位置,而且可以非常精确的确定时间。 我们已经理解这些协议几十年了,因此,我们很容易相信我们已经克服了这类问题,我们们应该能够建立一个假设我们的时钟是同步的系统。原子钟,NTP和GPS卫星提供了信息传播所需的时间的知识和设备。因此我,任何地方的系统都应该能够就“now”达成一致,并共享对时间进程的共同、单一的看法。然后,网络和计算中的所有困难问题都将变得容易得多。如果你所关系的所有系统对时间的感知都是完全相同的,那么即使再一些涉及主机出现故障时,许多这些问题也可以解决,但是在构建实际的分布式系统中,这些问题任然存在,并且处理它们不仅是一个持续活跃的研究领域,而且也是一个主要的关注点。 你可能会看到用于理解时间的成熟机制,并相信研究人员和系统构建者正在做大量不必要的工作。既然我们制定如何同步,为什么还要试图解决时钟可能不同的问题呢?为什么不适用时钟源和协议的正确组合来让时钟一致,继续前进,客服这些问题?有一件事情让这种说法难以置信,也让这些问题不仅重要,而且必须直面:一切都会崩溃。 真正的问题不是信息需要时间从一个地方转移到另外一个地方的理论概念。真正的问题是在计算系统所有的物理世界中,组件经常会失败。在构建系统,尤其是在商用机器和网络上的分布式计算系统时,最常见的错误之一就是假定脱离了基本的物理现实。光速就是这样一种现实,但是另外一种更有害但是同样普遍的现实也是这样,我们无法制造出永远有不坏的完美机器,正是这些现实,异步性和部分失败的结合,使得构建分布式系统变得困难。如果我们不计划考虑单个组件的故障,我们可以保证组合系统的故障。 分布式系统理论中最重要的结果之一不是可能的结果,它显示了在可能发生故障的世界中构建系统的能力的局限性。这通常被称为FLP结果,以其作者Fischer, Lynch, 和 Paterson命名。它们的工作以分布式计算领域最具影响力的论文获得了2001年的Dijkstra奖。最终证明了一些计算问题在同步模型中是可能实现的,在同步模型中,主机拥有相同或者共享的时钟,这样的不可能结果非常重要,因为它们可以引导你在涉及自己的系统的时候避免走入死胡同。它们还可以提供一个snake-oil探测器。所以你有理由怀疑哪些声称产品做了你认为不可能的事情的人。 一个相关的结果是CAP定理,用于一致性、可用性和分区耐受性。现在的开放人员相对FLP更加熟悉它。首先由Eric Brewer非正式的提出,后来由Seth Gilbert 和 Nancy Lynch证明了它。从分布式理论系统角度来看,CAP定理没有FLP有趣,一个反例击败了CAP的正式版本,它假设了一个比FLP更弱,更具有对抗性的世界模型,并要求在该模型中实现更多。虽然一个问题并不是另一

01
领券