闲话云计算(一) 云计算发展史

说到云计算历史,很多人脑海里第一个弹出的词就是AWS(Amazon Web Service,亚马逊推出的云计算服务)。的确,AWS是目前为止商业上最成功的云计算公司,也是业界的一个标杆,以至于很多IT业内人士提起亚马逊,首先冒出的概念就是这是一家云计算公司,但却忘了亚马逊的老本行是电子商务。在亚马逊的身后,另外一家巨头公司虽然在云计算商业上没有亚马逊成功,但却通过独特的技术和理念深刻的改变了云计算产业和技术的格局,这家公司就是谷歌(Google)。

从一开始,亚马逊和谷歌在云计算方面就走了两条不同的路。亚马逊云服务于2006年推出,最初提供的服务主要是EC2(云主机)、S3(对象存储)、EIP(弹性IP)、RDS(关系数据库)等纯IaaS层面的产品服务。即使后来的产品线愈加丰富,但是主流产品的基石仍然是围绕EC2,也就是虚拟机,至今EC2仍然是亚马逊云计算最赚钱的产品。相比亚马逊,谷歌的云计算技术并不落后,某种程度上甚至可以说更加先进,但是他的云计算商业化之路要落后亚马逊很多。这和谷歌的理念有很大关系,谷歌的云计算更多的是作为内部的基础设施,为谷歌的业务部门服务,即使对公众开放,推广力度也并不大。这从最早两年的主要目标客户是大学和研究机构就可以看出。2018年有一个很著名的事件是谷歌退出了美国国防部的云计算采购招标项目,理由居然是谷歌秉持的“不做恶”理念,谷歌认为参与国防项目和公司的价值观不符,当然可能还有一点是谷歌不差钱,看不上云计算这点收入。

随着亚马逊在云计算商业上的成功,一大票IT巨头公司杀入了云计算市场。微软于2010年发布云服务,并于2013年开始在Azure上支持IaaS服务。IBM于2013年通过收购当时云计算收入排名第2的Softlayer进入云计算领域。Oracle稍晚一些,于2015年才开始推进云计算战略。这些巨头公司的云计算业务很难说非常成功,因为云计算的利润被亚马逊压的很低,并且和他们的传统业务产生了冲突,并没有在商业上带来突破性的进展。亚马逊的商业成功也带动了中国的互联网公司对云计算的投入,阿里云、腾讯云、华为云等在中国市场逐渐成长起来,并开始向海外探索。

除了传统的IT巨头,中小型的IT公司也把目光投向云计算这片热土。这些公司没有巨头公司那样的投入能力,所以希望通过开源社区的方式来集合更多力量,和亚马逊等巨头抗衡,CloudStack、OpenStack等项目应运而生。这些项目一开始的目标就是对标亚马逊,后来又因为需要去满足各个参与厂商的需求,偏离了最初始的目标,最后折衷的结果是公有云能力上距离亚马逊越来越远,私有云能力上也没有突出的特色能力。

和亚马逊相比,谷歌在云计算方面始终保持一个清高的姿态,并没有去刻意追求商业上的成功。谷歌在云计算基础技术上另辟蹊径,走上了一条与众不同的道路。谷歌认为虚拟机还是太沉重、不利于资源使用效率提升和快速调度,于是自研了一套基于容器的调度管理系统Borg,调度的目标是进程(没错就是进程,一个容器本质上还是一个操作系统的进程)。使用进程作为调度对象,最大的问题是进程可以使用的计算资源无法限制,比如一个进程占用了太多CPU资源,其它进程就会受到影响。为了解决这个问题,谷歌开发了Linux Cgroup技术,并推动该技术进入Linux Kernel,这也成为了后来容器技术的基础之一。Borg在容器的基础上,引入了Alloc(Pod)、Service、Label的概念和技术实现,成为了谷歌内部的云计算基础设施。感谢谷歌,于2014开源了Borg,并将其命名为Kubernetes,从此掀起了波澜壮阔的容器云和PaaS时代。Kubernetes在出现初期,虽然背靠谷歌,但是并没有赢得绝对的优势,只是后来和Docker结合起来,才逐渐建立起不可动摇的地位。

在Kubernetes出现以前,容器的优势已经被很多人发现。那个时候云计算设计人员希望找到一种技术,可以很快地提供应用开发和部署所需的基础软件资源,并能提供应用打包能力和服务间调用管理能力。这个技术被命名为PaaS。基于虚拟机的资源供给方式仍然被认为效率太低,因为在部署虚拟机之外还需要额外安装应用所需的软件,即使把软件打到虚拟机镜像里,所需要的时间也是分钟级别,更别提在不通环境间迁移虚拟机镜像的难度。而容器的轻量级能够很好的满足需求,易于打包、迁移和部署。这个时代的PaaS代表技术有CloudFoundry和Mesos。IBM曾经重金投入CloudFoundry打造了Bluemix,EMC也收购了CloudFoundry的创始公司Pivotal。这些投入最后证明都没有那么成功,最大的问题是这些系统没有像Kubernetes那样,在开源之前,已经在谷歌的数据中心运行并持续优化了超过10年的时间,使得Kubernetes在诞生之初就已经有了很高的起点。

提到PaaS,就不能不提到另外一个开源产品Docker。Docker自2013年发布开始,就带动了容器技术的热度。其实在Docker之前,已经有LXC(Linux Container),但是LXC更多地是侧重在容器运行环境的资源隔离和限制(类似于一个进程沙箱),而没有涉及容器镜像打包技术,这使得LXC并没有得到普及。Docker在LXC的基础上更进一步,规范并建设了一套镜像打包和运行机制,将应用程序和其所依赖的文件打包到同一个镜像文件中,从而使其在转移到任何运行Docker的机器中时都可以运行,并能保证在任何机器中该应用程序执行的环境都是一样的。Docker所提出的“Build, Ship and Run”的概念迅速得到了认可,Docker也逐渐成为容器技术的领导者,甚至让很多人误认为容器就是Docker。随着Kubernetes的成熟,以及和Docker的融合,PaaS技术的主流路线逐渐过渡到Kubernetes+Docker,并于2018年左右开始占据统治地位。

猜你喜欢

转载自blog.csdn.net/zhangli_perdue/article/details/85336844
今日推荐