云,随时随地都可以以最低的成本获取和共享计算和存储以及带宽,使得社会IT资源得到高效利用,就像电力系统一样,用多少电交多少钱。这是根据网上定义抄来的,不过我觉得先说说云计算形成的历史会比较有意思。
最早提出计算作为公共服务类似概念的人,是计算机科学约翰·麦卡锡(John McCarthy),他在MIT 100 周年纪念日上说,计算在将来某天会组织成像电话系统一样的公共基础设施服务,每个服务订阅者只需要支付他需要的那一部分计算量,就有权使用一个系统上所有的编程语言。同时服务订阅者也会向其他人提供服务,计算机实用程序可能成为新的重要行业的基础。
“Computing may someday be organized as a public utility just as the telephone system is a public utility, each subscriber needs to pay only for the capacity he actually uses, but he has access to all programming languages characteristic of a very large system … Certain subscribers might offer service to other subscribers … The computer utility could become the basis of a new and important industry.”
但是这位大佬却不是研究云计算的专家,他是人工智能领域的专家,被誉为人工智能之父,还有AI的早期编程语言 LISP也是他发明的。不得不说麦卡锡非常有先见,他对事物的本质和抽象看得非常清晰和充满自信,他在计算理论方面的研究让他看到计算能力最终会成为一种公共服务资源。吴军博士同样在数学之美中也阐明了他对机器学习的认识,不是机器在学习,更确切的说是机器在计算,利用数学来做计算。
要说云计算,从字面意思可以看到至少有两个主线,一个是云,云的意思,在当前互联网时代,我觉得应该侧重于互联互通,更确切的说是计算机网络,当然目前来说,这个云的意思偏向于企业数据中心和存储。一个是计算,就是我们的计算机最核心的功能。另外我通过另一条主线,也就是计算需求的迁移之旅或者说算力随着历史发展的热力图来谈云计算的发展。
1963年,DARPA(the Defense Advanced Research Projects Agency) 授予MIT启动MAC项目,这个项目中开始研究如何让计算机能够同时被多人访问,事实上这个项目不是为了研究计算机本身,而是为研究人工智能做准备,DARPA后期资助的所有项目几乎全部都是人工智能相关的,包括计算机视觉,语音识别,自然语言处理,专家系统,认知计算,机器人控制论等。当时还有一个新词叫虚拟化,就是用来描述一台计算机可以多个人同时使用,就好象他们各自使用了一台计算机一样,当然现在虚拟化这个词,已经远不止当时这个场景的意思了,虚拟化技术变得更加成熟,其实当时的虚拟化应该就是发明了支持多用户的分时操作系统,也就是Unix. 分时复用技术的发明,增强了计算机的使用效率和范围,也加大了计算机互联的需求。
1969年,ARPA(Advanced Research ProjectsAgency)提出ARPAnet构想,这就是计算机网络的雏形,这个项目使得安装不同操作系统不同类型的计算机可以相互通信。最早的计算机网络有四个节点。建立网络的关键是如何将各个分散的计算机网络连接起来,而又不会因为持续连接而耗尽网络资源。解决这一问题的技术被称为分组交换。分组交换将请求的数据分成小块(组),这样数据就可以得到快速的处理而又不会阻塞网络其他部分的通信,今天的Internet仍在采用这一原理。
上个世纪70年代,当时几乎都是大型计算机和工作站,能够使用计算机的人基本都是科学家级别,而且使用非常受限制,往往都是用来做科学计算的,但是当时的大型机计算速度还不如现在一台个人电脑,大型机当时基本只有IBM能制造(另一家是EMC,是这一领域的跟随者,主要生产相对廉价和低性能的小型机),价格在百万美金以上,同时一个工作站往往被多人使用,因此大家需要排队预约,这也催生分时复用操作系统被研发出来,因为最早的操作系统是NASA给火箭用的实时操作系统,而分时操作系统的鼻祖,是NASA科学家Ken Thompson为了方便自己工作和玩游戏发明的Unix(1969),只不过只能运行在特定设备上。分时操作系统能够多人同时使用一个大型机器,怎么使用呢,其实就是从机器机房牵出来很多数据线连接到几百台终端,这个终端就是一个显示器+键盘。这也是为啥很多初学linux的同学比较头疼的一个概念,多用户以及终端。其实一个操作系统是可以同时登录很多人的,每个人都可以使用终端来登录,Linux下面还有伪终端,就是经常使用的Terminal,如果只是使用Windows的小白,基本都无法理解这些概念,以为自己的电脑就是自己一个人可以用,当年初学Linux的我也可以说是被这些概念绕晕了。下图不是一个电脑,而是一个终端,可能有多个终端连接到一台大型机上面。
可以说,那个时候的计算形态就很像云计算,但是网络设施也不发达,计算能力和存储能力都很有限,而且计算资源的获取非常不方便,计算机只是少数人使用的工具,所以,只能是伪云。那个时候的计算其实也放在云上,但是远远没有达到随时随地获取计算能力的要求,计算资源更达不到闲置的状态,因为根本还无法满足需求,那个时候计算热力图往往集中在大型机构的大型机房。
后来,也就是80年代,苹果公司发明了个人电脑(1976年乔布斯和沃兹发明了第一台个人电脑Apple-I),比尔盖茨发明了windows以后,人们可以方便的使用计算和存储能力了,不过是花钱买一台电脑。当时主要用来处理和存储表格文档(现在庞大臃肿的Office就是从那个时候演化过来的,也是以前微软收入的大头),玩点小游戏,这里提一段趣事,当年乔布斯找到盖茨帮他开发操作系统上的软件,还给盖茨演示他们基于图形界面的操作系统,结果盖茨并不是只会技术的技术宅,他是伪装成技术宅的商人罢了,看着乔布斯介绍的图形化界面非常漂亮,就偷偷自己研发Windows了,其实也不是他从头写的,他非常有商业头脑,他是当年花了7.5万美金买来了DOS,然后以版权费的形式卖给IBM而不是一次性卖掉,但是这款基于命令行的操作系统和苹果基于图形界面的操作系统相比太落后了,盖茨是个商人,他要自己研发图形操作系统,同时由于乔布斯被赶出公司也给了微软很多时间。最后的结果大家也知道,是盖茨通过Windows把个人电脑推向全世界,Win+Intel形成了行业通吃的联盟。苹果属于开创者,他走的是软硬捆绑加极致的用户体验,随后我们会看到,苹果还会再一次开创一个时代,但又无法成为推动者。在PC时代,盖茨属于推动者,变革了整个微机工业生态链。两者几乎垄断了所有的个人桌面电脑的市场。当个人电脑开始普及时,大家再也不用排队预约大型机了。
此时计算需求从伪云被迁移到端上,也就是个人计算机。由于需求巨大,进一步推动了Windows+Intel的产业格局,前者刺激后者提高处理速度,后者推动前者开发更复杂的功能再消耗掉计算能力。此时人们不会去想云计算,因为大家都觉得拥有一台个人电脑既方便又酷,那个时候虽然处理器不快,但是都是处理一些简单的计算任务。
在90年代万维网被发明,也就是 www 协议。让人们可以通过该协议传输文本以及多媒体文件,使得相互连接的计算机越来越多,互联网慢慢开始普及起来。彼时,Linus还是芬兰大学的一名大学生,平时喜欢捣鼓和组装个人电脑,大部分非程序员不会知道这个人,不过基于Linux的Android操作系统,大家都知道,Linus借住Unix的设计理念,从头开始实现了一个操作系统Linux。为什么当时已经有了Unix,还会有Linux的存在呢? 其实是因为Unix后来被AT&T 闭源,而且当时基于Unix分支的操作系统比较多,可移植性也不强,硬件不同可能就无法运行了。于是喜欢折腾新玩意儿的Linus自己写了一个操作系统。Linux算是众多Unix分支的其中一种版本,而且Linus的开发过程与众不同,他先实现了一个版本,然后放到因特网上,征求大家的意见,一起协作开发,这算是Github的雏形了。就这样,Linux内核蓬勃发展,社区壮大,从最开始的几万行代码,发展到现在的几千万行,对于任何一个想看内核的人来说,都是部天书。
Linus的贡献不只是发明了Linux,因为当时操作系统已经不是新鲜事物,很重要的是带动了开源运动和Linux独特的软件开发方式,那时候盖茨和乔布斯还不知道,这个未来移动互联网,云计算和IoT领域的霸主操作系统悄然诞生了。
而且在90年代末期,VMware实现了基于虚拟机的虚拟化技术,可以在X86平台上运行工作站,使得在一台物理机器上可以运行多个虚拟机器,许多传统企业开始使用VMware的虚拟化解决方案,来减少企业对IT服务器资源成本,真正的虚拟化技术得到了企业认可。
2000年前后,互联网泡沫破灭,很多www公司都破产了,那个时候的www公司就像现在的人工智能公司。每一次浪潮,都会死掉90%的公司,活下来的都成了巨头。在这次互联网浪潮中,出现了一个新巨头,谷歌诞生了。然后在21世纪初。随着互联网的普及,广告弹窗应用服务也变得越来越多,特别像谷歌这种搜索公司,为了存储和索引整个互联网的数据,不得不在服务器和基础设施上下功夫,采用了廉价服务器+Linux的方式,完成了去IOE(IBM+Oracle+EMC)的基础设施变革,研发能够管理大规模集群的操作系统,当时谷歌的数据中心就已经有大约几十万台服务器了,现在它的数据中心则更大,服务器数量加起来貌似有几百万台,非常恐怖。另外亚马逊和阿里巴巴这些电商公司也非常恐怖,都是几百万的规模。后来其他互联网公司也都采用同样的模式,Linux在这个模式中起了重要的作用。此时,云的雏形开始出现了,这个时候,云计算这个词还没普及起来,估计只有某些大佬知道,未来云计算会是一个新的产业,其中之一是亚马逊的贝索斯,当年连李彦宏都看错了,觉得云计算没得技术含量,新瓶装旧酒,但是现在则开始重金投入到百度云的建设上。
在2007年,乔布斯发布了iPhone这款跨时代的产品,颠覆了人们对于手机的认知,乔布斯再一次成为智能手机的开创者但是还是不是推动者,他们注重用户体验和高端时尚,这次智能手机推动者是以谷歌为首的Android联盟,而Android就是以Linux内核为基础研发出来的。
在2010年左右,智能机开始普及起来,从此便一发不可收拾,这次形成了Arm+Android的新产业链,微软出局。此后,苹果又发布了iPad等创新产品,进一步把人们带到移动互联网的时代。
大概在2012年左右,各种通过App创业的人多入牛毛,很多大学生也通过App创业达到了人生巅峰。那个时候,我终于闪亮登场了,加入这波浪潮等着被人割韭菜。。。我拥有了第一部智能机,严格来说,是第一步手机。。。。同时我学会了上网,后来又学会了翻墙,感谢当时有个同学教我翻墙,我英语还不错,从此感觉发现了新大陆,用谷歌搜索出来的东西质量都非常高,之后便入坑程序员了。彼时,美团,头条,滴滴才刚开始创业不久,小米HUAWEI联想OPPO魅族三星以及一些杂牌等在中国进军智能手机市场,移动互联网飞速发展。移动互联网蓬勃发展了7年,速度更新迭代之快令人咋舌。这里说一个在中国发生的现象,就是美国人应该是先接触互联网,而后才开始移动互联网,而在中国,特别是农村,大家在还不明白怎么上网的情况下,直接被卷进移动互联网,农村人现在要么老人被这些现代科技无情淘汰,要么是整天刷抖音,头条,西瓜视频,拼多多,使用微信支付宝,注意这批人大概有6亿,这也是拼多多还能成功的原因之一。
从2013到2016年,国内云盘服务开始进入大众视野,百度网盘,微博网盘,360网盘,腾讯微云等等都开始提供个人云存储功能。但其实谷歌早早在2006年就开始做Gmail云盘,以及Google Docs,后来演变为Google G Suite,这是一系列云端办公SaaS服务,包括云盘存储,对标office的在线办公,以及多人协作软件服务,后来再出现的一起写,石墨文档等,也都是模仿谷歌这套东西。但是后来大部分云盘服务都被迫关闭了。云盘定义是个人云存储,比如坚果云等,可以时刻上传同步你的数据,随时随地访问你的数据。但是百度网盘体验真的是差,作为国内最大的云盘,他在Linux上的支持非常差,非会员能把网速限制到几十K,网盘还引入了商城(虽然我从未浏览过),网盘功能复杂,应该是百度网盘通过这些年累积起来的用户量太大,寻找商业变现途径,不然光存储的数据量和流量成本也可以压垮百度网盘。最蛋疼的是百度网盘没有协同办公的入口,百度云盘侧重于累积只读数据,做数据挖掘,不侧重于同步更改数据。相比而言,坚果云则跨平台支持非常高,而且自动同步不收费,支持随时同步数据,协同办公,版本控制(有道云笔记也是我经常用的)。就我个人而言,云盘对于我来说应该有两个重要功能,不是存储数据和挖掘数据(我不想我的笔记本也被一大堆广告占领),而是同步数据,编辑数据,版本控制!但是没办法,目前中国软件走的是免费模式,没有广告这些云盘没法活。
云盘可以说是云计算领域SaaS服务的重要代表,这种随时随地同步数据的功能,给同时拥有和使用多台设备的消费者带来了很大的便利,提升了个人工作效率,同时也为大众认识云服务的开头。
这一个时期,为云计算和基于数据的人工智能做了大量的铺垫,数据如洪水猛兽一般被上传到数据中心,数据指数级积累。机器学习让人们知道数据原来这么有价值,于是原来用硬盘磁带备份的数据,甚至是由于存储不够被删除的历史数据,企业都不想再丢掉了,希望能把所有的数据都收集和存储起来,方便以后随用随取以及更好的杀熟和割韭菜,为了充分挖掘和存储这些数据,这些挖掘和存储工作已经在移动端和个人电脑上无法处理了,移动端的计算能力有限,这个时候,计算需求又从端迁移回到了数据中心,和最早的大型机的模式很像,不过现在的数据中心计算能力和存储能力和以前相比都是指数级的区别。同时,集群都是异构的,除了传统的CPU,还有GPU,FPGA,TPU等用于AI计算的处理器。
这种计算需求的迁移,一方面导致企业数据和流量指数级上升,服务数量指数上升,企业必须采购更多的硬件设施来部署这些服务,催生了巨大的IT资源需求,但同时带来巨大的成本。另一方面,很多计算资源被浪费了,因为往往周期性活动一结束,那些多余的资源就不会再使用了,这就导致企业采购的服务器闲置,这催生了弹性的IT资源需求。最后,目前的GPU等芯片都是很贵的,采购这些芯片以后如果利用率不高,就会造成很大的浪费。
另外就是是技术发展过快,开发软件已经变得相对简单,而开发过程,集成部署过程,运维过程变得越来越复杂和麻烦,因为经过互联网,移动互联网,我们的软件变得越来越复杂,不仅仅是写业务逻辑了,体量(数据量和流量)上来以后,更多时候是关注监控,日志,安全,高可用,分布式,弹性伸缩,降级限流熔断,数据处理工具等等,这些都是在管理软件本身,而不是开发业务软件系统。程序员不仅要写业务逻辑,还要懂分布式高可用,做好监控日志,服务降级兜底等,这一套东西就得耗费很多人力物力了。而这一套东西都是可以抽象出来做成工具和平台放到云上面,你只需要花钱,就可以自动部署一套,非常方便。
最后就是计算基础设施下层,不仅仅是移动互联网能够享用的红利技术,未来随着5G和物联网的到来(保守估计应该是3到5年左右,实际可能更快),传统行业,比如制造业,都可以直接方便的使用这些轮子,而不是自己从头再来一遍,因此为什么大家都说产业互联网开始了,云恰好就可以快速帮助下一代企业快速交付IT资源和工具。而且还有更多经过互联网更新迭代沉淀下来的中间件数据库等等,这些可以大大降低传统企业数字化转型的成本。
云计算在这个背景下开始显示出它的价值,他能够满足企业弹性的IT资源需求,同时能够把计算能力共享给全社会。目前以亚马逊AWS,微软Azure(真的佩服微软,能够在错失移动端的时候又成功挽回了云计算市场),谷歌云,阿里云为首,领跑全球云计算。云计算就像现在的电力基础设施一样,最终会变成基础设施服务,从最底层IaaS的集群资源管理和调度,资源利用率优化,中层PaaS中间件服务,在到上层SaaS的AI服务Serverless服务,都会做到随用随取,按量计费。以前大家各自建机房IDC,买服务器,自己维护,这样资源之间相互孤立,且维护成本大,现在所有中小企业上云,由几个公有云巨头来买服务器和维护这些社会公共资源,这样不仅能够减低中小企业的维护成本,而且还真的能实现社会资源的共享。
未来随着机器学习算法的成熟稳定和5G的普及,IoT就成为现实,各种智能场景,比如无人驾驶,智能家居,智能小区,智能公园都是需要计算资源的,特别是以深度学习为首的,对GPU,FGPA,TPU等重度依赖的应用,这些场景下,计算量非常大,云是否能够撑得住还说不定,因此大家提出了云+端的协同计算模式,其实就是有些延迟敏感的场景,比如无人驾驶,你不能说我的图像数据先通过网络上传到云,在云上算完再传回来结果,从而让汽车做决策,可能由于延迟,等决策发过来的时候乘客已经一命呜呼了。显然这部分计算还是得放到汽车上面,也就是端计算,为汽车搭载GPU等芯片,当然训练模型的时候用到的大量算力,还是得在云计算中心来做。但是对于有些智能应用,比如智能锁,延迟可以忍受,就可以完全使用云来计算,在智能门锁上搭载GPU可能就是小题大做了,成本也高,浪费资源。而对于计算资源有需求的个人和中小企业,比如想使用GPU但是预算不足,可以直接使用云的计算能力,用多少资源,出多少钱,目前,云服务在2B2G业务已经是大势所趋了,中小企业购买和使用服务器集群很容易。但是对于2C业务,总体来说还不能提供像用电一样的使用场景给个人消费者,我目前能够想到的就是,很多设备不要钱免费使用,但是这些设备上提供的服务是需要云资源的,这样用户打开这个设备使用服务,他用了多少云资源就得付多少钱,就像家用电器一样,用多少电就得付多少电费。
另外,在美剧硅谷中,主角发明了一种突破极限的高效压缩算法,描述了一种Anywhere As Storage的场景,就是借住IoT设备的多余存储空间,将数据以P2P的形式存储在各种物联网设备上,而不是Cloud As Storage的中心化存储,前者基于P2P和区块链,可以达到去中心化的数据共享和隐私保护的目的,后者则是集中式的数据共享,但是后者可以依托云的强大计算能力,我想未来两者会共存吧,可能是数据经过用户授权交给云来计算,算完以后云不拥有数据的存储权,数据还是存储在原来的地方以保护用户隐私,这些事情已经有企业在做了,不过感觉这东西的阻力不在技术,而在于政府和企业。因为现在的互联网用户,实际上是没有隐私可言的,其实你这个人在互联网上干了什么,一丝不挂全部都能看到的。企业不可能说不拿这一部分数据,这等于割了他的现金流,所以我对于区块链保护隐私持悲观态度。当然,隐私没法保护,至少得安全啊,别泄露出去就行,所以围绕安全的区块链还是有价值的。
未来,量子计算机的普及,考虑到庞大的数据中心用电和制冷的能源消耗很大,计算需求是不是又会从云迁移到端,这样来分散数据中心的能源消耗,人类是否又会再一次出现能源革命。在这种周而复始的计算迁移旅程中,云+端(边缘)计算作为当前阶段的主角,是一次机遇。而连接两者的就是5G,要说云计算大数据人工智能(目前人工智能其实是炒作,就像任正非说的,统计学而已,真正大众意义上的人工智能,我认为没有脑科学等生物科学一起,实现起来还早呢,当然机器学习做减少人工和自动化的事情,这的确是事实,而且远超人类能力),这些其实还算不上什么技术变革,真正可以载入史册的技术是5G,看了下5G的速度,确实恐怖。所以,非常佩服华为,名族骄傲确实名副其实。
本篇主要讲述云计算的概念是如何慢慢形成,自己对于云和边缘计算的一些理解,以及对未来的一些展望和猜测,对于具体云计算到底是什么,平时有很多朋友问过,所以也想写一下,涉及到技术方面的知识,窃听下回分解(下篇主要针对技术人员),另外,笔者也只是云计算从业者,对历史感兴趣才想写这个系列,不免有错误和疏漏,对于文中错误请大家直接指正,也希望向大佬学习。
关键技术时间线
1974年,Popek和Goldberg发表了论文《Formal Requirements for Virtualizable Third Generation Architectures》,提出了虚拟化准备的充分条件,指出满足条件的控制程序可以被称为虚拟机监视器Virtual Machine Monitor (VMM):(1)一致性:一个运行于虚拟机上的程序,其行为应当与直接运行于物理机上的行为基本一致,只允许有细微的差异如系统时间方面;(2)可控性:VMM对系统资源有完全的控制能力和管理权限;(3)高效性:绝大部分的虚拟机指令应当由硬件直接执行而无需VMM的参与。
1978年,IBM获得了独立磁盘冗余阵列(Redundant Arrays of Independent Disks,RAID)概念的专利。该专利将物理设备组合为池,然后从池中切出一组逻辑单元号(Logical Unit Number,LUN)并将其提供给主机使用。虽然该技术直到1988年IBM才与加利福尼亚州立大学伯克利分校联合开发了第一个实用版本,但该专利第1次将虚拟化技术引入存储之中。
1991年,伯纳斯-李发明了万维网,开启了网上冲浪的浪潮。
2003 年谷歌发表三篇论文,史称三驾马车,也就是GFS、MapReduce、BigTable,开创性的通过大量廉价服务器进行分布式存储和计算的方法,后续Yahoo照着这三篇论文实现了Hadoop1.0, 成为大数据领域的不老神话。
2006年10月,以色列的创业公司Qumranet在完成了虚拟化Hypervisor基本功能、动态迁移以及主要的性能优化之后,正式对外宣布了KVM的诞生。同年10月,KVM模块的源代码被正式接纳进入Linux Kernel,成为内核源代码的一部分,Linux下的虚拟机技术也诞生了。
2008年,LXC(Linux Container)容器发布,一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。LXC是Docker最初使用的具体内核功能实现。这又为Linux在云计算时代添加了一个利器。事实上Container使用的技术也是最早由Google的工程师给Linux内核做的贡献。
上一篇:什么是云存储,云计算,云服务?
下一篇:“中台”到底是什么?