MIT6.824/lecture-01-introduction/1.1-fen-bu-shi-xi-tong-de-qu-dong-li-he-tiao-zhan-drivens-and-challenges.md
2022-01-25 02:41:31 +00:00

31 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 1.1 分布式系统的驱动力和挑战Drivens and Challenges
本课程是 6.824 分布式系统。我会先简单的介绍我理解的分布式系统。
大家都知道分布式系统的核心是通过网络来协调,共同完成一致任务的一些计算机。我们在本课程中将会重点介绍一些案例,包括:大型网站的储存系统、大数据运算,如 MapReduce、以及一些更为奇妙的技术比如点对点的文件共享。这是我们学习过程中的一些例子。分布式计算之所以如此重要的原因是许多重要的基础设施都是在它之上建立的它们需要多台计算机或者说本质上需要多台物理隔离的计算机。
在我先介绍分布式系统之前,也是提醒大家,在你设计一个系统时或者面对一个你需要解决的问题时,如果你可以在一台计算机上解决,而不需要分布式系统,那你就应该用一台计算机解决问题。有很多的工作都可以在一台计算机上完成,并且通常比分布式系统简单很多。所以,在选择使用分布式系统解决问题前,你应该要充分尝试别的思路,因为分布式系统会让问题解决变得复杂。
人们使用大量的相互协作的计算机驱动力是:
* 人们需要获得更高的计算性能。可以这么理解这一点大量的计算机意味着大量的并行运算大量CPU、大量内存、以及大量磁盘在并行的运行。
* 另一个人们构建分布式系统的原因是它可以提供容错tolerate faults。比如两台计算机运行完全相同的任务其中一台发生故障可以切换到另一台。
* 第三个原因是一些问题天然在空间上是分布的。例如银行转账我们假设银行A在纽约有一台服务器银行B在伦敦有一台服务器这就需要一种两者之间协调的方法。所以有一些天然的原因导致系统是物理分布的。
* 最后一个原因是人们构建分布式系统来达成一些安全的目标。比如有一些代码并不被信任但是你又需要和它进行交互这些代码不会立即表现的恶意或者出现bug。你不会想要信任这些代码所以你或许想要将代码分散在多处运行这样你的代码在另一台计算机运行我的代码在我的计算机上运行我们通过一些特定的网络协议通信。所以我们可能会担心安全问题我们把系统分成多个的计算机这样可以限制出错域。
![](<../.gitbook/assets/image (179).png>)
这门课程中,我们主要会讨论前两点:性能和容错。剩下两点我们会通过对某些案例的研究来学习。
所有的这些分布式系统的问题(挑战)在于:
* 因为系统中存在很多部分,这些部分又在并发执行,你会遇到并发编程和各种复杂交互所带来的问题,以及时间依赖的问题(比如同步,异步)。这让分布式系统变得很难。
* 另一个导致分布式系统很难的原因是,分布式系统有多个组成部分,再加上计算机网络,你会会遇到一些意想不到的故障。如果你只有一台计算机,那么它通常要么是工作,要么是故障或者没电,总的来说,要么是在工作,要么是没有工作。而由多台计算机组成的分布式系统,可能会有一部分组件在工作,而另一部分组件停止运行,或者这些计算机都在正常运行,但是网络中断了或者不稳定。所以,局部错误也是分布式系统很难的原因。
* 最后一个导致分布式系统很难的原因是,人们设计分布式系统的根本原因通常是为了获得更高的性能,比如说一千台计算机或者一千个磁盘臂达到的性能。但是实际上一千台机器到底有多少性能是一个棘手的问题,这里有很多难点。所以通常需要倍加小心地设计才能让系统实际达到你期望的性能。
![](<../.gitbook/assets/image (180).png>)
本门课程就是为了解决这些问题。通常来说,问题和解决方案在技术上都很有趣。对于这些问题,有些有很好的解决方案,有些就没有那么好的解决方案。
分布式系统应用在很多现实生活中系统,例如大型网站通常是由大量的计算机构成的分布式系统来运行。当我刚开始教这门课的时候,分布式系统还是一种学术上的好奇尝试。人们只是发现有时需要一些小规模的系统,并且预感在未来这(大规模分布式系统)可能很重要。但是现在,随着大型网站的兴起和推动,出现了大量的数据和大型数据中心。在过去的二十年中,分布式系统已经是计算架构中很重要的一部分。这意味着大量的精力投入到解决相关问题的工作中,但是同样有少数问题还没有被解决。如果你是个研究生,并且对这方面研究感兴趣,还有很多关于分布式系统的问题等着你去解决,去进行相关研究。最后 如果你是一位热衷动手的同学,这会是一门不错的课程,因为它有一系列实验,你会编写出贴近现实,并且关注性能和容错的分布式系统。所以你会有很多机会去构建一个分布式系统并且让他们正常工作。