行业动态 >>

文章详情

容器与虚拟化

2015-12-11

容器最近在开源社区和互联网领域火的不得了,但似乎在企业领域不温不火,很多人惊呼容器要革虚拟化的命了,搞了很多年虚拟化和云计算的人更是不明觉厉,这还怎么搞,拼命搞了这么多年的虚拟化,结果一夜之间又出现了容器技术,真是要命啊。老实说,云计算真的不是人搞的,在这个领域,几乎每年甚至半年都会新冒出一些新的技术,比如大数据(最早也是云的范畴)火起来直接就把云计算甩开了,现在搞云的都不好意思说自己懂大数据了,SDN、NFV、SDS、OpenStack已经够把人搞死了,现在容器出来了,而且听说要颠覆虚拟化,这种颠覆带来的不仅仅是技术的颠覆,产业也要颠覆,不论是现在的大数据,还是SDN、NFV、SDS、OpenStack都要重新考虑自己未来的发展了,因为所有这些技术的基础都与虚拟化脱不了干系,而容器如果未来替代虚拟化,那么就相当于整个云计算大厦都要推倒重新打地基了。

1.jpg


如果仔细看看Google的发展历史,就会发现Google很长时间内根本就不屌虚拟化的,Google之所以现在成为容器领域的大佬,就是因为它一开始所有的应用部署和运行其实技术上就是基于容器的。当然这也是Google有很长时间内根本就不搞IaaS,一做云计算就直接提供PaaS(appEngine)的原因,直到AWS风声鹤起,它才发现原来这个世界不是都玩互联网的,好多企业还是更喜欢用虚拟化,然后它才后知后觉开始进入虚拟化领域,也开始提供虚机(cloudEngine)。

当然,Google作为互联网大佬,不仅虚拟化没赶上,容器的风头也被一家小公司(Docker)盖过,好在Google这一次不算迟钝,最近向业界贡献了其立命之本—容器集群的调度管理技术并开源(Kubernetes),准备在容器领域大干一场,不过AWS也并没有睡着,它干脆就直接向用户提供了容器服务(container Services),微软更是积极了,连windows都要支持Docker了。

大风已经吹起来了,大佬们都行动了,云计算领域似乎又要有一场血雨腥风了,这一次甚至连Verizon等电信老大们也不消停了,也开始大力忽悠容器了,也就是因为Verizon加入容器阵营,所以国内的运营商也睡不着了,开始关注容器技术了。

今天我们就来掰一掰容器和虚拟化(Hypervisor)这两个未来可能势不两立的技术。
我们先简单说说,为什么Google不用虚拟化而用容器来承载其业务简单的说就是Google是互联网领域的技术大佬,它不仅仅追求业务的精益求精,而且也一直追求各种榨干硬件潜力的技术。目前业界(互联网)数据中心平均PUE值一般还在1.5(1/3能耗浪费掉了),Google数据中心PUE很长时间以前就是1.2以下的(只有20%是浪费掉了),Facebook最新的数据甚至达到1.01(这是炸掉天的数值,相当于只有1%被损耗掉)。

所以Google在成本的节约上是绝对不含糊的,从这一点上Google看不上虚拟化是正常的,因为虚拟化不仅仅有性能损耗,而且在硬件的利用上也远远不如容器。

但是,是不是其他人眼都瞎了,不用容器用虚拟化? 当然不是,容器虽好,也得看谁在用,还有用在什么地方?Google是一家纯粹的互联网公司,它的核心业务是搜索和各种分布式应用,典型的需要大规模、分布式部署的,而且可以做到在每个节点上运行的是一个无状态的现在比较流行说法的“微服务”,别人很难学过来。

而大部分传统企业以及创业公司,并没有这样的业务模型,他们就是要“机器”,能运行数据库、能运行Web服务器,或者能承载运营一套应用软件,所以根本就发挥不了容器的真谛。

况且,Google搞了十几年的技术它一直捂着,没有透露任何技术给外界。大家回想一下,当初如果不是Google把自己独门秘籍的分布式处理技术以几篇论文的方式让外界一窥其豹,也不会有几个牛人基于这些论文的思想和原理,硬是用Java实现了一遍,也不会有后来的Hadoop,大数据的发展估计也不会那么快,就想邓小平说的“如果不是他老人家,中国还会在黑暗中多摸索几十年”,Google是又牛又贱的家伙,Docker(原来叫dotCloud,也是PaaS出身的,PaaS做不下去了,卖掉了才捡起Docker这个副产品)这个差点破产的公司鼓捣出的Docker技术逼得Google不得不开放。

好了,扯了这么多背景,原归正传,说说容器和虚拟化到底孰是孰非。如果不考虑技术实现细节,举个例子说明一下物理机、虚机和容器的关系。
如果我们把物理机比喻成一条货船,那么虚机就是货船上的集装箱。没有集装箱之前,大家的货不好放在一起运(安全也好、转运便利性也好,总之就是不方便),有了集装箱一条大型货船上就可以放上很多集装箱,不同的集装箱可以放不同的货物,甚至来自不同公司的货物,通过集装箱很容易标识,大家也互相隔离的很好,货船的利用率和效率都提高了很多。但大家发现,一个集装箱还是太大,小公司没那么多货物可以装一个集装箱,那只能跟别人的一起装,也不方便,因此就有微型集装箱,容器就相当于微型集装箱,在一个货船上可以承载更多的微型集装箱,空间利用率会更好,同时每个客户的货物也可以互相隔离开,运送效率更高。这个例子可能不一定非常准确,但基本上能够说明容器与虚机的关系。

那么,容器和虚拟化到底有啥区别,这里跟大家说说我的看法:
1根本的区别,一个是完整os系统,一个是Linux的特定进程。容器的隔离度大于os进程小于虚拟化(有独立的进程空间和资源控制机制)。在效率和资源共享性方面:线程>进程>容器>虚拟化>物理机,而安全隔离性:反过来。所以容器比虚拟化技术上效率更高,但安全隔离性较低。一般容器的启动速度是秒内的(也就比进程慢点,大家平时打开一个大一点应用的速度,就差不多是容器启动的速度)
2容器玩家目前主要是互联网和一些技术型公司,应用特点适合采用容器技术和开发能力强,IT和CT领域总体上还是参与和跟踪。虚拟化则几乎所有角色都已参与,商业化竞争充分,开源日益成熟,用户接受度高,案例和解决方案非常丰富,各种坑已经踩过。
3主流容器技术(Docker、rkt)都是开源的,开源有开源的好处,但目前还没有可规模部署的商业化产品和成熟玩家,生态系统看似很庞大,但主导的都是互联网主流公司,因此要真正用起来比起虚拟化需要对应用实现和部署非常熟悉,这个没被逼到份上对企业客户是很难的,所以短时间内还很难在企业市场火起来。
4容器除了安全隔离性有待完善外、对企业关心的稳定性、HA、网络能力和存储方面也有不足,说白了就是玩家都是能自己倒腾的,出问题了自己搞定,网络也有开源方案,自己部署,但对于企业客户来说这些都是头疼的核心问题。
5应用场景方面,那种可规模化scale out、弹性要求非常高的业务更需要容器(例如小米新品发布、双十一、高考查分系统、春节红包系统和微信、特定事件微博)等,当然技术上说,容器也可以承载各种业务平台,但在容器完全成熟前,没人欠抽去做这个事。
6大型的传统企业业务并不适合,特别是存量业务,已经虚拟化云化了,容器的优势发挥不出来(比虚拟化更快速的扩展性,比虚拟化更方便的伸缩、更快捷的升级、更好的资源利用率等)
总之吧,容器很美,但那是别人家的。容器的发展趋势当然也必然要逐步替代掉一部分虚机(现在好多人在虚机上玩容器了,虚机有隔离,容器有效率,完美结合。呵呵真是闲着的),但要真正玩好容器(包括容器的管理技术,例如Mesos、Kubernetes、Docker Swarm等),还是乖乖地练好内功,真正有一帮人玩转了,一定要是代码级的,然后哪?还不一定好使,除非业务和应用是自己开发,如果是第三方,还得第三方也会玩容器。所以要玩就玩真的,不要整天喊容器要翻天了,其实吧,翻天是早晚的,但不会翻到你这里来,运营商很长时间内虚拟化都够玩了,玩完了也轮不到容器,呵呵,有点悲观了,大家仅供参考。