第1章 云的起源与发展
1.1 史海钩沉——云计算之前的历史
“千禧一代”可能觉得云计算是他们这一代的东西,但事实是,云计算的历史可以追溯到60多年前。在约翰·肯尼迪担任美国总统(1961~1963年)期间,人们所有的目光都集中在了太空竞赛上,除了美国五角大楼的高级研究计划局(ARPA),当时这些顶尖的研究人员还在探索一个不同的未知领域——如何将计算机互联。在该机构负责人J. C. R. Licklider 1963年的一份备忘录中描述了一种名为“星系网络”的计算机网络模型,该网络允许更新数据并与“其他位置”的程序共享,这些计算机通过使用相同的语言来通信。凡是连接到该网络的计算机,无论从哪里接入,都能访问程序和数据。这听起来就像是今天所说的云计算的雏形。
追本溯源是了解云计算的最好办法,为了真正认识云计算的价值,本节将回顾历史上先后出现的各种计算机组网模型,从云计算的起源开始说起,帮助读者了解云计算之前的历史。
1.1.1 局域网
局域网是针对广域网而言的,也是互联网的雏形。所谓局域网,简单地说就是在一个有限的环境里把计算机组合在一起。计算机和人一样,要想在一块儿聊天,需要有一套统一的语言,如果一个计算机说中文一个计算机说英语,那就无法对话了。这一套对话的语言叫作通信协议。具体说来,计算机的通信协议包括两部分,一部分是找到对方的寻址协议,即门牌号码,局域网里的门牌号码类似于居民楼的门牌号码,如6楼601住着刘老六,这个地址在这栋楼是准确的,出了这栋楼就不一定准确了。另一部分是编码协议,包括如何组织语言,如何传递,如何重组。其实人和人说话也有相似的过程,只不过人和人说话有一套约定俗成的解读方法,这样一来不用翻译也能聊天。有了寻址协议能找到“刘老六”,也有一个组织语言的编码协议能把话说顺溜了,这样两台计算机就可以在一块儿开始聊天了。局域网出现得很早且意义重大,因为后来的互联网就是从局域网发展而来的。
局域网是互联网的基础单元,有了局域网,计算机就能“对话”了,即协同工作,所以说局域网是云计算发展的第一步。
1.1.2 机房
除了局域网之外,要想实现云计算,还需要有存放计算机的机房。机房要保持恒温、恒湿,以保证计算机的正常工作。
机房建设包括几个部分:第一是要有坚实的机架,计算机不能散放在地上,否则有个“风吹草动”就有“土崩瓦解”的风险;第二是要有稳定的电力保障,一般机房都有应急备用电源,高级机房还有多路供电、自备发电机等应急办法,目的是保证在外部电力出现故障的情况下能再坚持一会儿,趁着这个时间发出故障信息,结束当前工作并保存现场数据等,以备电力恢复之后继续开展工作;第三是要恒温、恒湿,机房里的计算机大多数情况下都处于工作状态,毕竟我们之所以把计算单位集中起来就是为了让他们更好的进行工作,要是总空闲这就有点得不偿失了。计算机的中央处理器进行高速计算时会释放大量热量,不及时处理有可能造成计算机的过热停机。恒温的目的就在于避免计算机过热,图1-1显示了机房内的空气和热量流动情况。恒湿则是避免空气中灰尘产生静电导致原件被击穿,起到保护脆弱原件的作用,第四是要有高速网络保障,好一点的机房应该是全光纤通信,稍微普通点的机房也应是六类线加上千兆交换机,以充分保证机房内设备的通信速度。
机房的建设是昂贵的,属于商业地产项目中不怎么赚钱的项目,早期只有大企业和基础电信供应商才会建设,一般选择地广人稀的地方进行建设。近些年这个情况发生了一些变化,全国范围内需要云服务的地方越来越多,于是各地都希望有自己的数据存储中心和云计算中心,作为商业地产的一个种类,大型机房投资逐渐变得有利可图起来,未来的3~5年内可以预见,随着云计算的蓬勃发展和5G时代的到来,越来越多的机房会被建设起来。
图1-1 机房的空气和热量流动
机房的发展目前还有个几个趋势值得关注:一是机房的专业用途化,即某个机房专门为提供某种云服务而诞生,如目前一些地方兴建的区块链专用机房;二是云中心中机房的功能越来越复合化,很多机房除了承载云计算的工作之外,还承载了通信服务器的工作。未来5G网络的建设需要很多基站资源,而这种放置通信基站的网络传输设备间很可能还需要放置一些计算服务器,于是一种名为“边缘计算”的云架构模式诞生了,在这个时代,机房就变成了一个综合的通信和计算服务的一体化解决方案。
1.1.3 数据中心
数据中心是用来集中存储数据的,也是云计算中最常见的应用场景之一。数据是当今各企业最有价值的资源之一,数据可以帮助企业做分析和决策,也能为未来人工智能时代提供海量的信息储备,所以妥善保管数据成了非常重要的事情。数据中心包括一系列的设备和措施用于保障数据的安全、可靠。
近些年来,数据的安全性、可靠性和可用性开始被更多的人关注。随着计算能力的发展和数据采集的多样性,云计算中心的一个重要工作就是使用大数据模型收集数据,然后使用人工智能技术对数据进行分析,数据中心的重要性日益凸显。为了保证数据中心数据的可用性和可靠性,需要对数据中心做一些特殊的服务。
为了保证数据的安全,要采取一些防止数据泄露的措施,如各种监控设备,以及隔离的房间,甚至是震动传感器等,基本上目前为了数据安全,数据中心可以算是“武装到了牙齿”。
信息化时代,随着人工智能的发展和自动化水平的提升,人口已经转变成了一种资源,尤其是人类的社会活动带来的数据增长,已经变成了机器用于学习和进步的资源和养料。
数据中心需要的是一个相对稳定、可靠的环境,这个环境包括物理地址、高架地板、供电和发电系统、制冷系统、机架、安全防火系统、电缆敷设,以及管理系统和服务系统。如图1-2所示是微软公司(以下简称微软)的数据中心,一个完备的数据中心结构相当复杂,这也是对于小企业而言,与其耗费巨资建设数据中心,不如直接租用云计算更为经济、可靠的原因。
图1-2 微软的一座大型数据中心
1.1.4 网格计算
说完机房的硬件条件,接下来就要谈谈如何联合计算了。现在计算机能对话了,也有了一个相对舒适安逸的环境,下一步就要进行协同计算工作了。
哪些问题是需要多台计算机一起协作才能解决的?一般来说这种协同计算可以分析来自外太空的电信号,寻找隐蔽的黑洞,并探索可能存在的外星智慧生命;也可以寻找超过1000万位数字的梅森素数;还可以寻找并发现对抗艾滋病病毒的更为有效的药物。这些项目都很庞大,需要惊人的计算量,仅仅由单台计算机或是个人在一个能让人接受的时间内计算完成是绝不可能的,于是协同计算诞生了。
协同工作大家都做过,如包饺子,有人擀饺子皮,有人和饺子馅,这算是一种协同工作;另一种如大家一起将一堆砖头从一处搬到另一处。这两种都是协同工作,但是有本质区别,前者是有分工的协同工作,每个人做的事情不一样,且做的事情有先后顺序,依赖这个顺序才能开展工作;后一种协同工作是大家一起完成,做的事情差不多,也无所谓谁先谁后,总之最后把事情做好即可。这是按照协同工作的协同性进行的分类。
网格计算就是把一个工作拆分成多个步骤的方式进行,不过网格计算是弱协同性的模型,即不要求协同的人相互配合工作,大家以各自为战的模式开展工作。网格计算通过网络把一个复杂的计算动作分给加入网格的每个计算单元,每个单元自己做自己的作业,互相不用配合,只把计算结果合并在一起即可。网格计算诞生的时候带有一些公益色彩,很多时候是期望大家把空闲的计算资源贡献出来,一起解决一些难题,比如笔者就参加过一个项目,该项目在屏幕保护运行的时候进行素数分解计算,并把寻找到的大素数发送到一个计算中心,在不知不觉中大家一起解决了一个复杂的数学问题。
1.1.5 大规模计算
网格计算提供了把一个任务进行分拆的最简单的办法,即让每个人都做毫无关系的单独计算。实际上有些工作是有序的,如同前面包饺子的例子一样,这样的工作需要有协同性,这时就需要另一种进行工作组织的方式,大规模计算就应运而生了。顾名思义,大规模计算就是计算的规模特别大,这里的“大”有两个含义,一个是参与计算的计算机的数量多,一个是计算的复杂程度高。大规模计算算是并行计算里的高级形式,即可以把工作按照工作量进行平均分配,还可以把工作按照顺序进行分配调度,这样一来协同工作也可以进行分布式计算了,大大提高了计算效率。
1.1.6 超算
超算又叫超级计算机(Super Computer),指能够执行一般个人计算机无法处理的大资料量与高速运算的计算机,规格与性能比个人计算机强大许多。一般家用计算机的CPU有2~8颗内核,已经能够满足人们日常的工作和娱乐需要了,而超算一般都有成千上万的物理CPU,每颗CPU又有几十颗物理内核,可以看出超算的计算能力是远超家用计算机的。超算强大的计算能力是用于解决专门的工程问题的,例如,飞机在飞行中全身有几十万个着力点,计算飞机受力模型可以帮助飞机设计者了解飞机飞行中的平稳度,提升飞机飞行的可靠性。这种复杂的受力分析就需要超算帮助进行模拟计算。我国的天宫一号飞行器的设计过程中就使用了我国自主研发的“神威·太湖之光”超级计算机,如图1-3所示。
图1-3 我国自主研发的“神威·太湖之光”超级计算机