我希望能有这样一台计算机:运算能力可大可小,存储空间也可大可小,我需要多少就配多少,只需要通过参数配置就达到计算机系统的升级和降级。其实云计算就是要提供给每个网络用户这样的一种逻辑上的计算机。
我前面的博文已经讲了云计算的一些概念和我的理解,其实我觉得要把握为什么会有云计算,只要把握住两个地方,一是资本的逐利性,二是充分资源共享。资本的逐利性是云计算的根本动力,降低成本,提高效率,实现利润最大化是其根本目标,而资源充分共享是云计算的达到这个目标的根本手段,这是由资源的最根本特性--稀缺性决定的,如果某个资源是非常充足,比如空气,除非用特殊手段控制或者武力逼迫人们去购买,否则是没有人愿意去花钱的,也没有这个必要。云计算就是要通过资源充分共享来为用户提供随需应变的计算服务,什么叫随需应变呢?简单的讲就是我要500M的空间,就分配500M,我要10个并发用户的性能,1000个并发的性能只要付钱购买,通过一些简单的参数就可以达到,而不需要进行硬件上的扩充和升级(这些由云计算厂商完成),也不需要暂停服务,很方便,很理想吧。
那么要达到这个目标,该如何来做呢?
我们知道计算机系统模型可以简化为5个部分:输入,输出,计算,网络和存储。我们逐一来分析一下这些部分如何满足云计算下的要求:
首先是输入和输出,为了简化讨论,我们只讨论交互中的输入和输出,因为其它形式的输入和输出,一方面可以归于数据存储部分,一方面也不会对云计算有很大的影响(云计算不属于实时控制系统)。交互中的输入输出其实就是我们常说的客户端,由于客户端都是与用户直接关联的,其共享度很差,也无法高度共享,因此这部分对云计算没有产生特别的需求,与传统的计算没什么特别的地方。由于云计算系统大部分的计算都是在服务端,因此客户端的要求不是很高,这也是云计算可以减少成本的主要原因之一。
其次,网络是计算机系统各个部分间的纽带,要充分实现资源的共享,网络的带宽和质量就是非常关键的,也是能实现云计算架构的关键所在。云计算这种思想其实并不是什么特别创新的思想,云计算之所以能在当下兴起,与网络等硬件的飞速发展是密切不可分的。计算机网络的高速发展是计算机系统能够分布架构的关键。由于带宽和速度都在增加,因此网络这部分不再是云计算发展的一个障碍。相反,网络的快速发展为云计算的发展奠定了基本的条件。虽然云计算中,网络的地位很重要,但由于网络本身只是一个通道,其共享模型也非常成熟,因此相对来说比较容易满足云计算的需要。从技术上来说,网络编程技术在云计算下就是非常重要而基础的技术。
第三,对于云计算而言,要达到随需应变的目标,前面三个部分由于本身所处的位置,相对比较容易,真正的瓶颈在于计算和数据存储这两个部分。我们知道,传统的计算系统,增加计算能力或者是存储能力无非就两条途径,一是增加设备数量,二是提高设备本身的能力。其实在云计算下,这两种扩大能力的方式依然有效,只是云计算的关注点不再是这种简单能力扩充模式,而是关注在如何充分共享这些资源上。
云计算要解决的是企业对计算(包括存储)能力的弹性需求与企业计算系统建设的相对固定之间的矛盾,这体现在三个方面,一是普遍存在投入过多而浪费,投入过少而不足的情况;二是为了安全可靠,往往很多计算设备需要备份,而传统的备份模式本身就是一种浪费;三是计算系统的建设本身需要时间,在应对企业计算能力的需求变化时有很大的迟滞性。要解决这些问题,一个可行的方式就是将计算(存储)资源集中,大家共享这些资源,虽然从单个企业来说需求在变化,但整体上,所有企业的需求变化却相对固定(大家都同时处在需求高峰或低谷的可能性还是很小的),计算(存储)资源的浪费就会得到遏制。由于是资源集中式管理,计算能力的变化需求是针对平台上所有的企业,因此这种需求变化会相对稳定,而且就是扩充也相对比较容易。这也是云计算能够达到随需应变的根本原因。其实在人们的生产活动中,使用这种方式来解决资源使用成本的地方非常普遍,大部分租赁性行业都带有这种性质。因此来讲,云计算的思想并不是什么很高深的东西,它只是人们在解决这种资源需求矛盾的方法在计算机领域的一种应用。
云计算通过集中资源,充分共享来解决上述的矛盾。但真正实现起来,并不是单纯的集中资源,相互共享就可以了,是需要很多技术来保证的。因为资源是共享的,那么安全性,共享冲突,性能,可靠,隔离等方面的要求会比较高。后面的博文我将主要从计算和存储两个部分来看看云计算是如何通过技术的手段来保证这些特性的。