分布式计算 Distributed computing
分布式计算(Distributed computing),又译为分散式运算,是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。常见的分布式计算项目通常使用世界各地上千万志愿者计算机的闲置计算能力,通过互联网进行数据传输(志愿计算),借助分布式计算可以花费较小的成本来达到目标。
定义
广义定义
所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。最近的分布式计算项目已经被用于使用世界各地成千上万位志愿者的计算机的闲置计算能力,通过因特网,您可以分析来自外太空的电讯号,寻找隐蔽的黑洞,并探索可能存在的外星智慧生命;您可以寻找超过1000万位数字的梅森质数;您也可以寻找并发现对抗艾滋病病毒的更为有效的药物。这些项目都很庞大,需要惊人的计算量,仅仅由单个的电脑或是个人在一个能让人接受的时间内计算完成是决不可能的。
中国科学研究所的定义
分布式计算是近年提出的一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。分布式计算比起其它算法具有以下几个优点:
1、稀有资源可以共享。
2、通过分布式计算可以在多台计算机上平衡计算负载。
3、可以把程序放在最适合运行它的计算机上。
其中,共享稀有资源和平衡负载是计算机分布式计算的核心思想之一。
网格计算
实际上,网格计算就是分布式计算的一种。如果我们说某项工作是分布式的,那么,参与这项工作的一定不只是一台计算机,而是一个计算机网络,显然这种“蚂蚁搬山”的方式将具有很强的数据处理能力。网格计算的实质就是组合与共享资源并确保系统安全。
工作原理
分布式计算是利用互联网上的计算机的中央处理器的闲置处理能力来解决大型计算问题的一种计算科学。下面,我们看看它是怎么工作的:
首先,要发现一个需要非常巨大的计算能力才能解决的问题。这类问题一般是跨学科的、极富挑战性的、人类急待解决的科研课题。其中较为著名的是:
从这些实际的例子可以看出,这些项目都很庞大,需要惊人的计算量,仅仅由单个的电脑或是个人在一个能让人接受的时间内计算完成是决不可能的。在以前,这些问题都应该由超级计算机来解决。但是,超级计算机的造价和维护非常的昂贵,这不是一个普通的科研组织所能承受的。随着科学的发展,一种廉价的、高效的、维护方便的计算方法应运而生——分布式计算!
随着计算机的普及,个人电脑开始进入千家万户。与之伴随产生的是电脑的利用问题。越来越多的电脑处于闲置状态,即使在开机状态下中央处理器的潜力也远远不能被完全利用。我们可以想象,一台家用的计算机将大多数的时间花费在“等待”上面。即便是使用者实际使用他们的计算机时,处理器依然是寂静的消费,依然是不计其数的等待(等待输入,但实际上并没有做什么)。互联网的出现,使得连接调用所有这些拥有限制计算资源的计算机系统成为了现实。
那么,一些本身非常复杂的但是却很适合于划分为大量的更小的计算片断的问题被提出来,然后由某个研究机构通过大量艰辛的工作开发出计算用服务端和客户端。服务端负责将计算问题分成许多小的计算部分,然后把这些部分分配给许多联网参与计算的计算机进行并行处理,最后将这些计算结果综合起来得到最终的结果。
当然,这看起来也似乎很原始、很困难,但是随着参与者和参与计算的计算机的数量的不断增加,计算计划变得非常迅速,而且被实践证明是的确可行的。目前一些较大的分布式计算项目的处理能力已经可以达到甚而超过目前世界上速度最快的巨型计算机。
您也可以选择参加某些项目以捐赠Cpu的内核处理时间,您将发现您所提供的中央处理器内核处理时间将出现在项目的贡献统计中。您可以和其他的参与者竞争贡献时间的排名,您也可以加入一个已经存在的计算团体或者自己组建一个计算小组。这种方法很利于调动参与者的热情。
随着民间的组队逐渐增多,许多大型组织(例如公司、学校和各种各样的网站)也开始了组建自己的战队。同时,也形成了大量的以分布式计算技术和项目讨论为主题的社区,这些社区多数是翻译制作分布式计算项目的使用教程及发布相关技术性文章,并提供必要的技术支持。
那么谁可能加入到这些项目中来呢?当然是任何人都可以!如果您已经加入了某个项目,而且曾经考虑加入计算小组,您将在中国分布式计算总站及论坛里找到您的家。任何人都能加入任何由我站的组建的分布式计算小组。希望您在中国分布式总站及论坛里发现乐趣。
参与分布式计算——一种能充分发挥您的个人电脑的利用价值的最有意义的选择——只需要下载有关程序,然后这个程序会以最低的优先度在计算机上运行,这对平时正常使用计算机几乎没有影响。如果你想利用计算机的空余时间做点有益的事情,还犹豫什么?马上行动起来吧,你的微不足道的付出或许就能使你在人类科学的发展史上留下不小的一笔呢!
BOINC分布式计算平台
BOINC是Berkeley Open Infrastructure for Network Computing的简称,即伯克利开放式网络计算平台。
BOINC是不同分布式计算可以共享的分布式计算平台。不同分布式计算项目可以直接使用BOINC的公用上传下载系统、统计系统等,这样不仅可以发挥各个分布式计算之间的协调性,也能使分布式计算的管理、使用更加方便易用。
BOINC项目由美国加州大学伯克利分校(U.C.Berkeley)主持发起。
BOINC项目由美国国家科学基金会(National Science Foundation)赞助。
BOINC有自己的积分系统,因为在BOINC上可以运行的项目千差万别,比如项目A的任务包(Workunit,简称WU)在某台机器里需要3个小时完成,而项目B的任务包在这台机器里需要30个小时才能完成,显然用WU的数目来衡量工作量是不可行的;类似的,机器性能也有差别,用CPU时间来衡量工作量更是不行的。积分系统只能通过一定的算法得到用户实际完成的计算量,这篇文章对BOINC中积分的计算方法进行了说明。
分布式计算在中国
据中国互联网信息中心(CNNIC)的统计信息,中文网民人数占世界的比重已经增长到了12%左右,并且还在快速增长着。这里所说的中文网民是包括大陆、香港、澳门、台湾和海外华人的。
相比于互联网在中国的快速发展,中国的分布式计算却发展缓慢。就我看来,网民数量的统计并不能十分客观地反映一个国家信息化程度的高低,而参与分布式计算网民的数量或比例却可以明显地看出这个国家科学普及化的水平。在这方面,毋庸置疑,欧美国家是十分领先的。在北欧国家,几乎一半的电脑参加了分布式计算项目,这是一个惊人的数字。再让我们来看看我们中国和印度,尽管我们拥有了不少最新科技,且看上去在网络普及化进程中有不错表现,但是在分布式计算方面却很薄弱。让我们来看些例子:
SETI@home是世界上最大的分布式计算项目。从中国的参与人数来看,它在中国也是最著名的项目。它通过使用联网的计算机下载程序分析射电望远镜所收到的讯号,来搜索地球外的生命迹象。
尽管中国在近一年来有所进步,中国的国际排名从29上升到了24,但是我们中国用户却仍然只完成了日本用户完成的工作数的十分之一,而日本,这个高度发达的国家网民人数却少于中国。看来,提高网民素质、提高科学普及化程度也是十分重要的。印度和一些中东国家也有相似的问题,而中欧国家明显在这方面作得比较好,不少独联体国家所完成的数据量已经超过了俄罗斯联邦的总合。
Folding@home是一个研究蛋白质折叠,误解,聚合及由此引起的相关疾病的分布式计算工程。它使用联网式的计算方式和大量的分布式计算能力来模拟蛋白质折叠的过程,并指引我们近期对由折叠引起的疾病的一系列研究。
中国参加这个项目的人数在不断增多,截至2011年3月底,中国3213团队的用户数达到3025人,近期活跃用户有190人左右。
参与该项目Climate prediction工程是把最新的气候预测模型通过家庭、学校、办公室的计算机来进行计算。这些计算完成的结果将会组成世界最大的气象预测模型。气候改变了,而我们对此的行动已经是全球重要的话题。这将影响到人类的农业生产、水资源量、生态系统、能源需求、保险花费和很多其他与人类息息相关的方面。确凿的科学依据表明,地球在在接下来的几个世纪可能会变得温暖,但是我们无法估计到底变化会有多大。如果您参加,这将能有助与21世纪的气候科学预测。
中国目前已经有了很多计算机,其中不乏性能极其先进的。而他们中的大多数仅仅是打字、播放幻灯而已。这不能不说是一种资源的浪费。
从另外一个角度看,我们不难发现发达国家和发展中国家的差距。我们把这种现象称为数字鸿沟。另一个现象同样令人痛心疾首,所有的分布式计算项目都是由发达国家,如:美国、德国、英国、日本等发起的,这一方面也加深了科学鸿沟。斯坦福大学化学系的戈尔哈姆·理查德·切尔曼教授说,分布式计算将加快整个人类的科学进程。科学家们现在可以完成以前从来想不到要去完成的,或者要花几十年几百年才能完成的计算任务。这是的确是千真万确的,但是这种计算从一定程度上助长了发达国家的科学垄断。
目前,中国有关部门也开始意识到分布式计算的重要性,一些大学教授和科学家也开始钻研分布式计算科学,比如:中科院CAS@HOME和清华大学的“清水计划”。
2意义格局
分布式计算与人类
由于现代人类各个课题学科繁多,涉及面广,而分类又细。而当今的每个学科似乎都需要进行大量的计算。天文学研究组织需要计算机来分析太空脉冲(pulse),星位移动;生物学家需要计算机来模拟蛋白质的折叠(protein folding)过程;药物学家想要研制克服艾滋病(AIDS)或非典(SARS)的药物;数学家想计算最大的质数和圆周率的更精确值;经济学家要用计算机分析计算在几万种因素考虑下某个企业/城市/国家的发展方向从而宏观调控。由此可见,人类未来的科学,时时刻刻离不开计算。而分布式计算(Distributed Computing),以其独特的优点——便宜、高效而越来越受到社会的关注。
分布式计算格局
就目前来看,全球的各种分布式计算已有约百种,这些计算大多互无联系、独立管理、独立使用自己的一套软件。目前的这种分布式计算互相割据的格局很不利于发展的需要。比如,某个生物学研究机构需要利用世界各地志愿者的计算机来模拟蛋白质折叠的过程,那个生物学研究机构没有分布式计算方面的专业人才,而但是社会上也并没有任何公司可以提供这样的服务,他们就不得不自己花费大量精力用于开发分布式计算的服务器、客户端。这样一来,原来可以用于研究生物的时间用在了别的地方。刚才提到的生物学研究机构就是美国斯坦福大学的PANDE小组。
BOINC一统大局
为了改变这种杂乱无章的割据,美国加州大学伯克利分校(UCBerkeley)首先提出了建立BOINC的想法。BOINC的中文全称是伯克利开放式网络计算平台(Berkeley Open Infrastructure for Network Computing),他能够把许多不同的分布式计算项目联系起来统一管理。并对计算机资源进行统一分配(比方您对研究艾滋病药物和探索地外文明同时感兴趣,您就可以同时选择两个运行,并设置优先级)。对统计评分系统进行统一管理(无论你在为哪个项目工作,只要你奉献CPU时间长,就积分高)。有了这样的统一管理,的确给PANDE小组这样的科学研究机构提供了便利!
BOINC目前已经成熟,多个项目已经成功运行于BOINC平台之上,如SETI@home,LHC@home等。
3安全性
对用户方来说,加入任何一个项目前,您必须确保您可以信任项目的研制方,主要涉及两方面:
计算机上的隐私数据
您从项目方下载的计算程序,运行在本机,而且可以访问网络,因此,只有可靠的项目方才能保证您计算机上的隐私数据不会恶意的取走、修改等。
个人计算机的寿命
虽然分布式计算的计算程序一般运行在最低优先级,不会对您的日常使用造成影响,但计算程序全负荷运行时仍会对计算机的各个部件造成一定压力,要了解更多请查看分布式计算对计算机软硬件的影响。
对项目方来说,参加分布式计算的志愿者毕竟不是项目方自己的人员,并不是全体可信任,因此必须引入一定的冗余计算机制,才能防止计算错误、恶意作弊等。
流火的季节,树叶遮住阳光,心却在燃烧。
大街小巷里奔跑的汽车,带不走每一颗心的烦恼。
有一颗心在鸭舌帽下呐喊。为失去了的,为得到过的,为未知的。前面的那条马路上,可有熟悉的流浪歌手,用嘶哑的声音叫嚣着青春和公益?明天,一张火车票会带他离开这个城市。尽管歌声还在某些人耳边回旋。
分布式计算 Distributed computing的更多相关文章
- Akka - Basis for Distributed Computing
Some concepts as blow: Welcome to Akka, a set of open-source libraries for designing scalable, resil ...
- Serialization and deserialization are bottlenecks in parallel and distributed computing, especially in machine learning applications with large objects and large quantities of data.
Serialization and deserialization are bottlenecks in parallel and distributed computing, especially ...
- fallacies of distributed computing
The network is reliable. Latency is zero. Bandwidth is infinite. The network is secure. Topology doe ...
- Dandelion - Distributed Computing on GPU Clusters
linq on GPUs 非常期待中 看起来很cool,期望早点面世
- Delphi 6 Web Services初步评估
Delphi 6 Web Services初步评估这是我刚到现在公司的时候(2001年8月份)所作的一份测试报告,现公布出来,希望能对大家有所帮助.因为当时d6刚刚发行,Web Service方面还存 ...
- 那些年,我们见过的 Java 服务端“问题”
导读 明代著名的心学集大成者王阳明先生在<传习录>中有云: 道无精粗,人之所见有精粗.如这一间房,人初进来,只见一个大规模如此.处久,便柱壁之类,一一看得明白.再久,如柱上有些文藻,细细都 ...
- 分布式系统(Distributed System)资料
这个资料关于分布式系统资料,作者写的太好了.拿过来以备用 网址:https://github.com/ty4z2008/Qix/blob/master/ds.md 希望转载的朋友,你可以不用联系我.但 ...
- "Principles of Reactive Programming" 之<Actors are Distributed> (1)
week7中的前两节课的标题是”Actors are Distributed",讲了很多Akka Cluster的内容,同时也很难理解. Roland Kuhn并没有讲太多Akka Clus ...
- 大数据基础知识:分布式计算、服务器集群[zz]
大数据中的数据量非常巨大,达到了PB级别.而且这庞大的数据之中,不仅仅包括结构化数据(如数字.符号等数据),还包括非结构化数据(如文本.图像.声音.视频等数据).这使得大数据的存储,管理和处理很难利用 ...
- Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)论文 | ApacheCN
Spark RDD(Resilient Distributed Datasets)论文 概要 1: 介绍 2: Resilient Distributed Datasets(RDDs) 2.1 RDD ...
随机推荐
- .Net7运行模型之托管Main函数的调用
前言: .Net7的CLR最具特色的一个地方,就是运行模型.因为它主宰了整个CLR的运行过程. 又因为其庞大的代码量,有的几十万行甚至百万行.所以理解起来非常不容易.本篇拆分来看下,里面一个细节Mai ...
- wsl ubuntu vscode 安装 Fira Code
如果使用windows terminal(其实就是powershell)那么只需要在windows 中安装 Fira Code 即可,但是如果需要让wsl 中的vscode 也用Fira Code 就 ...
- vivo 自研Jenkins资源调度系统设计与实践
作者:vivo 互联网服务器团队- Wu Qinghua 本文从目前业界实现Jenkins的高可用的实现方案,分析各方案的优缺点,引入vivo目前使用的Jenkins高可用方案,以及目前Jenkins ...
- 真正“搞”懂HTTPS协议16之安全的实现
上一篇噢,我们搞明白了什么是安全的通信,这个很重要,特别重要,敲黑板!! 然后,我们还学了HTTPS到底是什么,以及HTTPS真正的核心SSL/TLS是什么.最后我们还聊了聊TLS的实现,也就是Ope ...
- 30道四则运算java
package test4; import java.util.Scanner;import java.util.Random;public class Test4 { public static v ...
- Eureka 注册中心和服务提供者
什么是Eureka组件 spring cloud Eureka ,提供服务注册和服务发现的功能. 一:spring cloud Eureka Eureka Server 服务端 Eureka Clie ...
- 推荐一款新的自动化测试框架:DrissionPage!
今天给大家推荐一款基于Python的网页自动化工具:DrissionPage.这款工具既能控制浏览器,也能收发数据包,甚至能把两者合而为一,简单来说:集合了WEB浏览器自动化的便利性和 request ...
- Postgresql的csv日志设置
PG的日志系统比较完善,除去系统启动时指定的日志,wal日志等外,下面主要介绍另一个详细的输出日志:csv log. 涉及到的参数文件:$PGDATA/postgresql.conf涉及的主要参数: ...
- 模拟浏览器与服务器交互(简易TomCat框架)
模拟浏览器发送请求到服务器获取资源的思想和代码实现 浏览器发送请求到服务器获取资源的流程和概念 日常我们使用的浏览器,底层都是帮我们做了很多事情,我们只需要用,比如输入www.baidu.com,就可 ...
- No.1.8
定位 网页常见布局 标准流(块级元素独占一行-->垂直布局,行内元素/行内块元素一行显示多个-->水平布局) 浮动(可以让原本垂直布局的块级元素变成水平布局) 定位(可以让元素自由的摆放在 ...