云计算与大数据
上QQ阅读APP看书,第一时间看更新

1.1 云从哪里来

首先,我们需要知道云从哪里来,搞清楚谁是云计算的提出者至关重要,这个大可上升到哲学的高度,可类比千百年来科学家乃至全人类最关心的问题的核心,就是知道人从哪里来。同理,知道云从哪里来可以更好地帮助我们预判云会朝哪个方向发展,会在何处融入、改变人们的工作与生活。

1.1.1 云计算科技史

云计算的起源众说纷纭,各种版本皆有。有人说,云计算是亚马逊最早于2006年推出的AWS服务。AWS从早期的云计算服务EC2、存储服务S3到今天发展为目前业界最为广泛使用的各类计算、网络、存储、内容分发、数据库、大数据管理与应用等五花八门的服务。也有人说是Sun Microsystems在2006年3月推出的Sun Grid,它是一种公有云网格计算服务,一美元一小时的CPU使用价格,和用电一样的计费模式,Pay-Per-Use(按使用量计费)。不过,按照MIT Technology Review刨根问底的结果1,是Compaq(康柏)电脑公司更早在1996年的内部商业计划文档(见图1-1)中最早使用的Cloud Computing(云计算)这一字样与图标的(遗憾的是,康柏在被惠普收购之后,除了继续卖了几年低端PC外与云计算再无瓜葛)。

图1-1 康柏公司1996年商业计划文档ISD Strategy for Cloud Computing

1.1.1.1 云计算的三大要素

以上可以算作对云计算“冠名权”归属的一番浅究,事实上云计算的起源比以上诸多论断还要早,其发展历程贯穿了过去半个世纪全人类的IT发展史,如图1-2所示。

图1-2 云的起源及发展(从20世纪70年代至今)

1.云计算要素之一:分时计算

早在20世纪70年代初期,那还是 Mainframes(大型机)如日中天的最后一个黄金10年,IBM在其大型机主机与终端之间使用了一种叫RJE(Remote Job Entry,远程任务输入或叫远程任务处理)的机制。如果大家对大型机有所了解的话,大型机自20世纪60年代中期就已经普遍使用了虚拟化技术,其间最典型的应用就是Time-Sharing(分时),也就是说多个任务或者多个终端事先就被分配好占用主机处理器完成任务的时间和优先级;从整体上看,像是主机在同时服务多个用户、多个终端来处理各种不同的任务。发展到今天,从蜂窝电话网络到 PC 上面的处理器再到手机终端,分时计算在我们的生活中可谓无处不在(笔者特意没有提到虚拟化即是云计算这一容易引起误解的概念)。

2.云计算要素之二:网络互联

从20世纪60年代末期开始到80年代,还有一系列大事件发生,那就是TCP/IP网络的诞生与蓬勃发展。这里不得不提到两张网,一个是 ARPANET[Advanced Research Projects Agency Network,(美国国防部)高级研究计划署网络],另一个是CSNET(Computer Science Network)。ARPANET 是美国国防部在20世纪60年代后期开始资助的用于研发packet-switching(包交换或分组交换)技术。在分组交换之前广泛应用的是一种被电信公司使用的 circuit-switching(回路交换或电路交换)技术,相比分组交换而言,回路交换使用点对点的固定通信线路对资源的利用率低下,另一个被广泛流传的原因是当时处于美苏冷战时期,北大西洋公约组织希望有一种网络通信方式可以在经受核打击情况下依然能完成信息交换,后面这一点也被认为是美国国防部在20世纪60年代开始寻找更高效、更安全的包数据交换方式的主要原因)项目。互联网雏形是于1969年12月5日在四所位于美国西部的高校UCLA、Stanford、UCSB和UUtah间第一次形成的四节点分组交换网络,而在一个月前最早的“互联网级”信息传递是在UCLA与Stanford大学之间完成的,传送的只是一个简单的单词login,而仅仅在一年前包交换技术才被发明(互联网技术的发展速度由此可见一斑);CSNET 是美国国家科学基金会在20世纪80年代初开始资助的项目,可算是对 ARPANET的有效补充(对那些由于资金或权限等限制而不能接入互联网网络的学校与机构提供帮助),此两者被公认为奠定了互联网的科技基石。

3.云计算要素之三:网络安全与资源共享

进入20世纪80年代和90年代,对于IT行业而言最大的发展可以归纳为:PC的兴起,PC的兴起带动了整个产业链上下游的蓬勃发展,从CPU、内存、外设到网络、存储、应用,不一而足。PC的广泛应用极大地提升了劳动生产率,特别是在连接企业、部门、员工情景下催生了对网络资源虚拟化、数据共享以及数据传输安全的强烈需求,应运而生的一系列技术,如VPN(虚拟专网——在公共网络通道之上建立点对点的私密通信渠道)、分布式计算(PC的发展在本质上就是让多台PC协同计算来实现原来只有大型机、小型机可以完成的任务)。

进入21世纪的第一个10年,IT行业经历的发展可以简化为如下两个阶段。

(1)基于PC的虚拟化技术高速发展,虚拟化技术早在20世纪60年代就已经在大型机上出现,不过真正广泛应用是随着 PC 的兴起而后单机处理能力达到了需要通过虚拟化的方式来进一步提高PC资源利用率。

(2)第二个阶段开启于2006年,在同一年内Amazon、Google、Sun Microsystems公司先后推出了各自的云计算服务,2008年微软公司推出了Azure云计算服务,同年在NASA(美国国家航空航天局)的资助下OpenNebula开源云计算平台项目成立,两年后NASA与Rackspace Hosting(得克萨斯州的一家ISP)联手推出了OpenStack开源软件项目,在过去的数年中OpenStack从早期模仿Amazon AWS服务到逐渐形成颇具特色的IaaS(平台即服务)平台并逐渐地向下、向上蚕食生态系统,短短几年间 OpenStack 几乎已经超越 Linux成为全球最大的、最活跃的开源社区;而与此同时AWS则攻城略地,占据了公有云计算领域的大半江山。

小结以上两个阶段,可概括为:PC→PC 虚拟化→各种云计算平台及服务解决方案风起云涌。

1.1.1.2 云计算的本质

近两三年的云计算的发展让人眼花缭乱,各种新兴的技术、新兴的公司风起云涌。其中值得一提的有两样东西:一个是容器计算。我们前面提过虚拟化,基于虚拟机(Virtual Machine,VM)的虚拟化可算是对Baremetal(裸机)这种形式的有效补充,而容器可算作是对基于VM技术的虚拟化的有效补充。容器的意义在于重新提高了因虚拟化带来的计算效率的降低,后面的章节中我们会专门论述相关的问题。另一个值得一提的是大数据。如果说2006年开始的云计算浪潮多少都是偏重于底层的平台与服务,而真正寻找到的与之匹配的就是近三五年来声名鹊起的大数据应用。两者可算是一拍即合:云计算作为基础架构来承载大数据,大数据通过云计算架构与模型来提供解决方案,如图1-3所示。

图1-3 当云计算遇上大数据

至此,我们来总结一下到底什么是云计算。从技术角度来看,云计算是多种技术长期演变、融合的产物,诸如分布式计算、并行计算、网络存储、分布式存储、虚拟化、裸机及容器计算、负载均衡等计算机及网络技术,如图1-4所示。

图1-4 云计算的底层技术发展与融合

云计算的本质是多种技术的融合,它和很多其他技术颇有相通之处,例举几个。

(1)C/S与B/S技术。

(2)P2P技术。

(3)并行计算(Parallel Computing)。

C/S是Client/Server的头文字联写,泛指任何客户端到服务器端的双向通信机制和架构,而 B/S(Browser/Server),可看作 C/S 架构的一种形式,也是目前最常见的网络节点间通信方式;P2P[Peer-to-Peer,(注意区别于P2P金融,后者指的是Person-to-Person Lending,即人对人借贷,本质上是一种众筹借贷的金融模式)],是一种分布式应用架构,它的核心理念是Divide-n-Conquer(分而治之)或者说是Task-Partitioning(任务分区)。可以说C/S架构与任务分区理念二者合在一起就已经把云计算的技术本质描述出来了,云计算在本质上依然是一种分布式计算,一个与之相对应的技术是并行计算,它们之间的主要区别在于节点间通信方式差异:分布式计算、云计算显然是通过信息(Messages)来实现节点间(节点在这里可以理解为CPU或主机或计算机集群)通信,而并行计算通常会采用共享内存(Shared Memory)的方式,后者虽然效率会更高,但是可以想见其可扩展性会受到一些限制……在某种程度上,并行计算可以看作一种特殊的分布式计算,特别是在小规模紧密集群或早期分布式计算时期的实现方式中经常可以看到并行计算的影子。

1.1.1.3 云计算基本特征

这么多技术名词,难免让人眼花缭乱,那么如果要我们总结云计算的通性,或者说基本特征,有没有呢?笔者以为可总结为如下5条。

(1)共享资源池。

(2)快速弹性。

(3)可度量服务。

(4)按需服务+自服务。

(5)普遍的网络访问。

第一条共享资源池指的是计算、网络、存储等资源的池化和共享;第二条快速弹性指的是云计算能力应对需求、负载变化时的可伸缩性(快速弹性指的是“自动化”,原来需要几周、几个月完成的事情,现在可以在几秒钟、几分钟内完成并且几乎不需要人工干预);第三条可度量服务也是云计算非常重要的特征,包括对各项服务和应用的监控、计费等;第四条是按需服务、自服务,按需服务听起来很像某种人类文明高度发展的终极社会形态——按需分配,在云计算的背景下,按需服务是为了降低重复建设、过度分配而造成的资源浪费,而自服务则给予了用户极大的把控性同时降低了对维护成本的开销;第五条指的是可以在任何时间、任何地点通过网络来访问云计算资源。图1-5展示了云计算的这些基本特征。

图1-5 云计算基本特征示意图

这里,我们套用IDC在2013年提出的“三个平台2”来作为总结,如图1-6所示。

图1-6 第一、第二、第三平台

第一平台出现最早,横跨了20世纪50—70年代,是大型机、小型机的天下,受众主要是一些大型企业,服务的对象用户和应用分别是百万级和数以千计;第二平台是进入和连接了千家万户的PC的时代,用户数量与应用分别达到了亿万级和数以万计;第三平台颠覆了曾经颠覆第一平台的第二平台的霸主PC,而接入用户的规模继续以指数级增长,如果再算上IOT设备(物联网级产品,各种可联网传感器),则用户规模可达到数以百亿甚至千亿级,而应用也空前蓬勃发展,达到了百万量级。今天我们正处于大规模从第二平台向第三平台迁移与发展的关键阶段。在1.1.2节,我们会着重讨论业务需求与 IT交付能力之间的互动问题。

1.1.2 业务需求推动IT发展

随着过去几十年间IT行业从大型主机(Mainframes)过渡到客户端服务器(PC Servers),再过渡到现如今的移动互联时代(Mobile Internet),IT可把控的资源和预算的大趋势一直在下滑。 在过去十几年的时间里,对虚拟化技术的采纳帮助IT实现了极大的效率飞跃,大幅提升了IT满足业务预期的能力。不过,在当下的移动互联时代,面对数以十亿计的新移动消费者以及数以百万计的新应用和服务,IT可谓是机遇和挑战并存。业务预期呈现出了指数增长。如果不在“我们如何做IT”方面做出根本性改变,没有人能赶上行业发展的步伐。IT交付所面临的问题如图1-7所示。

图1-7 业务预期vs.IT交付能力vs.IT预算(横轴为时间轴)

今天绝大多数的政府和企业都已经遇到或即将遇到同样的问题,在IT支出中,2/3甚至是超过3/4的资金被用于维护现有系统(第二平台系统)以满足现有客户的需求,仅有1/3的预算被用来部署新应用(第三平台)以帮助获得新客户及业务从而增加收入,同时通过大数据分析等应用来更加贴近客户等。

大多数政企IT部门所采用的依然是传统模型,在传统IT流程中,每个新的解决方案都是一个需要进行采购、设计、配置、测试以及部署的项目,即便是做得很顺利的话,新项目部署周期也要长达数周、数月甚至数年。这就很难实现高敏捷性和低投资,也就很难通过IT来增加收入。组织机构的目标就是增加敏捷性,减少运营支出,对未来进行更多投资,并不断降低风险,但是这两者之间存在着一个鸿沟,如图1-8所示。

图1-8 传统应用vs.下一代云应用

换一角度来看问题,今天的数据中心中依然充斥着大量的第二平台甚至第一平台的那些“传统”应用,它们虽然在增长速度上(是的,依然在增长,而不是有些人说的所有的应用都是下一代第三平台云应用,此类的说法过于绝对并且不符事实)没有新型的云应用那么惊人,但在绝对数量上依然占主体,也就是说在相当长一段可预见的时间内,政企IT部门的投资依然会在如何继续减少经营支出与如何增加面向新模式的投资间做出分配。

如何让IT的交付能力保持同步,甚至超越业务的预期是IT部门始终的使命(见图1-9)。

图1-9 与业务同步的IT交付能力

在相当长一段时间内,业务部门对IT高度依赖,牺牲了敏捷性、灵活性来获得IT的支撑,IT 拥有极大的控制权并提供安全保障;当随着基于云的服务出现的时候,特别是三大“XaaS(即:SaaS,软件即服务;IaaS,基础架构即服务;PaaS,平台即服务)”出现后,业务部门迅速地开始拥抱它们并将之作为替代解决方案提供渠道,XaaS带来了更高的敏捷性、灵活性,但是与此同时,IT部门也丧失了控制,安全性也存在未知因素。走到这一步可以算作是今天很多政企部门遇到的问题的一个集中写照,如果继续发展下去,更高的一个阶段应该具有如下特征。

●敏捷性。

●IT控制&安全(可集中管理)。

●开发一次、可多地部署。

●选择权。

第一、二点较容易理解,不再赘述,第三、四点需要在此说明一下,同时也会引出下一节的议题:云的多重形态。所谓一次开发多地部署,指的是为一种环境开发的应用或服务,可以在私有云、公有云、混合云等不同形态的云环境上便捷部署;而选择权指的是让用户可以选择并实现让应用与数据可以跨越云边界,如在公有云、私有云间自由迁移,下一节我们会展开阐述。