【IT168 报道】云计算无疑是过去一年中最热门的词汇之一。在计算机技术的发展史上,除了云计算,大概还没有第二个因为一个响亮的名字而迅速引起广泛关注的技术。云计算到底是什么?为什么需要云计算?是商业炒作还是未来愿景?是现有技术的简单组合还是充满挑战和未知??? 类似的讨论早已在媒体热火朝天,但莫衷一是。
改变未来的云计算
所谓“云”,是指在各种技术架构图中常用一个云团来表示的互联网;所谓云计算,即是基于互联网的计算。由此可见,云计算并不是一个新事物(这也是它被一些人诟病为广告宣传语的原因),24年前 SUN公司就提出了“The Network is the Computer”,并作为企业战略奋斗至今,相较于云计算,这句话更有力量。
云计算不是一个技术名词,很难给出一个确切的定义,它作为一种新的计算形态,直接对应的是传统的桌面计算,即随着PC的发展和普及在过去20多年间人们使用计算机最主要的方式:每个人拥有自己的硬件、软件,本地保存数据和进行处理。互联网只是让人们能更方便的去获得信息,但计算和处理主要还是基于本地的PC进行。但如果云计算仅仅是指通过互联网利用远端的计算能力进行处理,那么现有的提供一些特定计算功能的网站是不是云计算,例如提供公历/农历的转换或者简单的图像处理?答案自然是否定的。云计算的特质是面向海量的数据和复杂的计算,这是被很多人忽略的一点。
任何成功的新事物,它无非是提供两个功能:将原来坏的事情,变得不那么坏(做减法);或者将原来好的事情,变得更好(做加法)。也可以换一个角度,是来缓解或者解决当前面临的问题或困境;或者启迪、开发新的功能、需求或价值。云计算一个明显的优势是可以降低应用计算的成本。利用云计算,用户可以避免本地建设、运维不菲的计算系统,通过支付低廉的服务费用,即可完成同样的计算或处理过程。类似这样的优势,是云计算的缓解困境之道,但对云计算而言,主要的意义应该在后者,即它的出现和存在,是为了触发、满足一些以前未有的需求。
计算机的出现是为了满足人们对获取信息、处理信息的需求。纵观数十年计算机技术的发展,有着一条清晰的主线:获得性能更好、处理能力更强的计算机(这是做加法。另外一条主线是获得更方便、更好用、更安全、更低廉的计算机,这是做减法)。搜索引擎、音频视频、3D动画和游戏、手机、电子导航??。所有这些在十年、二十年前你难以想象的新事物某种程度上都得归功于计算能力的不断提高,并已经成为日常生活中不可或缺的一部分。展望五年、十年或者二十年后,还会有哪些新事物出现?不是科幻作家,这个问题或许有些困难,但无疑人们能获得的信息会更多、更好、更便捷。那么导致这些未来新事物出现的推力会有哪些?云计算毫无疑问应该是答案之一。
在未来,云计算存在的形态将会是一个个如同Google、Amazon这样的运营和服务中心,可以简单的将它视为数据中心+计算中心+界面/接口。通过界面或者接口,普通用户将可以利用以往只能为少数人所拥有的庞大的数据和处理能力,获得自己所需的信息。云计算对未来最大的意义在于:如果你现在拥有前所未有的数据和计算能力,你能创造什么?
Google推动云计算的一个举措是让高校学生利用现有的API进行编程。如果你是其中之一,是一名未来的程序员,想象一下,编写一小段代码,后台运作的是成千上万台的服务器,徜徉的是浩瀚的数据海洋,这是什么样的感觉?同样,如果你是一名科研工作者,平常只是利用桌面的PC进行模拟演算,而现在给你的是世界上最快的、性能是单台PC数万倍的超级计算机,那又会是什么感觉?
云计算不会很大的改变你现在已有的大部分计算,它的存在主要不是为了替代,而是为了创造。现在使用PC版的Word来编写文档,在线的文档编辑工具(如Google Docs)不会改变这一现状,如果有云计算版本的Word,那它不仅仅是有多人协同这样的简单功能,而可能是当你敲下一行标题或者输入一列关键字,在页面上会弹出成百上千个你可以作为参考和范本的文档,而这些文档,是从数十亿篇已有的文档中为你精心挑选和准备的。甚至系统会通过某种复杂的算法自动的为你生成一篇文章。这才是云计算可能会做的。
理论、实验和计算,这是人类进行创新的三条途径。云计算会使庞大的计算力为更多的人群所利用,它必将很大的加速技术改变人类生活的进程。创造者可以是科学家、工程师、或者程序员,也可能是任何一个有奇思妙想的普通人,只要他有一个终端,有一根网线,能方便的去操控数据、处理数据。
谁来进行云计算
Google、百度、新浪、腾讯、盛大等众多已经有着丰富数据资源或计算资源的互联网企业将会走在云计算浪潮的前列,除了安全性、带宽、软硬件资源管理等技术因素外,他们面临的最大挑战是尽快寻找到或者创造出新的基于云计算的用户需求。
传统的数据中心和超级计算中心,因其资源的优势,将很有可能走在云计算浪潮的前列。事实上,传统的超级计算中心已经完全符合云计算的特征和描述。例如笔者所在的上海超级计算中心,作为国内首家也是唯一一家面向公众开发的公共计算服务平台,已经通过网络为各个应用领域的用户提供计算服务。对这类数据或计算中心,云计算时代面临的主要挑战同样是拓宽或者寻找新的服务领域和服务内容。
对于个人或者中小型企业,云计算通常充满着机遇。他们可以通过和云计算服务中心的合作,托管运行自己的服务。一方面可以将现有的单机难以运行的应用移植到云计算中心,以服务的方式为用户进行数据处理或者计算;另外一方面,同样可以利用云计算服务中心开放的API,自行开发应用为用户提供服务,Google Map API即是这样的例子。个人或者中小型企业与大型的云计算服务中心的紧密合作,这将很可能是未来云计算的主要形态,也是创新的主要动力,毕竟,人民的智慧才是无穷的。
最后,政府也将在云计算浪潮中扮演重要的角色,需要运作大型的云计算中心来完成对各个领域大量数据的管理、整合和处理。事实上,已经有多个地方政府着手建立拥有海量存储和庞大计算能力的信息处理中心。想一想美剧反恐24小时中的场景,哪个政府不希望拥有那样的信息处理能力呢?
云计算的技术挑战
工欲善其事,必先利其器。云计算的前景虽然美好,然而还有不少的技术障碍亟需解决,主要包括高可靠的系统技术、可扩展的并行计算技术、海量数据的挖掘技术和数据安全技术。
1. 高可靠的系统技术
支撑云计算的是大规模的集群计算系统,当系统规模增大后,可靠性和稳定性就成为最大的挑战之一。需要通过有效的系统配置、监控、管理、调度、虚拟化等技术,实现一个强大的、动态的、自治的计算存储资源池,提供云计算所需要的大容量计算力。
系统级的容错技术是系统技术方面的一个难点。大量服务器进行同一个计算时,单节点故障不应影响应用的正常运行。对类似数据检索这样计算节点间无通讯的应用,这一点比较容易实现。但对那些有大量通讯的紧耦合类应用,当前业内仍无有效的系统级容错方案。目前主要还是依赖应用层面的检查点和重启技术,一方面增加了开发的难度和工作量,另外一方面对运行性能也有一定的影响。
2. 可扩展的并行计算技术
并行计算技术是云计算的核心技术,也是最具挑战性的技术之一。多核处理器的出现增加了并行的层次性,使得并行程序的开发比以往更难。而当前业内并无有效的并行计算解决方案,无论是编程模型、开发语言还是开发工具,距离开发者的期望都有很大的差距。自动的并行化解决方案在过去的30年间已经被证明基本是死胡同,但传统的手工式的并行程序开发方式又难以为普通的程序员所掌握。Intel、微软、SUN、Cray等业内巨头正投入大量人力物力进行相关的研究,但真正成熟的产品在短期内很难出现。
可扩展性是云计算时代并行计算的主要考量点之一,应用性能必须能随着用户的请求、系统规模的增大有效的扩展。当前目前大部分并行应用在超过一千个的处理器(核)上都难以获得有效的加速性能,未来的许多并行应用必须能有效扩展到成千上万个处理器上。这对开发者是巨大的挑战。
3. 海量数据的挖掘技术
云计算面对的是TB乃至PB级的海量数据,如何从数据中获取有效的信息,这将是决定云计算应用成败的关键。除了利用并行计算技术加速数据处理的速度外,还需要新的思路、方法和算法来完成更准确、快捷、强大的数据挖掘。
除了海量数据的挖掘,海量数据的存储和管理也将是一个巨大的挑战。在云计算时代,数据库将面临严重的危机,要么将集群数据库有效扩展到成千上万个节点,要么它就会被类似于Google文件系统这样的新技术所替代。“数据库已死”,这个断言将成为可能。
4. 数据安全技术
将原本保存在本地、为自己所掌控的数据交给一个外部的云计算服务中心,这样一个改变并不容易。网络技术的发展,使得带宽将不会成为主要障碍,安全性依旧是最重要的顾虑。然而,如同早已习惯将钱存在银行一样,未来的数据银行必将会出现,只是时间的早晚问题。技术其实不是最主要的障碍,制度、法规、诚信、习惯、观念,这些非技术的因素将决定云计算的受欢迎程度。(原文刊登在上海超级计算中心《高性能计算发展与应用》 作者:姚继锋)