云计算和分布式计算的区别是什么?

61

我想了解云计算和分布式计算之间的区别。我读了一篇关于云计算的文章,感觉云计算和分布式计算有某种联系,所以想询问两种技术的区别。

此外,如果有人能指引我有用的云计算资源,我会非常感激。

谢谢


20
这是互联网服务领域的又一个流行词,旨在激发硅谷风险投资人的“下一个大事业”的反应,从而吸引一些本来可能会用于购买新游艇的资金。 - artificialidiot
Sean有一个名为“Microsoft ... Cloud Power”的横幅广告。 - motoku
5个回答

55
在我看来,云计算的定义在于基础的计算资源(存储、处理器、RAM、负载均衡等)完全从软件/服务的消费者中抽象出来。这意味着云资源的供应商要为计算环境的性能、可靠性和可扩展性负责。
对于应用程序开发人员来说,这是一个巨大的优势,因为采购、维护、调整、监控和扩展硬件以满足增长需求既困难又昂贵。
对于小型独立软件开发商(ISV),云计算提供了在没有资本支出的情况下原型设计、测试和部署软件的能力。
对于大型应用程序而言,好处通常在于无限可扩展性和IT/应用程序托管职责的外包,以及即时访问新的服务器/存储/其他服务。通常,云提供商将提供除了最大的内部IT部门无法承担的冗余、可靠性甚至安全级别。
应用程序开发人员的主要缺点是失去了控制。不仅硬件在云环境中外部托管,而且被抽象化了,所以如果您的应用程序需要对硬件进行直接控制,那就没戏了。您需要相信云提供商。他们都提供99.9%的服务可用时间和SLA,但我怀疑这些统计数据是否真正实现。但是,您必须问自己,我能做得更好吗?答案通常是否定的。但是硬件控制并不是唯一失去控制的地方——与基于云的系统进行集成也可能比本地部署或自管理软件更加困难,出于明显的原因。然而,对我来说,这种障碍正在消失,因为新技术和强大的API消除了在局域网/广域网之外运行应用程序时产生的许多集成难题。
另一个缺点可能是性能。在本地局域网上运行应用程序可能会为本地用户提供比从云端运行更快的体验。但如果您的受众是分布式的,那么这个优势只适用于应用程序受众的一个子集。
分布式计算,正如已经多次提到的,只是在两台或更多计算机之间协调的计算。云计算在定义上是分布式计算,但是是一种专门的形式。

这是一份由David Chappell撰写的精美白皮书。它是微软赞助的,因此以微软的云平台(Azure)为基础来介绍,但其底层原理是相当通用的,而且David Chappell的文章通常很容易阅读。


1
Chappell有几篇论文和演示文稿。我也相信他已经尽力向人们传达了云平台的一些要点。然而,人们往往完全忽略了云排队作为跨企业EDA启用器的优势。键/值和文档数据库是重要的云设施,但这远远不是人们需要熟悉的唯一内容。虽然我可以理解这对于维护Joe's Lawn Service网站的人来说并不重要。 - Bob77

23
让我先说一下,我们在100%基于云的环境中提供重要的金融服务。
云计算并没有被很好地定义(就像任何流行语一样,每个人都想用最新的流行语来推销他们现有的产品)。
在我看来,云计算的关键是我可以将计算资源(CPU、内存等)看作商品而不是资本。
那是什么意思?
传统上,如果我想为我的组织增加一些计算能力,我需要购买更多的计算机,设置它们,并维护它们。云计算(Eric J.的定义)允许我在需要时准确地获取额外的计算能力,然后在不需要时释放它们。我们提供销售税计算服务。在圣诞节前,我们需要比其他时间更多的计算能力。我们的云环境可以让我在几秒钟内添加资源,然后在不需要时立即释放它们。我们的一个大客户有时会进行1小时的超级销售。我可以仅为那一小时添加额外的处理能力,然后完成后释放它。
我们在云计算基础设施之上提供的解决方案是软件即服务(SaaS)。像GMail这样的东西在我看来是SaaS,而不是云计算。
那么所有这些与分布式计算有什么区别?
分布式计算指将一个问题分解成若干部分,让多台计算机同时处理。伯克利大学的BOINC项目是一个很好的例子(请考虑加入该项目)。他们会将科学研究项目分配给志愿者提供的所有计算机进行处理。
参与BOINC和其他分布式计算项目的计算机可以是人们的笔记本电脑、台式电脑、服务器。它们可以安装在我的办公室中,也可以是从ISP租用的虚拟服务器,或者是属于“云”的虚拟服务器。计算机的来源并不重要。只要我能在计算机上安装分布式计算软件,它就可以成为分布式解决方案的一部分。

云计算的优缺点是什么?云计算是否提供非常诱人的好处,以此为代价我们可以冒险数据/信息的安全性? - Rachel
2
@Rachel:如果你在Visa或NSA工作,将你的数据放在云中会带来相对的安全风险。但如果你在一家初创公司或中型企业工作,一个有声誉的云服务提供商可能会比你们拥有更好的安全协议。你是否拥有SAS 70和PCI认证、生物识别访问控制、持续的视频监控、24小时警卫和严格的访问协议?如果没有,那么像AWS这样的服务提供商实际上可能提供更优越的安全性。 - Eric J.

14

分布式计算涉及将一个大问题分成较小的部分,并让多台联网计算机处理这些部分。

云计算通常指通过互联网提供服务。该服务可以是几乎任何内容,从通过Web访问的商业软件到离线存储或计算资源。

编辑:如下方海报所述,它通常是这些服务的营销术语。


3
我习惯听到“通过互联网提供服务”被称为SaaS(软件即服务)。对我来说,云计算意味着将计算基础设施作为一种商品提供......租用你需要的东西,只要你需要它。 - Eric J.

7

分布式计算是指多台计算机参与解决/计算任务,比如Folding@Home

云计算是指将数据(文档、图片等)存储在互联网服务上。我猜GMail和Google Docs可以被看作是一种云计算。


1
啊,欢迎再次出现奇怪的-1票...请说明原因...对这个网站上所有无聊且不够建设性的投票者感到厌倦了。 - Skurmedel
3
云指的是数据而不是计算?你的回答似乎是这个意思。 - Erik Kaplun

6

请记住,“云计算”一词已经成为一个营销术语,几乎代表了任何东西。对于编程人员而言,该术语指的是一种分布式存储和检索名称/值对的方式。值得注意的例子包括BigTable(您最有可能从Google App Engine中访问)和EC2


使用云计算有哪些好处?我们可能会面临安全丢失等问题。 - Rachel
冗余性可能是一种好处。一个机器/进程的故障可能会使“云”中的大部分内容保持完整。 - Skurmedel
1
嗯,我不确定所有的“程序员”都会同意这个定义 - 虽然Big Table是一项云服务,但我认为将定义限制在检索键/值对上严重限制了云计算的含义,在几乎任何人的书中都是如此。 - Nathan
冗余是否可以被视为应用程序的开销?我无法看到云计算对当前应用程序开发情景的益处。有人能分享一些见解吗? - Rachel
1
最初,成本是主要的动力。创业公司可以通过利用Google和Amazon的基础架构快速进入市场。 - Glenn
我不确定你所说的overhead是什么意思?也许是我表达不清楚? - Skurmedel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接