Saturday, May 21, 2011

“拨云探月”——云计算话题浅析(二)


在上篇文章中,我们分析了云计算出现的原因和必然性,相信可以帮助大家更好的理解和把握云计算的定位。在本次IT的泡沫即将破灭之际,必然要有大批没有质量的企业和产业被淘汰掉,遴选的唯一原则还是我们根本所说的“生产力原则”。因此,真正掌握云计算核心技术的企业是肯定可以存活下来的,也只有这批新型的企业模式,才会让IT产业更加蓬勃和高效。本篇文章中我们将探讨涉及到云计算/数据中心的几个核心技术问题,并展望下云计算的未来发展。

虚拟化

虚拟化的概念从有了计算机,甚至在计算机发明之前就已经被广泛的应用。但从来没有过一个时代像云计算时代一样,使得虚拟化变得如此重要。要理解虚拟化对云计算为何如此重要,首先就要深刻把握虚拟化的内涵。
什么是虚拟化?表面看来似乎很容易理解,但要下个准确的定义却不是那么简单。网上随便一搜,说法众说纷纭。Wikipedia上说虚拟化是“一個表現邏輯群組或電腦資源的子集的進程”,百度百科上说“虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。”大大小小的技术论坛上也是瞄准添加一层新的抽象层的角度来进行描述,简而言之就是重新抽象。
应该说这些说法都多多少少的描述了虚拟化要做的事情或者相关的技术手段,但并没有涉及到虚拟化的本质所在。以最常见的主机虚拟化为例,一台硬件机器放在那里,怎么让它能跑多个程序甚至是多个操作系统?很自然的我们采取的手段是创建一个新的虚拟层,在此新层上运行多个程序/系统,并让它们感觉不到其他个体的存在。这个过程就典型采用了虚拟化的手段,但我们不能把这个手段就当做虚拟化。
我曾思考这个问题数年,却一直无法用语言具体描述那种玄妙的体会,直到有一天看到下面的文字,突然如醍醐灌顶。
“道可道,非常道。
名可名,非常名。
无,名天地之始,有,名万物之母。”
这是《道德经》第一章一开头的文字,相信不少人如我都曾读过,却从来没把它跟云计算联系起来。这一段说了两件事情,第一件事情是“道”,这是根本,是宇宙产生的本源依赖;第二件事情是“名”,是万物变化的初始动力。
何为“名”?
为何一棵树要被定义为一棵树?
为何一块石头要被定义为一块石头?
在为万物起名之前,万物早已存在;为万物起名之后,万物并没有变化。变化的是我们,是命名者。就如同硬件的机器一样,造好后摆放在那里,你让它被解释为一台机器,那么就可以做一台机器做的事情;你让它被解释为多台机器(对程序或系统而言),那么它就能同时运行多个实例。
“名”,或者说解释,才是虚拟化的本质所在。
从这个角度,我们重新来看待虚拟化和云计算的关系。在上一篇中提到,现代可扩展的数据中心主要通过糅合大量不可靠的廉价节点来构造一朵具备强大计算能力并可靠的云。从本质上说正是一个“名”的问题,或者说虚拟化的问题。我们要把普普通通的不同类型的硬件机器解释为统一的数据中心!
因此,这里面就涉及到大量的虚拟化相关的技术问题。包括性能、扩展、管理、可靠性。值得庆幸的是,虚拟化技术这些年来一直在飞速发展(大量的软件虚拟化要容易的多),并未对云计算的需求形成显著瓶颈。

交换

虚拟化虽是云计算发展的基础技术,但因为应用场景十分类似,并未形成瓶颈。而另外一项根本技术——交换则不然。
我们知道,现代的Internet实际上是运行在以太网及少量其他类型网络基础上的。别看Internet规模庞大,构造的原理却十分简单——利用交换节点把主机连接起来。
一般来说,我们可以很轻松的通过二层交换机连接本地网络,然后多个交换机再互联形成一个不小的局域网,利用二层交换机构建的局域网可以运行的十分稳定,似乎是个不错的解决方案。但当要扩展出去的时候,就有了新的问题。
我们知道,交换机之所以能实现交换,是因为它记住了每个端口上的机器mac,或者说它知道谁在哪里。而主机位置可能会发变化,例如从一个端口变到另一个端口,这个时候交换机就需要有机制来不断的更新它的内部记录,以随时跟踪最新的机器位置信息。当需要完成交换的主机数目增多的时候,不仅硬件上的端口不够用,内部的位置信息维护也成了大问题。不光维护大量的位置数据无法实现快速的查找。当机器位置更新频繁的时候,大量的arp相关报文将使交换机疲于应付。
为了解决这个问题,人们在二层以上新定义了IP层,试图利用IP地址的聚合来降低这些代价(当然,IP层的意义远不仅于此)。这也就是路由的由来。传统的交换机无法完成三层的交换(现代交换机很多都支持三层交换,但都是小规模),而路由器则可以通过维护庞大的IP段表来实现不同本地网络之间的流量传输。但相比交换机而言,路由器无法很快的更新位置信息。一次路由错误可能会导致网络几分钟甚至到几个小时无法work。
总结一下,二层交换能较快的跟踪位置信息,但无法处理大规模网络;三层的路由则相反。
对于目前的互联网来说,二层和三层交换的紧密配合,能够很好的处理目前的情况。毕竟,我们从一个地区转移到另一个地区,总是默认要重新连接,并不需要保持工作的连续。而到了现代的数据中心,问题便浮现出来了。
由于我们有大量的互联网的设计经验,很自然的,在设计现代数据中心的时候借鉴了类似的结构。这使得现代的数据中心从某种意义上来说其实是一个小型的Internet,只是真正的Internet并不属于某一家企业来统一管理而已。从Internet到数据中心,计算的个体从个人主机变成了虚拟机,同时由于业务连续的需要,移动性的需求变得敏感起来。即在虚拟机的迁移过程中,我们希望能保持它提供服务的连续。在二层网络中这不是问题,二层交换机能很好的跟踪位置信息,但是到了大规模的数据中心,我们不得不采用类似三层交换的机制,这就使得位置的跟踪与规模的扩展之间的矛盾凸现出来。
所有炒数据中心的交换设备,都躲不开这个问题。这一问题在传统的交换架构下其实并没有太好的解决思路,所以必须要改革。学术界以VL2为代表的一系列解决方案,都是试图将位置信息与名称信息(IP信息等)剥离开来,绕过矛盾。
其实,位置与名称信息的剥离,在数年前研究Internet的时候就提过相关思想,但因为应用并不多见不为人所关注,但到了数据中心就成了首要解决的问题。
另外一个问题,也是传统交换机制在新挑战下被发现的,即多路径的问题。简而言之,传统的交换机架构是不允许成环的,通用的生成树协议会自动维护唯一的两点之间的路径。带来的好处是可以避免复杂的交换管理,问题是浪费了可能存在的路径。
在互联网时代,我们可以容忍点到点吞吐量不满载,可以通过冗余链路来实现高可靠的冗余。但到了数据中心时代,首要的需求是交换性能,为了实现性能和可靠性,我们恨不得充分利用每一条链路。这种情况下,就不得不舍弃生成树,重新设计更为复杂的交换机制。这一问题也给现代交换设备生产商带来了新的挑战。
无论是Cisco的Nexus/FabricPath Jawbreaker,还是Juniper的QFabric,都为了数据中心带来了新的技术思想和解决方案,但都有其存在的问题。目前产业界,还远没有一种完善的方案能力压群雄,成为事实的标准。这也使数据中心这块大蛋糕之争,充满了不确定的迷雾。

其他问题

其实,由于现代数据中心结构与Internet的相似性,原先很多的问题,在数据中心的应用环境中仍然存在。例如安全问题、能耗问题、灾备恢复等。
因为数据中心的管理单一化、结构化,安全问题主要面临是外部的攻击和内部的数据管理。虽然看似简单的,但安全性的需求更高了,因为一旦出现问题,带来的损失将是惊人的。亚马逊因为一个小的配置错误导致部分机器宕机就是一个鲜活的例子。
能耗问题这些年颇为火,除了环保主义者的吹捧外,也是实实在在的利益相关。几十万台机器和交换设备每天烧掉的电费也是个惊人的数字。因此,如何实现绿色型数据中心是实在之谈,而非哗众取宠。以谷歌、Facebook等IT巨头的设计为例,主要采取的方法包括动态调整负载以关闭部分节点,减少冷却成本、采用低耗硬件等思路。
灾备恢复始终是系统设计的重要指标。网络结构的复杂化,使得配置和管理成为不可能的任务。而在数据中心中,由于拓扑固定、管理同质,使得管理任务大为简化。但人始终不能胜任对故障的及时处理。一旦出现故障,如何及时的甚至零损失的恢复,现代数据中心并没有很好的解决思路,这将依赖于网络管理技术和设计上的进一步发展。

发展趋势

从目前的情况来看,数据中心的发展是必然,同时,由于技术的发展,未来的数据中心预计将出现如下几个趋势。
规模进一步增大。现在的数据中心往往有几十万节点的规模,但在未来这一规模将更加庞大。但规模的增加不意味着体积等的增加,不意味着数据中心数量的增加。
能效进一步提高。无论是从硬件的发展还是架构的设计上,能效都将成为重中之重。
管理进一步简单。交换技术的发展将提出新型的数据中心交换设备,使得交换节点在整个数据中心中的比例下降,同时,交换设备的智能化得到提高,少数管理员将能轻松管理大规模的数据中心。
性能必然提高。无论是数据中心群的被提出,还是根本技术的改变,例如采用光数据中心,新的存储方式等,都会使得数据中心的性能得到进一步提高。甚至在不远的未来,可能云计算真的就变成了“智”计算——由远在云端演变成时时刻刻、随时随地,由用户可感知演变成融入生活、无处不在。

No comments:

Post a Comment