本文是应《科学画报》约稿而写的短文, 本站版本包含了若干注释, 并在若干人名和术语初次出现时注有英文。 本文的发表稿经编辑修改后, 标题及文字均有所变动 (标题改为了 “云计算——互联网上一朵美丽的 ‘云’”), 内容也略有删减。
一. 引言
我们这个时代是一个互联网的时代, 但不知大家有没有注意过, 与其它一些连网的东西——比如管道煤气——相比, 我们使用互联网的方式是比较特别的。 比如我们的计算机虽然连在了互联网上, 我们却依然要常常为它购买软件或存储空间。 一个软件哪怕只是偶尔用用, 也要花同样多的钱去购买; 存储空间也类似, 拿光盘来说, 往往一买就是几十张, 多余的 “囤积” 在家里。 相比之下, 我们使用连在管道煤气上的炉子时, 却从来不需要到商店里去买燃料, 更不必囤积燃料, 而是要多少就用多少, 用多少才付多少钱。
计算机和炉子之间的这种差别并不是一直就有的, 年长的读者也许还记得, 很多年前, 人们曾经用过 “煤饼”、 “煤球” 一类的东西, 人们购买那些东西时就跟现在买光盘一样, 一买就是一批, 多余的囤积在家里。 如今的情形之所以不同, 乃是因为煤气已经连网, 可以随时从网络中获取。 既然如此, 我们就要问: 互联网这个网络是否也能有类似的功效, 让我们有朝一日无需 “囤积” 光盘, 也无需一次性地购买软件?
二. 云计算简史
著名的美国计算机科学家、 图灵奖 (Turing Award) 得主麦卡锡 (John McCarthy, 1927-) 在半个世纪前就曾思考过这个问题。 1961 年, 他在麻省理工学院 (MIT) 的百年纪念活动中做了一个演讲。 在那次演讲中, 他提出了象使用其它资源一样使用计算资源的想法, 这就是时下 IT 领域的时髦术语 “云计算” (Cloud Computing) 的核心想法[注一]。
云计算中的这个 “云” 字虽然是后人所用的词汇, 却颇有历史渊源。 早年的电信技术人员在画电话网络的示意图时, 一涉及到不必交待细节的部分, 就会画一团 “云” 来搪塞。 计算机网络的技术人员将这一偷懒传统发扬光大, 就成为了云计算中的这个 “云” 字, 它泛指互联网上的某些 “云深不知处” 的部分, 是云计算中 “计算” 的实现场所。 而云计算中的这个 “计算” 也是泛指, 它几乎涵盖了计算机所能提供的一切资源。
麦卡锡的这种想法在提出之初曾风靡过一阵, 真正的实现却不得不等到互联网日益普及的上世纪末。 这其中一家具有先驱意义的公司是甲骨文 (Oracle) 前执行官贝尼奥夫 (Marc Benioff, 1964-) 创立的 Salesforce 公司。 1999 年, 这家公司开始将一种客户关系管理软件作为服务提供给用户, 很多用户在使用这项服务后提出了购买软件的意向, 该公司却死活不干, 坚持只作为服务提供, 这是云计算的一种典型模式, 叫做 “软件即服务” (Software as a Service, 简称 SaaS)。 这种模式的另一个例子, 是我们熟悉的网络电子邮箱 (因此读者哪怕是第一次听到 “云计算” 这个术语, 也不必有陌生感, 因为您多半已是它的老客户了)。 除了 “软件即服务” 外, 云计算还有其它几种典型模式, 比如向用户提供开发平台的 “平台即服务” (Platform as a Service, 简称 PaaS), 其典型例子是谷歌公司 (Google) 的应用程序引擎 (Google App Engine), 它能让用户创建自己的网络程序。 还有一种模式更彻底, 干脆向用户提供虚拟硬件, 叫做 “基础设施即服务” (Infrastructure as a Service, 简称 IaaS), 其典型例子是亚马逊公司 (Amazon) 的弹性计算云 (Amazon Elastic Compute Cloud, 简称 EC2), 它向用户提供虚拟主机, 用户具有管理员权限, 爱干啥就干啥, 跟使用自家机器一样[注二]。
从 20 世纪末到现在的短短十来年时间里, 云计算领域的发展非常迅猛, 微软 (Microsoft)、 谷歌、 甲骨文、 亚马逊等大公司都已先后杀了进去。 很多大学、 公司及政府部门展开了对云计算的系统研究。 云计算俨然成为了 IT 领域中前途最光明的方向。 受此热潮影响, 2007 年, 电脑公司戴尔 (Dell) 的头脑开始发热, 梦想将 “云计算” 一词据为己有 (申请为商标), 结果遭到了美国专利商标局的拒绝, 美梦破碎。
云计算的早期服务对象大都是中小用户, 但渐渐地, 一些知名的大公司也开始使用起了云计算。 比如纽约时报 (New York Times) 就曾利用亚马逊的云计算, 将一千多万篇报道在两天之内全部转成了 PDF 文件。 这项工作如果用它自己的计算机来做, 起码要一个月的时间, 是不可承受之重。 另一方面, 从亚马逊的角度讲, 它提供云计算也并不是想学雷峰。 为了保证自己主业——网络销售——的顺畅, 亚马逊的硬件资源是按峰值需求配置的, 平时所用的只有十分之一。 提供云计算服务, 将这部分空置资源转变为利润, 赚它个盆满钵溢, 对亚马逊来说无疑是很实惠的。 亚马逊如此, 谷歌、 微软等巨头的几十万甚至上百万台服务器也不是吃素的, 因此云计算领域自然就群雄并起了。
三. 云计算的特点和优势
云计算作为一种技术, 与其它一些依赖互联网的技术——比如网格计算 (Grid Computing)——有一定的相似之处, 但不可混为一谈。 拿网格计算来说, 科学爱好者比较熟悉的例子是 SETI@Home, 那是一个利用互联网上计算机的冗余计算能力搜索地外文明的计算项目, 目前约有来自两百多个国家和地区的两百多万台计算机参与。 它在 2009 年底的运算能力相当于当时全世界最快的超级计算机运算能力的三分之一。 有些读者可能还知道另外一个例子: ZetaGrid, 那是一个研究黎曼 ζ 函数零点分布的计算项目, 曾有过一万多台计算机参与 (但现在已经终止了, 原因可参阅拙作 超越 ZetaGrid)。 从这两个著名例子中我们可以看到网格计算的特点, 那就是计算性质单一, 但运算量巨大 (甚至永无尽头, 比如 ZetaGrid)。 而云计算的特点恰好相反, 是计算性质五花八门, 但运算量不大[注三], 这是它们的本质区别, 也是云计算能够面向大众成为服务的根本原因。
云计算能够流行, 它到底有什么优点呢? 我们举个例子来说明, 设想你要开一家网络公司。 按传统方法, 你得有一大笔启动资金, 因为你要购买计算机和软件, 你要租用机房, 你还要雇专人来管理和维护计算机。 当你的公司运作起来时, 业务总难免会时好时坏, 为了在业务好的时候也能正常运转, 你的人力和硬件都要有一定的超前配置, 这也要花钱。 更要命的是, 无论硬件还是软件厂商都会频繁推出新版本, 你若不想被技术前沿抛弃, 就得花钱费力不断更新 (当然, 也别怪人家, 你的公司运作起来后没准也得这么赚别人的钱)。
如果用云计算, 情况就不一样了: 计算机和软件都可以用云计算, 业务好的时候多用一点, 业务坏的时候少用一点, 费用就跟结算煤气费一样按实际用量来算, 无需任何超前配置[注四]。 一台虚拟服务器只需鼠标轻点几下就能到位, 不象实体机器, 从下定单, 到进货, 再到调试, 忙得四脚朝天不说, 起码得好几天的时间。 虚拟服务器一旦不需要了, 鼠标一点就可以让它从你眼前 (以及账单里) 消失。 至于软硬件的升级换代, 服务器的维护管理等, 那都是云计算服务商的事, 跟你没半毛钱的关系。 更重要的是, 开公司总是有风险的, 如果你试了一两个月后发现行不通, 在关门大吉的时候, 假如你用的是云计算, 那你只需支付实际使用过的资源。 假如你走的是传统路子, 买了硬件、 软件, 雇了专人, 那很多投资可就打水漂了。
四. 云计算的风险和未来
上述优点无疑是诱人的, 以至于有人预言云计算不出五年就会 “千秋万载、 一统江湖”, 把包括个人计算机在内的许多传统产业挤垮[注五]。 但也有人不这么看, 因为云计算也存在一些令人担忧的地方。 比方说, 云计算的计算资源集中在为数不多的服务商手里, 从便于管理、 节约人力设备等方面讲虽然是有巨大优势的。 但这是一柄双刃剑, 它的另一面是一个很棘手的问题, 那就是一旦云计算服务商出现问题, 就会 “牵一发、 动全身”, 影响到所有依赖它的用户。 比如亚马逊的云计算在 2008 年的 2 月和 7 月先后两次发生故障[注六], 给包括著名微博网站推特 (Twitter)、 著名证券报价系统纳斯达克 (Nasdaq), 以及前面提到过的纽约时报在内的大量用户造成很大麻烦。 又比如谷歌邮件从 2008 年 7 月到 2009 年 2 月间, 接连出现了六次故障, 每次都影响到成千上万的用户。 这些故障的出现让人不禁想起一句古老的劝诫: 别把所有的鸡蛋都放在一个篮子里。
除故障外, 数据集中掌握在云计算服务商手里所带来的安全问题也引起了很多人的关注。 不过在这方面人们的意见比较分歧, 悲观的人认为这是很严重的安全隐患, 简直就是把自己的脑袋挂在别人的裤腰带上。 另一些人的观点则恰好相反, 认为云计算服务商多数是顶级大公司, 在数据安全方面无论经验、 设备还是技术水平都远远高于普通公司及个人。 在这个病毒与黑客横行的网络世界里, 把脑袋 (数据) 挂在它们的裤腰带上虽也不是万无一失, 但起码不会比顶在自己的脖子上更不安全。
云计算的未来究竟如何? 目前, 它或许还隐藏在 “云” 里, 但距离云开雾散的那一天可能不远了。
注释
- 麦卡锡获得的是 1971 年的图灵奖。 除提出云计算的概念外, 他还是 LISP 语言的创始人, 在人工智能方面作出过重大贡献 (他获得图灵奖就是因为人工智能方面的工作), “人工智能” (Artificial Intelligence) 这一术语也是他提出的。
- “软件即服务”、 “平台即服务” 和 “基础设施即服务” 是目前流行的译名, 但并不准确, 我个人倾向于译为 “作为服务的软件” (或 “软件作为服务”)、 “作为服务的平台” (或 “平台作为服务”) 和 “作为服务的基础设施” (或 “基础设施作为服务”)。
- 有读者可能会问: 前面提到的纽约时报的例子难道不是计算量很大? 答案是: 看相对于谁而言了。 那样的计算对纽约时报自己来说是大计算, 对亚马逊云计算来说却只是小菜一碟, 因为只用到了几十万台服务器中的一百台。
- 当然, 作为上网终端的计算机还是需要的, 但那种计算机无需高端配置, 从而是很便宜的。
- 因为在云计算的世界里, 个人计算机只不过是一种上网终端, 这种终端——如 [注四] 所说——是很便宜的, 利润也很微薄。 更雪上加霜的是, 上网终端不一定非得是计算机, 也可以是手机、 电视等设备, 今后甚至——如某些人幻想的——有可能是植入大脑的芯片。
- 具体地讲, 出问题的是亚马逊云计算的一种, 称为简单存储服务 (Simple Storage Service, 简称 S3)。
二零一零年五月五日写于纽约
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:云计算浅谈 - Python技术站