代码改变世界

我眼中的云--云就是网络,就是计算机

2011-10-21 20:03  java线程例子  阅读(225)  评论(0编辑  收藏  举报

按照冯.诺依曼的计算机体系架构,计算机包括输入,输出,存储,计算和控制五个部分,虽然到现在,计算机已经发展非常完善,但在体系结构方面,还是没有超出冯.诺依曼的这种结构体系,至少,我们依然可以用这种体系思想去思考计算机,而不管他是并行的,还是串行的,是复杂指令的,还是简单指令的等等。这个体系架构也非常符合我们人类生产活动的本质步骤和内容(认知,处理(含控制),保存,应用)。比如工厂,输入的是原材料,输出的是产成品,中间是加工和控制,当然我们还有原材料和产成品的存储--仓库;再比如我们典型的软件系统,也同样包括输入(用户录入,数据采集),输出(用户显示,存储系统),计算与控制(应用服务器),存储(文件系统或者数据库等)。如果我们在这个基础在再总结一下,把运算与控制合并成一项,就叫处理,增加一个各个组成部分之间进行联系的通信与控制纽带--网络,那么就构成如下的结构:输入,处理,输出,存储和网络,如下图所示:

现在我们来回答计算机在干什么:收集数据,处理数据,输出数据,保存数据,而这之间的控制与通信依赖于网络。其实上面的抽象还有一个作用,就是一台机器如此,那么对于一个集群应用网络而言,其实也如此,我们总可以将网络中的资源如此划分,这样做的好处其实就是设计模式中合成模式的好处,无论网络多大,规模多复杂,我们总可以一致表达和处理,比如对于存储硬件而言,你是用一台计算机做存储设备,还是用多台,你的作用都是完成存储,对于软件一样,你是用数据库做存储,还是用文件来存储,你的作用同样是完成存储。对于网络是这样,对于一个应用系统也是如此(软件和硬件本来就是对立与统一的)。这种处理和思维方式,就是我们研究复杂系统的利器,比如ERP中的BOM结构,有的工厂的BOM很复杂,有的工厂的BOM结构很简单,但无论 BOM结构多复杂,是两层,还是三层,四层...无数层,无论你的子件只有一个还是有成千上万个,我们都可以用一棵树(某些情况下还会有一颗倒树)来一致表达和处理。

回答了计算机在做什么,其实也就回答了网络在做什么。那这个东西与云有关吗?当然有,这其实也是云计算的基本体系结构,计算机在做什么,云也在做什么。无论怎么变化,我们总可以用这种架构一致的对待它。有的人会说,有的情况下可能缺这缺那,但这不是问题,我们总可以认为它虚拟的存在。为了这种一致表达和处理(合成模式的核心思想),我们既可以利用抽象来抽枝剥茧,也同样可以无中生有来补项(本来没有某种特征,但我们可以认为或者虚拟的认为具有这种特征),来取得一定形式上的统一。这其实就是数学变换中的补项思想。

从这种一致化的思想,其实我们就可以将云看做是网络,看做是计算机,因为从本质上来讲,没有什么区别。区别的是分工的细化和专业化,比如原来存储只是计算机的一个部分,现在有专门的计算机来完成这部分功能;而防火墙之类的也可以看着是一种处理器专业化的发展结果。而对于云应用软件,你也理所当然的可以将其看做是计算机,是网络,别忘了,软硬统一的特性。

那么既然云计算的可以看做是传统的网络或者计算机,那么为什么我们现在要特别叫它云呢?下一篇,我们就从计算机的应用和发展历史,结合我们前面说的成本和收益来看这种概念的历史演变。

 PS:这里,我也极力想向大家表达一种思想,就是在思考和对待一些问题时,我们应该在更高的高度来抽象的看待这些问题,采用一致化表达和处理的手段,来避免我们陷入问题的细节的泥潭(比如问题的规模,研究对象的非关键性差异等),当然,采用这种思想或者方法,也并不是不考虑这些问题(在很多时候,这些问题很是关键,比如规模问题),我们只是将这种问题延迟到更低的层次去考虑,从而使得我们的思维更具有层次性,有利于简化思考的复杂度,这其实也是面向对象分析的核心思想。