跳出框框思考:我的博士奥德赛从单服务器架构到分布式数据存储(下)

编辑注释:我们邀请SIGOPS获奖者撰写获奖作品背后的背景故事。在本文中安东尼斯·卡萨拉基斯分享了他的博士论文《基于失效的复制数据存储协议》的历程,该论文获得了2023年罗杰·尼达姆博士奖的荣誉提名。Antonis现为华为研究院首席研究员。他在爱丁堡大学获得博士学位,由鲍里斯·格罗教授担任顾问,辅导员为维杰·纳加拉扬(Vijay Nagarajan)和阿列克桑达尔·德拉戈杰维奇(Aleksandar Dragojevic)。

安东尼斯写了一部令人难以置信的史诗般的旅程,我们决定出版一系列两篇文章。

在此处阅读第一篇文章:https://www.sigops.org/2024/thinking-outside-the-box-my-phd-odyssey-from-single-server-architecture-to-distributed-datastores/

我们从第二章第三节继续。

第三节:应对数据存储挑战:单服务器架构和神话智慧的启示 (续)

[停止3]Zeus:复制和分布式位置感知事务

挑战3:在考虑交易时,也会出现类似的情况。提供具有数据可用性的多对象事务的最新数据存储部署了复制协议,该协议静态共享数据,无法利用多个事务工作负载中存在的动态形成的本地性。例如,蜂窝控制平面中的许多事务涉及一个用户重复访问同一组对象(例如。,它最近的基站). 因此,传统协议会导致过多的远程访问大量网络往返在这些工作负载上执行和提交每个事务,从而降低数据存储的性能。

同时,对于单服务器多处理器中的强一致事务,情况正好相反。这个多处理机事务存储器扩展了无效一致性以提供动态利用访问局部性来提高性能的事务。例如,以前访问过并当前缓存过相关数据的核心可以在本地对该数据执行一系列事务,从而避免远程访问和协调。问题是,事务性内存对故障没有弹性,因此存在数据可用性风险。

解决方案3:受多处理器事务内存的启发,我们提出并实现了宙斯是一个高度一致的分布式事务数据存储,它利用并动态适应事务工作负载的本地性,以最大限度地提高性能,同时确保容错。为了实现这一点,我们引入了两个基于失效的协议。一种用于动态数据共享的可靠所有权协议,可快速更改副本的放置和访问级别,一种容错事务协议,用于快速、流水线、单往返可靠提交和所有副本的本地只读事务。

对于具有数据访问位置的工作负载,六台Zeus服务器每秒可以实现数千万个容错事务,其性能是最先进数据存储的两倍,同时所需的网络带宽更少。

神话:宙斯数据存储→所有权和冲突解决,反映了宙斯对他的王国的控制和众神之间的调解。
洞察:单服务器硬件事务内存通过获取和维护所有权,利用无效性动态利用本地性进行高效事务。
与传统观点相反:在捕获位置的常见情况下,Zeus中的分布式事务在本地执行,并在单次往返后提交,具有最强的一致性和容错性。
要忽略的民俗:“从不编写自己的数据库”
更多信息:[Eurosys’21],https://zeus-protocol.com 

[停止4]主题'L2AW的不可能和几乎本地阅读。

挑战4:容错协议可以是同步的,也可以是异步的,基于它们所依赖的模型来确保一致性。依赖于有限处理和通信延迟的同步协议更容易设计。然而,分布式数据存储的网络和计算节点可能会遇到定时异常(例如,由于复杂的软件堆栈虚拟化层),这可能会导致定时冲突并危及同步协议的安全。为了容忍这种定时违规,更安全的协议采用异步不存在定时假设的模型(例如,它们不依赖租约或全局时钟),这意味着处理和通信延迟可能是任意的。

回想一下,数据存储部署的容错复制协议必须提供高性能和强一致性。如前所述,容错协议的性能在很大程度上取决于其适应本地读取的能力。因此,正如其他研究人员也指出的那样(例如。,施瓦兹曼和哈吉斯塔西),重要的是要研究能够提供以下三种功能的容错协议的可行性:

1) 局部读取;2) 强一致性;异步下的安全性。

存在与异步复制相关的基本理论结果,包括FLP结果CAP(管帽) 定理然而,这两种方法都不足以回答上述问题,因为它们在检查阅读性能方面都存在不足。

解决方案4–理论:我们观察到现有的容错协议至少牺牲了三个协议中的一个(本地读取、异步、强一致性),并从理论上证明了L2AW定理认为,即使在发生任何崩溃之前,也没有任何容错协议可以提供所有这三种功能。更准确地说,L2AW不可能性断言:任何L(左)可线性化的A类允许单一崩溃的同步读/写寄存器协议(W公司无阻塞读或写),无L(左)局部读取.

解决方案4–实践:在这个结果的指导下,我们引入了几乎所有长度读取(ALR)的实用思想,它可以在异步条件下以容错和线性化的方式实现。ALR通过利用批处理来利用在线服务中的大量并发读取,但有一点需要改进。与传统的批处理不同,ALR批处理中的所有读取都是针对服务器的本地副本执行的,并且只有轻量级同步每批操作涉及远程副本。无论批处理大小如何,同步只会产生较小的恒定网络和计算成本。此外,同步通常被忽略,因为现有的写入操作可以充当隐式同步。因此,ALR很少或根本不会给远程副本带来额外的网络和处理成本,从而实现本地读取的吞吐量,同时提供异步下的线性化。因此,我们证明了L2AW主要影响读取的延迟,而不是吞吐量。

ARL足够通用,可以应用于设计空间所有三个角落的协议,增加了缺失的部分:1)提高牺牲本地读取的协议的吞吐量;2) 确保弱一致性协议的线性化能力;和3)允许同步协议在异步状态下安全运行。 

我们的评估表明,ALR增强的基于失效的协议(例如Hermes)提供了与非异步变体几乎相同的吞吐量,同时也确保了异步下的线性化能力。

神话:主题→当法律和秩序女神实施基本规则时,L2AW不可能性展示了一致性、异步性和性能之间的基本权衡,定义了容错复制的原则。
动机:我们能否实现具有强一致性的容错复制和异步下的本地读取(例如,通过失效)?
与传统观点相反:容错协议不可能在异步状态下提供单一的强一致本地读取。但他们可以提供几乎是长时间的读取,不可避免地具有较高的延迟,但吞吐量与本地读取一样高!
要忽略的民俗:“不可能表明你必须停止尝试。”
更多信息:[Eurosys’23–短期],https://law-theorem.com/

论文摘要

由单一服务器创新思想和无效协议支持的分布式复制数据存储可以提供:强一致性、负载平衡、容错、异步下的安全性和高性能(每秒10到100次M操作)。

第二章:十大提示

在这里,我将与开始博士之旅的年轻人分享我的见解。

  1. 以“理想”为目标
    • 从目标开始。您的理想的解决方案有哪些?走到可行的极端(例如,每个请求一次磁盘/内存访问,复制一次往返,等等)。然后,回溯过去,尽可能地将这一理想变成现实。
    • 产生过多的想法,不管它们是荒谬的还是简单的。不要急于评判他们的优点。修炼后,重新评估、提炼并结合最佳。
  2. 射向月球(10倍,而不是2倍!)
    你能做10倍的…吞吐量吗?能效?容量?比例?尾随性?
    • 10x可以帮助你想出激进的设计、富有想象力的跳跃和反叛的想法。
    • 2x让你陷入增量思维;因此不太可能获得实质性利益。
  3. 质疑传统智慧规避不可能。
    • 追求违反直觉但真实的东西!特别注意悖论和你不同意传统智慧的事情。
    • 试图揭露和利用人们错误相信的权衡。
    • 研究不可能性结果,尤其是它们的假设和它们不再成立的边界。始终尝试绕过它们。看看哪些假设是不必要的,对于您关心的实际场景来说仍然可以。例如,如果您可以利用无线网络,CAP是否同样适用?
  4. 没有什么是完全原创的:一切都是混音 相邻的可能。
    其他人可能不同意,但什么是“小说”是一个相当哲学的问题。许多(大多数?)想法只是一个现有想法的重新组合。我强烈建议您也了解相邻的可能史蒂文·约翰逊描述得很好:“相邻的可能是一种阴影般的未来,徘徊在事物当前状态的边缘,是一幅地图,展示了当前可以重塑自身的所有方式.” 
  5. 隐喻,考试,混合
    • 几个主要独立工作的社区从不同的角度看到了相同或类似的问题。从遥远的领域中找出与你相似的问题(在某种程度上)。如何解决这些问题?你能得到灵感吗?
    • Exapt(考试)事情原本是为解决你的另一个问题而构思的。你还有其他想法吗?就是这样自然学会飞行.
    • 组合、繁殖、并列和交叉授粉的想法 跨领域、理论与实践、硬件与软件、艺术与科学。
  6. 利用新兴硬件
    • 在系统中发布论文的一种非常常见的方式是为新的闪亮硬件Y“重新设计X”。最近,由于人工智能的蓬勃发展,新的(高性能)硬件迅速涌现(1000 Gbit NIC、1000个内核、TB内存、HBM、CXL等)。你将如何重新设计系统(不仅仅是针对人工智能)来充分利用这种硬件? 
    • 新的硬件也可能模糊田地之间的界线,从而使不同社区之间的思想进一步交叉传播(例如。,HPC和数据库,或体系结构和系统(如前所述)。
  7. 保持苗条 
    • 幸存下来的是提供80%好处的简单方法。
    • 遵循80-20%的规则:每次迭代后减少80%的垃圾以简化工作
      • 回想起来,好主意很简单,而且似乎显而易见。
      • 然而,它们在一点点信息中包含了大量的意义。
  8. 预先思考、阅读、,不要把人放在崇拜台上。
    • 阅读前先思考:为了避免偏见,推迟查看您想要解决的问题的现有解决方案(例如论文)。首先,试着想出一个合理的好主意,然后完成相关的工作。
    • 向你所在领域的佼佼者学习。然而,如果你不被称为哈勒斯坦、奥斯特霍尔特、巴甫洛夫、利斯科特、贝尔克里希纳、利姆波特或其他什么都无关紧要;你总能想出同样好或更好的主意!你只需要付出努力。 
    • 我在博士期间做的最好的事情是阅读非计算机科学书籍。用一本与你想要完成的任务(例如写作、解决问题等)相关的书为自己做好准备。一些非CS书籍推荐(更多信息请咨询我):
      • 好主意从哪里来
      • 时髦的学术写作
      • Ted演讲:Ted官方公众演讲指南
  9. 拒绝导致改进。
    • 把你的想法和写作与你自己分开。毕竟,20%的接受率意味着大多数论文被拒绝。
    • 有一个坚强的胃和毅力。不仅仅是你;到目前为止,我最兴奋的那篇论文已经被拒绝五次了。🙂 
    • 拒绝可能意味着你在做某事;你只需要校准一下。
  10. 拥抱旅程
    • 玩得高兴。像孩子一样嬉戏。在你的工作中选择一个主题,并在你的研究领域之外进行比较(例如,在我的案例中,看神话)。问一些聪明的转储问题。修补现有技术。做聪明的傻瓜。 
    • 把你喜欢的东西组合起来。博士学位可能是关于某一学科的深度,但不要无聊。给自己一些广度,多样化,探索新事物。
    • 旅行、参加会议、实习和建立很多关系网。

奖金。记住你的Fundies

最后但同样重要的是,不要忘记基本原则:

  • 睡个好觉。
  • 晒太阳。
  • 与朋友和爱人在一起总是更好。 
  • 与大自然联系,做你的爱好,散步,锻炼,冥想…

第三章:押韵小结

论文

服务器作为系统,模糊的线条传达,
我们覆盖了单个服务器的外观。
我们说,在盒子里思考,
挑战规范,提出问题,我们权衡。

在我们的调查中,类似的机制。
复制、缓存,在隐喻的影响下。
协议失效,一种新的途径,
在理论和实践之间,我们相互重叠。

提示

瞄准月亮,不要让民间传说动摇。
体系结构和系统可以协调一致。
不可能的事,我们巧妙地谈判。
人工智能的革命,硬件显示。
书籍和思想,我们的道路,
毫不拖延地实现10倍大的梦想。
思想在激烈的争斗中异花授粉,
精益求精,我们的终极游戏。

行动呼吁

总有一天,权力和规模会找到出路,
总有一天,记忆的极限,我们会勇敢地抗争,
总有一天,树木会迅速生长,不会延误,
你现在在做什么,为那一天带来什么?

有一天,服务器或系统,我们也这么说,
总有一天,链接、分区会消失,
有一天,我们不会遵守CAP的规定,
有一天,很快就到了,不远了。
那么,那天你在做什么?

编辑器:徐天音(UIUC)和杜东(上海交通大学)