作者:江南白衣,原文地址:http://blog.csdn.net/calvinxiu/archive/2007/05/25/1625454.aspx,版权所有,转载请保留原文链接。
写下标题,就想起冬冬那句"人生像个舞台,请良家妇女离开" ,什么时候开始,已写不出那样的文字。
在程序世界,内存,文件,网络连接,数据库会话,线程甚至一切的对象,都是资源。《Pattern-Oriented Software Architecture V3 --Patterns for Resource Management 》(POSA第三卷),讲的就是资源管理,外表轻薄(145页)而内里熟悉,很好读。
|
什么资源需要管理?
|
全书把10个模式分成生命期分成三个部分:资源获取,资源生命周期,资源释放。
一、资源获取
资源获取,一是LookUp模式,二是Lazy/Eager/Partial 三种获取模式。
1.Lookup:
大家熟悉的Corba的Naming Service,J2EE的JNDI,COM+的注册表,WebService的UDDI,还有最有现实感的DNS,所有这些,都是通过中介实例来发现和访问资源,屏蔽资源的物理位置(还可以进一步屏蔽资源的负载均衡和故障转移)。
几个值得笔记的地方:
- 获得LookUp服务的实例:在查找资源实例前,先要获得Lookup服务的实例。使用预配置文件或使用广播/多播的自举发现协议。
- 设计查询语言:支持复杂的查询。
- 单点故障:如果查找服务崩溃就引起整个系统崩溃,需要群集机制。
- 悬挂引用:资源已失效,注册的引用变得过时,需要资源注销机制,如leasing模式。
- Federate Lookup:多个LookUp实例联合提供查询服务,如多级DNS,Half-Object Plus Protocol模式。
- Replicated Lookup:在Lookup实例处就可以实现负载均衡,如Borland的Corba实现Visibroker。
2.Lazy Acquisition:
Hibernate的Lazy Load已经深入人心,一种朴素的JIT思路。
几个值得笔记的地方:
- 透明性:使用资源代理使LazyLoad对使用者透明。
- 支持关闭“Lazy Load机制”的开关。
- 可能增加额外的时间开销,比如在lazy load时其实多了一次数据库往返。
- 执行时间的不可预测,这是最要命的,在实时性要求很高的系统里,忽然要去跑一下数据库的话.....
3.Eager Acquisition:
财大气粗,内存多多的服务器,喜欢在启动时就将数据先装进内存里,使得运行时性能(Performance)与可预测(Predictability)兼得,不会忽然来一个时间不可控的数据库查询。
- 减慢系统启动速度,像我家的旧服务器启动要40分钟,正在改进。
- 对某类资源可改为运行时检测未来的使用量抢先获得。
好处是减低了启动时间,更贴切资源的使用量,但多了监控系统的开销。
- 过度获取资源,且对其他资源使用者不公平。
- 支持动态配置预获取资源的数量。
4.Partial Acquisition:
中庸从来都是解决实际问题的不错方式,既然上面两种方式互有长短,那我们可以把资源获取分成多个阶段。
比如邮件系统的认证模块,就会eager load这两个月里有登陆邮箱的活动用户,而lazy load其他long time no see的用户。
又如浏览器里渐进的图像加载,或者数据驱动的网路协议中先解包数据包头,再逐步获取数据包体等等。
- 思考顺序:决定分哪些步骤,每个步骤的策略(lazy,eager),每个步骤获取多少资源(固定尺寸,或以时间等为标准自适应策略)
- 实现获取触发器,建立负责执行资源获取的每一步的机制,如Reactor[POSA2]之类的模式。
剩下还有6个模式,下篇继续。
分享到:
相关推荐
11. 信息资源管理与管理信息系统的区别是:信息资源管理将信息活动中的一切要素作为其管理对象,以系统思想为主导,强调从多方面、运用多种方法对信息资源进行综合管理,而信息管理主要特征是十分重视技术因素,强调...
对象池在计算机科学,尤其是游戏开发领域,是一个重要的设计模式,它主要应用于管理频繁创建和销毁的对象,以提高性能和优化资源使用。Unity引擎中,对象池被广泛应用于游戏对象的生命周期管理,如敌人、子弹或者...
《Java面向对象DVD管理系统》是一套综合性的软件应用,它以Java编程语言为基础,采用面向对象的设计理念,实现了包括查询、租借等在内的多种功能,旨在有效地管理DVD资源。在这个系统中,我们可以深入探讨以下几个...
"基于Java的人力资源管理系统的设计" 基于Java的人力资源管理系统的设计是当前中小型企业人力资源管理的需求,以满足现代企业人力资源管理的需要。本系统采用Java语言作为开发设计的根本,使用JSP语言作为前台页面...
正因为这点不同,导致建筑的管理模式和软件的管理模式就有很多不同, 有些人认识不到这点,就产生了可以大量使用"软件 蓝领"的想法,因为他羡慕建筑中"民工"的低成本. 要知道软件还有一个与建筑截然相反的责任和用途,那...
腾讯、阿里HR案例分享:全新人力资源管理模式 本资源摘要信息来自腾讯、阿里HR案例分享,主题为全新人力资源管理模式。本文档共32页,涵盖了HR信息化系统、IT技术变革HR业务模式、重新定义HR等多个方面的内容。 一...
在电话本管理系统中,Java的基础概念如类、对象、封装、继承和多态等都得到了应用。系统中的每个功能模块,如用户界面、数据存储、查询等功能,都可以抽象为类,通过对象实例化来实现。 2. **图形用户界面(GUI)**...
开源社区如GitHub、GitLab等是开发者们共享代码和项目的地方,提供了丰富的学习资源和模板,对于初学者或者进行毕业设计的学生来说,这些资源是宝贵的参考和学习对象。但是,重要的是要理解并尊重开源许可证,确保...
【TPDM企业产品资源管理系统】是一种专为企业设计和管理产品生命周期中的各种资源的软件解决方案。在21世纪这个知识经济时代,随着信息技术的飞速发展,企业面临着不断加速的新产品开发压力和复杂度。为了在激烈的...
"基于Java的企业人力资源管理系统的设计与实现" 本文主要介绍了基于Java技术的企业人力资源管理系统的设计与实现。随着国内市场需求的扩大,企业之间的竞争也在逐渐加剧。为了实现长期盈利,以及占领更多市场份额的...
在本资源包中,我们关注的是一个针对高校的固定资产管理系统,该系统采用了Ruby编程语言进行开发。Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而受到开发者喜爱。在课程设计...
解压后,我们可能会看到诸如"pom.xml"(Maven项目)或"build.gradle"(Gradle项目),这些都是构建和管理Java项目的配置文件。此外,还有可能包含"src/main/java"目录,其中存放着Java源代码,"src/main/resources...
例如,在构建大型分布式系统时,可能需要结合使用工厂模式、单例模式和代理模式,以实现组件之间的解耦、资源管理和远程服务调用。 #### 结论 设计模式是软件工程领域的一项宝贵财富,它们不仅提供了解决问题的...
- 在“对象资源管理器”中展开目标SQL Server实例,然后展开“安全性”节点。 - 右键单击“登录”,选择“新建登录”来创建新的SQL Server登录名。 - 如果当前采用的是Windows身份验证模式并希望切换至混合模式,...
- 当需要频繁地创建和销毁某个对象实例时,使用单例模式可以减少资源消耗。 - 例如,数据库连接池通常采用单例模式来管理数据库连接。 #### 四、多例模式【Multition Pattern】 **故事背景:** 虽然刘备决定只...
【标题】"smbms静态资源文件"是一个与JavaWeb应用相关的压缩包,其中包含了用于构建和运行SMBMS(可能是“小型企业管理系统”)的关键组件。这个压缩包中的核心文件是`smbms.sql`,这通常是一个SQL脚本文件,用于在...
不同小区资源推动的模式包括政府资源、非正式照顾体系、民间非营利组织等,每种模式都有其优缺点。政府资源的缺点包括政府为庞大科层体制、体制对立即性需求响应及效率较差、无法满足个别需求。非正式照顾体系的优点...
书中的例子程序虽然都是用JaVa编写,但是本书所介绍的内容对于任何00语言的用户都适用,包括c++和c+。每一章都有数目不等的测验题。每章最后有一页要点整理,这也是精华所在,我都是利用这一页做复习。 《Head ...
管理的载体是组织,管理的本质是合理分配和协调各种资源的过程,管理的对象是相关资源,包括人力资源在内的一切可以调用的资源。管理的职能活动包括信息、决策、计划、组织、领导、控制和创新。管理的目的是为了实现...
- **单例模式**:可能用于数据库连接管理,确保整个应用程序只有一个数据库连接实例,节约资源。 - **工厂模式**:用于创建对象,如数据库连接对象、学生对象等,提供更灵活的扩展性。 6. **测试与调试** - **...