`
winie
  • 浏览: 216723 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

OO + 分布式计算 = 软件架构的方向

阅读更多
最近,一个新名词“云计算(cloud computing) ”很热门,它是网格计算的进一步细化,我们看看网络上一些对云计算的定义:

  Googel搜索引擎计算用来解读云计算再合适不过:网页的变更通常大量而复杂,但云计算可很容易地处理海量数据,它不仅可以将搜索任务切分为多个小的任务模块执行,而且单个任务模块可以采用不同的算法,这样的计算结果集合就是搜索结果。 (摘自云计算泄露Google的秘密)

  “云”,既是对那些网状分布的计算机的比喻,也指代数据的计算过程被隐匿起来,由服务器按你的需要,从大云中“雕刻”出你所需要的那一朵。实在是非常浪漫的比喻。

  云计算是一个新兴的商业计算模型。利用高速互联网的传输能力,将数据的处理过程从个人计算机或服务器移到互联网上的计算机集群中。这些计算机都是很普通的工业标准服务器,由一个大型的数据处理中心管理着,数据中心按客户的需要分配计算资源,达到与超级计算机同样的效果。(摘自如果云计算)

  所以,从概念上看,云计算实质也就是一种分布式计算,这种计算模式相对于传统数据库中心的计算模式,无疑拥有巨大潜力和优越性。

  所谓数据库中心的计算模式,就是将软件系统的处理能力和负载主要集中在一两台数据库服务器,如果要提高计算处理能力,只能不断提高数据库服务器的硬件水平,从普通双核多核PC机到小型机,直至中型机和超级计算机,随着处理能力提高,系统的建设成本也越来越高,最后,享受超级计算能力不再成为普通百姓的权利,而成为贵族和特殊国防领域的专利,并成为国家炫耀计算机实力一个象征。

  其实,也许我们又走上了一个错误的方向,如果Google当初选择了这种集中式超级计算模式,那么也许就没有我们普通百姓可以享用的方便低廉的搜索服务,使用搜索已经成为我8岁儿子基本工具,他一学会汉字,就会用这些汉字在google中找到自己想玩的小游戏,搜索和汉字已经同时融入我们下一代人的血液中,这些都得益于计算思维的转变:分布式计算 云计算。

  在Java领域,从EJB诞生那天开始,就已经宣布分布式计算革命的开始,EJB最重要的价值就是让我们开发一个分布式计算模式的软件系统不再变得困难和复杂。现在的云计算模式更上升为SOA和We服务,看看下面IBM的蓝云架构中,一个基础核心就是EJB/SOA服务器Websphere(图来自云计算泄露Google的秘密):

cloud computing

  说了这么多分布式计算,那么和面向对象OO这样设计思维有什么关系呢?这两者其实是一脉相承,这个观点我已经在jdon.com论坛中提及了好几年:试想想:分布式计算处理的是数据,只有数据被包装在对象Object中,而对象是运行在应用服务器的内存中,这样,整个计算负载才会集中到这些应用服务器上,然后我们就可以架设多台应用服务器,进行分布计算;如果这些数据是被包装在数据表中,就是只能运行在数据库服务器中,那就只能走集中式主机的发展道路。

  千里之行,始于足下,时尚革命的云计算好像和我们无关,其实它的方向就开始于我们最基础的编程设计中,只有我们树立了OO编程思想,将我们的业务数据使用对象这个容器封装起来,才能在将来可能享受分布式云计算的好处,否则只能推倒重来重新设计,这也说明:追求软件的可拓展性和伸缩性是现代软件的灵魂。

  当你使用Evans DDD这些OO分析方法提炼你的需求以后,你就得到你系统的很多业务对象,那么如何让这些业务对象在计算机中以分布式计算方式运行呢:目前在Java世界,有两种路线可以实现集群分布式集群计算:

  1. EJB或SOA路线。IBM的蓝云产品就是试图走这条路,你选择IBM这样产品提供商,就象买了辆日本车,舒适型、操控性和空间内饰以及外表都适中,各种指标都很中庸,OO方面有一点但差一点;分布式性能上有一点但也差一点;分布式事务方面有一点但也差一点,所以,如果你只是一般商务应用项目,EJB/SOA也许是一种选择,这也是日本车畅销的一个原因。

  而EJB/SOA前提也是必须首先将你的业务对象和业务服务从数据库的SQL语句中独立出来,否则,你提供的SOA服务就是SQL语句服务,实际就是数据库存储服务,有一种观点认为云计算就是云存储的延伸,这个我不敢苟同,有这种观点的人实际还是数据库中心思维的延伸,难道他们认为分布式处理就是将包含业务内容的SQL语句分开运行?

  这里面就忽视了一个重要概念:对象,必须将业务逻辑从你的SQL语句中分离出来,形成业务对,再通过对象缓存或服务的分布化,才能真正实现分布式计算或云计算。所以,我们必须对EJB/SOA这些现成解决方案的内部机制掌握开始,这就是第二条路线:

  2. 分布式计算定制DIY路线:google走的就是这条路,德美车福克斯很流行,就是因为其操控性和5星安全性(内饰几乎很差),这说明我们也开始选择一些个性产品,就像川菜那么辣,但是在全国都很受欢迎一样,所以,走分布式云计算路线,我们也可以个性定制自己的架构路线:如果你只追求高的计算性能,而不必太在意计算的安全和稳定性(这点其实也很重要,否则就容易发生ATM吐钱的事件:恶意取款案是中国软件悲哀 ),那么我就选用分布式缓存。

  现在Hibernate等ORM持久方案很流行,它不但让我们软件变得更加OO更加自然,克服了对象和关系数据库的矛盾,同时,它还提供了对这些持久对象的缓存支持,包括一级和二级缓存,这两个特点几乎成为Hibernate等ORM或其他持久层框架的本质特点。同时也验证了只有OO+对象缓存才是一个完美架构。Hibernate可支持各种缓存产品,包括JBoss Cache、Ehcache以及Terracotta,这些缓存都可以无缝地扩展到分布式缓存运行模式。

  这样,数据被包装在对象中,而对象被存储在缓存Cache中,因为这些对象不是简单的数据包装,它们就是业务模型对象,有重要的业务意义,比如订单对象;产品对象等,这些对象就是你的业务系统的数据核心,是经常被访问到的,而这些业务对象被缓存在Object Cache中了,无疑这个Object Cache的击中率是很高的,这相当于优化后缓存,肯定比数据库自身没有针对具体项目优化的缓存要高。更重要的是,因为Object Cache是在应用服务器中,我们通过Object Cache以及各种服务和业务计算将整个系统的运行负载拦截在了应用服务器中,那么我们再通过分布式缓存将这些业务对象带到其他计算机内存中,这才是分布式云计算的本质。

  综上所述:如果说分布式云计算是一条我们普通老百姓通往美好未来的康庄大道,那么如何驶入这条道路?以及选择怎样的座驾工具?无疑是关系到我们每个程序员的职业素质和水平。很显然,OO分析设计编程是一个最基本的要求,(OO + 分布式计算) = 软件架构的方向。

云计算成为现实
分享到:
评论
1 楼 ltian 2010-12-27  
实话实说,让我云里雾里!不知道Hibernate缓存能力和云计算之间有啥关系!

相关推荐

    OO+分布式计算=软件架构的方向.pdf

    OO+分布式计算=软件架构的方向.pdf

    OO+分布式计算=软件架构的方向[定义].pdf

    OO+分布式计算=软件架构的方向[定义].pdf

    STM32_CAN波特率计算小程序(带QT源码)

    根据特定的波特率、采样点以及允许的错误率计算得出以下参数的值: CAN_InitStructure.CAN_BS1=CAN_BS1_9tq; CAN_InitStructure.CAN_BS2=CAN_BS2_6tq; CAN_InitStructure.CAN_Prescaler=5;

    疯狂五笔输入法

    oo零〇 P po丿=撇 po片 pa爿=爿p+乛a pf旁=旁p+方f pg平=平p+干g pr疋=疋p+人r px辟=辟p+辛x py皮=皮p+又y pz菐 Q qo去千 qb酋=酋q+丷b qc曲=曲q+艹c qc其=其q+艹c qd犬犭犮=犬q+大d qf缺夬=缺q+缶f qf缺字旁...

    软件架构之软件架构设计

    由于[GOF95]是论述软件模式的著作的第一本,也是OO设计理论著作中最流行的一本,因此有些人常常使用设计模式(Design Pattern)一词来指所有直接处理软件的架构、设计、程序实现的任何种类的模式

    OO系统设计师之路--设计模型系列(1)--软件架构和软件框架

    软件架构是一种思想,一个系统蓝图,对软件结构组成的规划和职责设定。而软件框架是一个实现,一个半成品,是针对一个特定问题的解决方案和辅助工具。这一篇讲软件架构和软件框架在UML设计过程中所起的作用。本系列...

    php编译好的evalhook文件~

    $O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};eval($O00O0O("JE8wTzAwMD0iQk9DWm1LUHF5bkR4QWJmR05FdW90c2pkUlljcmlKTXdWZ0...

    软件架构设计的三个维度

    架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务SOA这三个要素在架构设计中的位置与作用。

    OO软件工程

    OO软件开发的系统分析设计需求,是OO学习软件开发的一个要求范例

    OO超市V1.0.7

    欢迎您使用oo超市! 开始游戏请打开bin文件夹,双击“开始游戏.exe”,即可开始游戏 注:请勿对本程序进行反向编译!否则后果自负! 怎么升级? 1、下载更新程序。 2、运行更新程序。 3、让电脑飞一会儿,更新完成了...

    【JavaScript源代码】js拖拽效果的原理及实现.docx

    js拖拽效果的原理及实现  拖拽功能主要是用在让用户做一些自定义的动作,比如拖动排序,弹出框拖动移动等等 拖拽的流程动作 1、鼠标按下 会触发onmousedown事件 2、鼠标移动 会触发onmousemove事件 3、鼠标松开...

    WebGis-典型的jsoo架构项目,吐血奉献

    WebGis-典型的jsoo架构项目,吐血奉献

    Hercules系列处理器安全特性介绍.pdf

    Hercules 的安全特性指的是功能安全,且为1oo1D 架构,符合IEC 61508 SIL 3 和 ISO 26262 ASIL D 认证,可帮助用户轻松进行系统级认证。 Hercules 基于“安全岛”的思想,通过多种软硬件方式对系统失效和随机失效...

    ooop:Python上的OpenObject

    >>> from ooop import OOOP >>> o = OOOP(dbname='demo') 从模型中检索全部 >>> from ooop import OOOP >>> o = OOOP(dbname='demo') >>> o.ResPartner.all() 从模型中检索1条记录 >>> from ooop import OOOP ...

    软件架构设计的6大原则.pdf

    软件架构设计的6大原则

    Head.First.设计模式.中文版 1-8章

     软件开发的不变真理  分开变化和不变部分  设计鸭子的行为  测试鸭子的代码  动态地设置行为  封装行为的大局观  “有一个”比“是一个”更好  策略模式  共享模式词汇的威力  我如何使用设计模式?  ...

    南京公司二OO三年新组织架构说明书.pdf

    南京公司二OO三年新组织架构说明书.pdf

    蚂蚁金服大数据分析产品的架构演进

    蚂蚁金服大数据分析产品的架构演进 大数据技术架构分享 DeepInsight

    水利计算程序

    软件仅供参考,计算软件多样 ,可以试一试。。。。。。。。。。。。。。。。。

Global site tag (gtag.js) - Google Analytics