从SOA到云计算---“重用”始终是计算机的灵魂
发布时间:2009-03-05   作者:JACK ZHAI

曾经有过世界性的探讨,计算机将来是否可以超越人的智力,机器人是否可以反过来统治人类,当人把自己的感情能力也赋予给计算机,计算机也有了“生命”,那么机器人也可以拥有人的权利吗?


计算机作为人类的辅助工具,而且越来越深入到人类生活、工作的各个角落,那么计算机比人究竟擅长的是什么?计算机技术飞速发展,形态也花样百出,但计算机没有变的思想是什么?


我们都了解,计算机分为硬件与软件,硬件是实现运算的平台,所“会的”也是再简单不过的加法与移位,软件是把你要做的事情逐渐分解,拆分为计算机可以做的简单工序,先输入给计算机内,计算完后再输出结果。这个过程有些象工厂流水线的管理,原料从这边进去,产品从那边出来。


任何复杂的事情,通过数字化,变成计算机可以认识的“语言”,计算机再做“计算”,按照我们的模型(软件设计)得到我们需要的结果,所以原则上计算机可以做任何动作。但是计算机最低层的工作,就是“重复”地计算,而且每次干新事情时,可以重复利用以前的软件,工作就大大简化,若不能重复使用,计算机其实比人还“笨”,也就是因为这个“重用”,让计算机的能力越来越神奇。


 
我们从软件与硬件两个方面说明一下重用的发展,也总结一下计算机的新技术:


1、 从模块编程到面向对象,再到SOA


在 学习计算机软件设计思想时,老师很自豪的说,虽然计算机有很多语言,但其设计思路只有顺序、转折、循环三种,其中转折是条件的判断,这一点计算机不如人,人可以多个判断条件兼顾,并很快选择重要的条件因素,而计算机只会一个一个看,在高明的“算法”也是人思路总结的便捷判断方式;但在循环方面,计算机就表 现得非常优秀,让计算机重复几万次,可以完全一样;而人来做这件事情,很快就会“找不到北了”,所以计算机的出现在求解方程的叠代计算、财务的记帐、资料的统计等方面,计算机简直就是“千百人”能力的叠加,循环就是部分程序的重用,重复是计算机的强项。


所以在计算机软件设计时,重用一直是设计中的灵魂。说起来也很有趣,软件发展思想一直是在不断地加强重用的能力。


 

在DOS编程时,比较流行的设计思想是模块编程,也就是通过设计可以重复使用的程序功能块,作为过程或函数来调用,让程序结构化,设计简单化。在那个时代,能让自己的软件最大的重用是很不错的事,要设计个下拉菜单、画个小图标,需要自己不断完善自己的“软件库”。


正是由于这种软件低度共享的缘故,软件开发人员一般是比较“专业”的人员,而开发的应用软件又都是业务管理软件,计算机人员与业务使用人员对业务的理解与对计算机能力的理解相差甚远,确认大家沟通的“语言与方式”往往是软件设计成败的关键。


面向对象:


能重用更多的软件模块的开发管理,让大家的工作能有积累效应,软件设计思路从编程人员到软件系统设计者的角度,出现了功能与数据封装在一起的“重用”,这就是面向对象的编程。


面向对象方式让数据与程序一起重用,等于应用功能的重用,让软件界的工作得到共同积累,专门为其他软件开发者提供中间件的专业软件公司相继出现。现在软件设计者再也不用为菜单、打印等“通用”的功能而花时间,开发者有了更多的时间研究业务的流程、用户化的设计,IT人员开始与业务人员进行更多的交流,敏捷编程思想开始流行,IT管理者也逐步走到企业核心管理者的团队中。

SOA(面向服务架构体系)


SOA的 出现不是为了软件编程,它让很多人不理解,所谓的服务究竟是要干什么,有些象系统集成中的搭积木,我们顺着模块编程到面向对象的发展思路,再向上走一步就明白了:既然应用中的对象已经可以重用,下一步就是把业务流程拆解为可重用的子流程,重用的程度上升为业务流程设计层面,所谓服务就是为业务流程用户提供 的实现平台,能尽可能地重用,企业的业务支撑就可以快速组建,业务流程可以快速重造。SOA的五大关键因素有两个是作基础支撑的,一个是连通,另一个就是重用,重用是SOA快捷支撑企业业务能力的灵魂。


所以我们说SOA是高级可重用的编程思路,把软件设计的着眼点从编程人员转移到业务流程设计人员,让业务用户与IT人员的“对话”更加“职业”,计算机已经成为最为普通的工具,软件开发成为业务人员的工作,而不再是计算机专业人员的工作了。


软件开发思路的变化,体现在计算机普及的历程上,但其重用的思想不仅没有改变,而且在不断地光大,“可重用”也不再只是计算机专业理解的专业术语,而是使用计算机所有人员的新思维方式。


 
2、 从虚拟计算机到云计算


重用在软件开发思路上的展现是计算机设计者开始就有的想法,硬件设计者也一直在希望硬件的重用。在单台的计算机上运行多用户的系统,让多个人使用不同应用在早期的计算机上就开始了,因为那时计算机是奇缺资源;后来PC普及后,在PC上运行单用户的多线程,让一个用户可以同时做不同的事情。随着CPU的功能日渐强大,人们开始希望更多、更灵活的硬件平台了,计算机的虚拟技术开始流行。


如何理解虚拟呢?在计算机网络设计时,为了处理不同厂家、不同技术的共同开发,提出了分层的概念,网络分为7层(OSI)或5层(Internet),每个层实现本层次的功能,对上提供实现接口,对下提供调用接口,层次概念简化了复杂系统的设计难度,也让不同层面的设计者有了不同的设计思路,他不再担心下面层次的具体实现方式。用层次的概念理解虚拟计算机就容易多了。


虚拟计算机


虚拟计算机实际就是计算机硬件组件的重用,首先是存储资源,存储技术已经从计算资源中分离,形成规模宏大的网络存储技术NAS、SAN(FCSAN、IPSAN),以及近线存储VTL,离线存储磁带与光盘系统,不同厂家的存储虚拟为一个大存储池,对于应用系统来说,不再关心数据具体存在哪里,只要交给存储系统就可以,至于如何保证数据在系统的可用是存储系统自己的事情,备份、容灾、RAID技术等数据安全都不用应用系统的人再关心了。


其次是计算资源,尤其是目前多核CPU的出现,应用程序需要几个CPU、多大内存、什么操作系统、什么数据库支持,在虚拟计算机中都是可以动态分配的,也就是随时根据你的需要,从目前的所有计算机硬件中虚拟出一台最适合你的计算机,由于资源是按需分配,所以硬件的利用率自然提高。虚拟就是把计算机的硬件变成可以随意组装的积木。

云计算机


云计算是IBM提出的新技术。是IBM采用单个性能一般的计算机群体,完成超级计算机才能提供的计算性能。IBM给出的定义:云计算是一种通过虚拟化的方式共享资源的计算,计算资源可以动态部署、动态调度、动态回收。在云计算的设施中,各种计算机被连接在一起,形成统一的资源池,这些资源会被动态地分配给不同的应用和服务,满足它们在不同时刻的需求。


云计算有几个显著的特点:

分布式:计算机可以部署在不同的网络点上,可以虚拟统一管理,也可以单独使用。分布方式方便了可重用的构架实现,可以把计算机资源分成更细的重用单元,可重用的组合越精细,复杂度也会增加。

虚拟化:应用与计算机硬件不绑定,根据应用的需要虚拟出应用需求的计算机使用,实际上就是增加了虚拟管理层。

动态可扩展:虚拟的计算机比非虚拟的好处,就是动态扩展的方便,因为业务的发展,对计算机、存储等资源的需求会动态增大,而也不希望业务因系统升级而中断,动态扩展也是虚拟计算的天生亮点。

灵活:云计算的虚拟可以支持不同应用的环境需求,包括CPU、存储的硬件需求,也包括操作系统、数据库、中间件等软件环境。


云计算可以说是虚拟计算机的高级阶段,它与网格计算的差异是网格计算允许计算资源的不同构,当然也牺牲了管理性能的代价。云计算机采用同构计算资源,对于效率的提高是有好处的,适合企业的计算中心整合。


 
3、 SOA与云计算的联合


重用的思路贯穿到计算机的软硬件设计中,但两者也是融合的,把两者放在一起,就是目前的计算机构架。
 

未来的计算机从软到硬都是“虚拟”的,真正为人类提供互联网上的“虚拟”社会就是更加方便了。

文章来源:jack zhai's blog
  • 公司总部 | 分支机构 | 法律声明 | 投资者关系 | 400-624-3900 800-810-6038
  • © 启明星辰1996-2018 版权所有 京ICP备05032414号 京公网安备11010802024551号