paint-brush
揭开架构的面纱:理解分布式系统的关键论文!经过@bhavdeepsethi
913 讀數
913 讀數

揭开架构的面纱:理解分布式系统的关键论文!

经过 Bhavdeep Sethi6m2024/04/28
Read on Terminal Reader

太長; 讀書

随着互联网和智能设备的出现,需要处理的数据量激增。简单的日常活动,例如订购 Uber、在 Netflix 上观看节目、简单的 Google 搜索、在线购物或与社交媒体互动,所有我们认为理所当然的琐碎行为都由数百种分发服务提供支持。所有这些服务都建立在分布式系统的一些基础论文的基础之上。 虽然这个列表肯定不全面,但这里有一些我最喜欢的论文,它们对分布式系统世界产生了巨大的影响。
featured image - 揭开架构的面纱:理解分布式系统的关键论文!
Bhavdeep Sethi HackerNoon profile picture
0-item


在分布式系统中,如果某台您不知道的计算机发生故障,就会导致您自己的计算机无法使用。


AM 图灵奖获得者 Leslie Lamport 的这句名言概括了构建和维护分布式系统的挑战。但为什么需要如此复杂的系统呢?


随着互联网和智能设备的出现,需要处理的数据量激增。简单的日常活动,例如订购 Uber、在 Netflix 上观看节目、简单的 Google 搜索、在线购物或与社交媒体互动,所有我们认为理所当然的琐碎行为都由数百种分布式服务提供支持。所有这些服务都建立在分布式系统的一些基础论文的基础之上。


虽然这个列表肯定不是全面的,但这里有一些我最喜欢的论文,它们对分布式系统世界产生了巨大的影响。


CAP 定理

虽然不是一篇传统论文,但 Eric Brewer 首次在 2000 年 ACM 分布式计算原理研讨会 (PODC) 的主题演讲中将其作为猜想提出。后来,Nancy Lynch 和 Seth Gilbert 在论文《Brewer 猜想和一致、可用、分区容忍 Web 服务的可行性》中正式化并证明了该论文


Eric Brewer 的 CAP 定理是分布式系统理论中的一个基本概念,该定理指出分布式数据存储不可能同时提供三个保证中的两个以上:一致性、可用性和分区容忍度。本文提到的所有其他论文都应用了上述原则并在其系统中做出了必要的权衡。


CAP 定理总是会引发大量基于读者对论文理解的讨论。Martin Kleppmann 的《 CAP 定理批判》提供了一个更好的框架来讨论权衡。


Paxos 变得简单

在这篇 2001 年的开创性论文中,Leslie Lamport 介绍了 Paxos 算法,该算法可轻松、方便地在分布式系统中实现共识。基于 Paxos 的共识协议构成了许多分布式数据库、存储系统、消息传递平台和协调服务的支柱,这些服务被许多科技公司使用。它对其他技术产生了重大影响,例如 Google 的 Chubby、Google 的 Spanner、Apache ZooKeeper、Apache BookKeeper 等。

Paxos 通常用于领导者选举


Google 文件系统

Google 文件系统 (GFS) 论文介绍了一种可扩展的分布式文件系统,适用于商用硬件上的大型分布式数据密集型应用程序,这为后来的许多分布式文件系统奠定了基础。GFS 是 HDFS 的主要灵感来源,HDFS 是 Apache Hadoop 框架和最终的 Amazon S3(尽管 s3 有根本区别)使用的分布式文件系统。


MapReduce:简化大型集群上的数据处理

本文介绍了 MapReduce 编程模型,该模型演示了使用分布式计算基础架构处理大规模数据集的可扩展方法。MapReduce 在“大数据”革命中发挥了关键作用,使组织能够利用分布式计算的力量来分析海量数据集并从中获取见解。您可以看到,结合 GFS 和 MapReduce,Google 能够处理 PB 级数据,从而组织“互联网”数据。


MapReduce 论文(以及 GFS)激发了围绕 Apache Hadoop 构建的整个工具和库生态系统的开发,例如 Apache Hive(基于 Hadoop 构建的数据仓库基础设施)、Apache Pig(用于 Hadoop 的高级数据流语言)、Apache Spark(内存数据处理引擎)、Apache HBase(分布式 NoSQL 数据库)等等。


Bigtable:结构化数据的分布式存储系统

Bigtable 论文介绍了 Google 中用于管理结构化数据的分布式存储系统。MapReduce 和 GFS 使 Google 能够以经济高效的方式大规模处理数据,下一步就是以可靠且高可用性的方式访问数据。BigTable 能够为 Web 索引、Google Earth 和 Google Finance 等应用程序提供灵活、高性能的解决方案。


就像 MapReduce 彻底改变了“大数据”时代一样,BigTable 论文是“NoSQL”时代的推动力量。Bigtable 论文中介绍的许多设计原则和架构概念都用于“Apache HBase”、“Cassandra”、“MongoD”等技术。虽然其中一些应用程序可能使用不同的数据模型(例如 MongoDB),但它们共享共同的原则,例如水平可扩展性、容错性和自动分片。


Dynamo:亚马逊的高可用性键值存储

Dynamo 论文介绍了 Amazon 开发的高可用性键值存储的设计和实现。Dynamo 满足了实时访问高度动态数据(例如购物车中的商品)的需求。该论文引入了“最终一致性”概念作为分布式系统设计的核心原则,允许宽松的一致性保证来实现高可用性和性能(CAP 定理!)。


从论文本身来看,“与 Bigtable 相比,Dynamo 的目标应用只需要键/值访问,主要关注高可用性,即使在网络分区或服务器故障后也不会拒绝更新。”


与 BigTable 类似,Dynamo 论文对后续技术如 Riak、Voldemort、Cassandra 甚至 Apache Kafka 等事件流技术产生了重大影响。


Cassandra — 去中心化结构化存储系统

Facebook 的快速发展需要一个能够处理大量数据并支持大量并发用户的数据库解决方案。虽然 BigTable 和 Dynamo 本身就颇具影响力,但 Cassandra 是第一个领先于其他技术的技术。通过根据 Apache 许可将其作为开源贡献发布以及发布论文,Facebook 在使整个行业能够使用这种技术方面发挥了重要作用。


Cassandra 与前两者的区别在于它提供了可调的一致性模型,允许用户根据应用需求在强一致性(如 BigTable)和最终一致性(如 Dynamo)之间进行选择。


ZooKeeper:互联网规模系统的无等待协调

本文介绍了 Apache ZooKeeper,并介绍了其在分布式系统中提供高可靠性和可扩展协调服务的设计原则和算法。在 ZooKeeper 推出之前,软件开发人员通常必须自己实现分布式系统中的分布式协调和共识的临时解决方案。


ZooKeeper 提出了一种用于分布式协调的集中式服务,提供分布式锁、领导者选举和配置管理等原语。通过将复杂的协调逻辑转移到 ZooKeeper,可以简化分布式应用程序的开发。使用 Zookeeper 的最常见用例之一是服务发现。


Apache Kafka:用于日志处理的分布式消息系统

本文介绍了 Apache Kafka,这是一种分布式消息传递系统,旨在实现高吞吐量、容错的事件流处理。Kafka 作为研究论文发表,并作为 Apache 项目开源发布,使其成为高度可扩展、容错的实时数据处理和事件驱动架构的标准消息传递系统。


Kafka 推出了一种高度可扩展且容错的消息传递系统,旨在实时处理大量数据流。Kafka 在推动 Lambda 架构的发展方面具有相当大的影响力,该架构结合了批处理和流处理,以低延迟和高吞吐量处理大量数据。


弹性分布式数据集:内存集群计算的容错抽象

本文介绍了弹性分布式数据集 (RDD),这是 Apache Spark 的核心抽象,它支持跨分布式集群的容错内存数据处理。与 MapReduce(具有基于磁盘的执行模型)相比,Spark 的内存执行引擎提供了更快的性能,尤其是对于迭代算法、机器学习和交互式分析而言。


这些论文涵盖了分布式系统的广泛主题,包括存储系统、共识算法、容错和可扩展性。阅读这些论文将为构建和管理分布式系统的原则和实践奠定坚实的基础。


如果您刚刚开始探索分布式系统并想要了解更多信息,或者您已经是专家并且只是想复习一下基础知识,那么没有比阅读这些关于分布式系统的基础论文更好的学习方法了。