不久前,任何一家希望在互联网上创造下一个大事件的初创公司都必须在计算硬件、网络连接、设备的房地产和保持全天候工作的技术人员方面投入大量资金。在融资、设计和设置过程中不可避免地会出现延误,这很容易抹去公司一开始可能拥有的任何竞争优势。
今天,同样的初创企业可以在几天(如果不是几个小时的话)内将其产品安装并在云端运行,而无需在服务器和类似设备上进行任何前期投资。而且,该公司在任何时候都不需要支付超出其所需的计算能力,因为大多数云服务提供商都是根据实际需求动态分配计算资源的。
随着计算基础设施的消失,初创企业可以将注意力集中在推出和改进其产品上。这降低了进入的门槛,让任何有互联网连接和信用卡的人都可以像大公司一样使用世界级的计算资源。许多当今最流行和最成功的互联网服务,包括网飞公司,Instagram,葡萄树,四方,Dropbox,利用商业云。
对于最终用户来说,这些云可能看起来有点虚无缥缈,但实际上它们需要一些非常实际的设施。他们体育场大小的数据中心建设成本极高,而且,毫不奇怪,大多数都是由大型公司运营的亚马逊,谷歌,微软.每家公司都提供各种各样的服务模型,具体取决于客户与云计算环境的交互方式。
最底层的模型被称为基础设施即服务(IaaS),它为每个客户提供一个或多个运行在云提供商物理设备上的虚拟机。例如,一台实际计算机可以模拟五台不同的虚拟计算机,每台虚拟计算机都租给不同的客户。除了租赁这样的虚拟机外,IaaS提供商还可以选择在这些虚拟机上运行的操作系统。此类IaaS云的著名例子包括谷歌计算引擎和亚马逊的弹性计算云.
在更高的抽象级别上是平台即服务(PaaS)云。其中包括用于开发在提供商设备上运行的在线应用程序的环境。客户不需要管理虚拟机。他们只是使用各种软件库、应用程序编程接口和其他软件工具(如数据库和中间件)创建自己的应用程序,然后根据需要自动启动一台或多台虚拟计算机来运行所有这些。PaaS云的例子是亚马逊的Elastic Beanstalk谷歌的AppEngine,微软的Azure和SalesForce的Force.com.
散云
使用正确的软件,地理上分布的硬件可以提供统一的云计算资源
在更高的层次上是软件即服务(SaaS)云。他们的客户对底层基础设施或计算平台一无所知:他们只是使用一些基于web的应用程序或应用程序套件来处理手头的任务。这可能是大多数人熟悉的云计算模型。它包括苹果iWork、Gmail、谷歌Docs和微软Office 365等服务。
但这是云计算工作的唯一方式吗?在意大利的博洛尼亚大学(University of Bologna),我们一直在研究一种非常不同的策略,即完全不使用那些巨大的集中式设施来进行云计算,使用点对点技术,这种技术有时与可疑的文件共享操作有关。不过,在这里使用它们可能有助于云计算的民主化。我们的原型软件仍处于非常早期的阶段,但它的开发和其他地方研究人员的类似成功显示出真正的希望。
放置物理基础设施对于云计算操作来说,通常在单一的大型数据中心中找到它,具有明确的优势。施工、设备采购、安装和维护都简化了,规模经济降低了成本。另一方面,单个大型数据中心会消耗大量的电力,通常与运行一个小镇所需的电力相当,并且散热它产生的废热通常是一个令人头痛的问题。
然而,也许最严重的缺点是,集中式云计算设施可能最终成为单点故障,无论它设计得多么巧妙。冗余电源、备用发电机和复制的网络连接有助于防止火灾、飓风、地震和洪水等灾难性事件。
集中式云的另一个缺点是,它们的地理位置可能对所有者是最好的,但对客户可能不是最好的。例如,当政府对跨越国界的敏感数据施加限制时,情况就是如此。位于一个国家的数据中心可能对其他一些国家的客户禁用。
云服务提供商越来越多地通过使用一个,而是多个通过快速专用网络连接的远程数据中心来解决这些问题。这样做不仅可以防止本地灾难,还为客户提供了更多定位数据的选择。
如果在地理上分布云基础设施,将会发生什么?你最终会得到由分布在全球各地的数百万台计算机组成的云,这些计算机通过互联网相互连接。我们将其称为点对点(P2P)云,因为它具有为文件共享、内容分发和虚拟加密货币方案(如比特币)的支付网络而开发的各种P2P系统的许多特征。
原则上,P2P云可以使用现在人们家中常见的普通计算、存储和通信设备来构建,初始投资基本上为零。宽带调制解调器、路由器、机顶盒、游戏机、笔记本电脑和台式电脑都可以做出贡献。我们面临的挑战是将这些杂乱的集合转变为连贯的、可用的云基础设施,并为客户提供服务。您还必须确保维护云的主要特性——按需资源供应和服务计量。
这肯定很难做到,但想想好处吧。首先,不会有单一实体拥有或控制它。与大多数其他P2P应用程序一样,P2P云可以作为基层工作创建和运营,而不需要任何权威机构的许可或同意。人们将通过在本地机器上安装适当的客户端软件来选择参与P2P云,而最终云基础设施的价值将与为其做出贡献的个人数量相称。
第二个优势来自于P2P云的组件很小,单独消耗很少的能量,并且分布良好。这大大减少了对当地灾难的担忧。它还消除了通常对散热的担忧。尽管这样的P2P云不能提供谷歌或Amazon那样的服务质量保证,但对于许多应用程序来说,这并不重要。
创造的理念从大量松散耦合的机器中获得巨大的计算资源并不是什么新鲜事。很久以前就有人这么做了,比如志愿计算在这个网站上,人们可以代表他人在自己的个人电脑上执行应用程序。志愿计算系统通常要求你安装某些软件,当你的计算机没有更高优先级的任务时,这些软件就会运行。然后,该应用程序使用您的空闲计算周期从某个中央服务器获取和处理数据,并在完成后将结果上传到同一服务器。
这种策略适用于许多科学问题,对于这些问题,中央控制器可以将所需的计算部分外包给独立和并行操作的工作人员。如果在一段合理的时间内没有返回结果,没有问题:同样的任务被简单地交给其他志愿者。
的伯克利网络计算开放基础设施BOINC是一种流行的志愿者计算系统,可以加载和运行不同的客户端程序。在BOINC平台上发现的项目包括SETI@home(分析来自太空的无线电信号以寻找地外传输),Rosetta@home(计算蛋白质如何折叠)和Einstein@home(探测引力波)。
另一种类型的志愿计算被称为桌面网格。在传统的网格计算项目中,利用位于不同位置的多台高性能计算机一起处理单个问题。桌面网格允许人们将个人计算机的处理能力贡献给这些工作。BOINC也支持桌面网格边缘(为e-Science启用桌面网格),这是几个欧洲机构的一个基于BOINC的项目XtremWeb,法国人的计划国家科学研究中心,法国计算机科学与自动化研究所(INRIA),以及巴黎第十一大学。
许多人的成功志愿者计算项目证明了P2P云原则上可以达到的极端规模,无论是涉及不同计算机的数量还是它们的地理分布。当然,使用这样的集合将意味着设备故障将是常见的。此外,把自己的电脑贡献给这些云的人可以在任何时候打开或关闭它们,运行P2P网络的人称之为“搅乱”。
因此,任何P2P云的第一个任务是跟踪系统中注册的所有运行和在线设备,并在客户之间动态地划分这些资源。你必须以一种完全去中心化的方式做到这一点,尽管会有波动。
为了应对这样的挑战,许多P2P系统使用了所谓的gossip-based协议。在这种情况下,八卦是指连接在一起的计算机在一个大型的、非结构化的网络中只与少数邻居交换信息。基于八卦的协议已经被广泛研究,并被用于建模,例如,计算机网络中恶意软件的传播,社交网络中信息的扩散,甚至萤火虫群中光脉冲的同步。基于八卦的协议对P2P云很有吸引力,因为它们实现简单,但即使面对混乱,也能有效地进行复杂的全局计算。
所以当我们在建造原型系统时博洛尼亚大学我们称之为点对点云系统(P2PCS),我们包括了几个分散的基于八卦的协议。它们用于确定哪些设备已启动并已连接、监视云的整体状态、将可用资源划分为多个子云、动态分配资源以及支持对已连接计算机集的复杂查询(例如,识别最可靠的计算机)。创造这些能力是重要的第一步。但是,对于一个实际的系统,还有许多其他的要求,我们只是试图解决其中的一些要求。
如果所有的设备都归一个组织所有,那么用它构建一个P2P云应该是很简单的,即使这些部件位于不同的人的家中,就像由互联网服务提供商运营的宽带调制解调器或路由器,或由有线电视公司运营的机顶盒一样。所有的计算设备都将非常相似,如果不是完全相同的话,这使得将它们配置到单个计算环境中更加容易。而且,由于设备的一个所有者可能安装了p2p云软件,因此您可以有理由相信,数据和计算将根据组织的安全策略得到正确处理。
然而,如果P2P云是由不同的人的电脑或游戏机或其他东西组成的,这就不是真的了。使用这种云的人必须相信,操作它的许多陌生人中没有人会做恶意的事情。设备供应商必须相信用户不会占用电脑时间。
这些都是棘手的问题,迄今没有普遍的解决办法。但是,如果您只是想在P2P云中存储数据,事情就变得简单了:系统只需要分解数据、加密数据并将其存储在许多地方。
不幸的是,目前还没有有效的方法使运行在不受信任硬件上的每个计算都是防篡改的。对于一些特定的问题(比如挖掘比特币),验证结果要比计算结果快得多,这使得客户端可以检查和丢弃伪造的结果。对于那些没有有效验证程序的问题,检测篡改的最佳方法是比较来自独立机器的相同计算的结果。
所有P2P系统都存在的另一个问题是,必须有适当的激励措施,让足够多的人合作,并阻止搭便车。否则,系统必然会完全退化。对于一家使用自己的设备创建云的公司来说,提出激励措施是很容易的。该公司可能会有建立这样一个云的金钱动机,而放置设备的人可能会有保持连接的动机,因为这样他们可以获得更好的服务。
志愿计算系统并没有享受到这样的激励措施。但是他们通常有值得称赞的目标,让人们贡献他们的免费CPU周期不是问题。自1999年以来一直存在的SETI@home探测到第一次地外无线电传输,谁不想帮助创造历史呢?然而,对于其他类型的志愿者P2P系统,激励机制必须仔细制定。
发展是公认的目前还处于早期阶段,但一些研究项目和一些已经进入市场的商业系统表明,至少在某些目的上,P2P云确实可以有效地构建和使用。
例如,我们在P2PCS上的工作证明了使用基于八卦的协议来处理资源的动态分配和系统的基本监控是可能的。其他研究人员墨西拿大学,在意大利(Cloud@Home),在INRIA (Clouds@Home),并与欧盟的Nanodatacenters项目-一直在探索类似的概念。
纳米数据中心项目特别有趣。参与研究的人员想出了如何从互联网服务提供商控制的特殊家庭网关的遥远星座中形成一个受管理的P2P网络。由于这些“纳米中心”靠近终端用户,因此网络传输数据的速度比一些大型数据中心快得多。
一些商业分布式存储解决方案也基于P2P计算原理。的早期版本Wuala的例如,S的云备份允许用户交换硬盘上的空间。Sher.ly提供类似的服务,但面向商业部门:它允许公司使用自己的机器和基础设施来创建一个安全的、始终在线的私有云,以便在内部共享文件。还有许多用于分布式文件存储的开源P2P系统(例如OceanStore(由加州大学伯克利分校开发)或计算(如OurGrid,主要是在坎皮纳格兰德联邦大学在巴西)。
与传统的云环境相比,这些开创性的实验仍然很少。但是如果他们成功了,如果研究人员能够找到解决我们在这里描述的障碍的方法,那么您就可以很容易地发现自己在日常生活中使用P2P云。你可能都不知道自己在做什么。
本文最初以“人民的云”为题发表。
作者简介
Ozalp Babaoglu与合著者莫雷诺Marzolla是意大利博洛尼亚大学的计算机科学家。在将生物学启发的技术应用于计算之后,巴巴格鲁开始对点对点合作技术产生兴趣。马佐拉说,他对合作计算的兴趣是由一部科幻小说激发的,在这部小说中,像昆虫一样的微型机器一起工作被证明非常强大。“事实上,他们设法消灭了他们星球上的所有其他生命,”他警告说。“但那只是科幻小说,对吧?”