前言
相比于无状态的分布式系统,有状态的数据库在分布式领域将会面临更多的挑战。
故障模型
每个节点保存本地状态,通过网络来互相同步这些状态。同时节点需要访问时间组件来获取当前时间(逻辑时间或物理时间)。
这些环节没有一个是可靠的。不可靠贯穿了分布式系统的整个生命周期。
相比于无状态的分布式系统,有状态的数据库在分布式领域将会面临更多的挑战。
每个节点保存本地状态,通过网络来互相同步这些状态。同时节点需要访问时间组件来获取当前时间(逻辑时间或物理时间)。
这些环节没有一个是可靠的。不可靠贯穿了分布式系统的整个生命周期。
并发操作带来的数据不一致性包括丢失修改(lost update)、不可重复读(non-repeatable read)和读“脏”数据(dirty read)。
两个事务 \(T_1\) 和 \(T_2\) 读入同一数据并修改,\(T_2\) 的提交结果破坏了 \(T_1\) 的提交结果,导致 \(T_1\) 的修改被丢失。
分布式数据库的节点并不总是处于活动状态且相互能够通信的。系统高可用性是分布式数据库一个极其重要的特性。
为了使系统能够高度可用,系统需要被设计成允许一个或多个节点的崩溃或不可访问。
高可用必须要尽可能满足业务连续性和数据一致性这两个指标。第三个因素网络分区会对可用性产生影响。
摘要
传统的容错分布式事务是在 Paxos 共识协议之上的传统并发控制协议。这种方法提供了可扩展性、可用性和强一致性。然而,当用于广域存储时,这种方法会引发两次跨数据中心的连续协调:一次用于并发控制,然后一次用于共识。在本文中,我们主要观察到并发控制和共识所需的协调高度相似。具体来说,每个都试图确保交易的序列化图是非循环的。我们在 Janus 的设计中利用了这种洞察力,这是一个统一的并发控制和共识协议。 Janus 的目标是编写为存储过程的一次性事务,这是一种常见但受限制的事务类。像 MDCC 和 TAIR 一样,Janus 可以在一次往返中提交此类中的不冲突事务。与 MDCC 和 TAPIR 不同,Janus 避免了由于争用而中止:只要网络运行良好并且每个服务器副本的大多数都处于活动状态,它最多在两次往返中提交此类中的冲突事务。
我们将 Janus 与分层设计和 TAPIR 在此类中的各种工作负载下进行比较。我们的评估表明,在无竞争的微基准测试中,Janus 的吞吐量是分层系统的 5 倍,是 TAPIR 吞吐量的 90%。当工作负载竞争时,Janus 提供比基线低得多的延迟和更高的吞吐量(高达 6.8 倍)。
可扩展、可用且高度一致的分布式事务通常是通过在 Paxos 共识协议复制的数据存储分片之上分层传统并发控制协议来实现的。将数据分片成许多可以由不同服务器存储和服务的小子集提供了可扩展性。尽管服务器出现故障,但通过共识复制每个分片可提供可用性。尽管不同事务的数据访问存在冲突,但使用 USENIX 关联并发控制跨复制分片协调事务可提供强一致性。这种方法在实践中很常用。例如,Spanner 实现了两阶段锁定 (2PL) 和两阶段提交 (2PC),其中数据和锁都由 Paxos 复制。作为另一个例子,Percolator 实现了机会并发控制 (OCC) 的变体,它在 BigTable 之上使用 2PC,它依赖于主备份复制和 Paxos。
马克思主义由三个部分组成:马克思主义的哲学即辩证唯物主义和历史唯物主义、马克思主义的政治经济学和科学社会主义学说。
物质资料的生产是人类社会存在和发展的基础。
马克思指出,人类社会要进行生产,必须具备三要素:人的劳动、劳动对象和劳动资料。劳动就是劳动力的支出,就是人的脑、肌肉、神经、手等等的生产耗费。劳动对象就是人把自己的劳动加在它上面的东西。劳动资料是使人的劳动和劳动对象联系起来的媒介物。
本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。
用于实现容错分布式系统的 Paxos 算法一直被认为难以理解,这可能是因为对许多读者来说最初的介绍是希腊语。事实上,它是最简单、最明显的分布式算法之一。 它的核心是一种共识算法—— The part-time parliament 中的“synod”算法。下一节表明,这种共识算法几乎不可避免地遵循我们希望它满足的属性。最后一部分解释了完整的 Paxos 算法,该算法是通过将共识直接应用于构建分布式系统的状态机方法而获得的——这种方法应该是众所周知的,因为它可能是最常见的主题 - 引用的关于分布式系统理论的文章 Time, clocks, and the ordering of events in a distributed system。
假设一组可以提出值的进程。共识算法可确保选择提议(purposed)值中的一个值。如果没有提议值,则不应选择任何值。如果选择了一个值,那么进程应该能够学习选择的值。共识的安全要求是: