分类:
2008-09-09 16:47:21
。J2EE为实现分布式(distributed)体系结构提供了非常出色的支持,同一个分布式J2EE应用构件可被分布给运行在一台或多台物理上的多个JVM.分布式J2EE应用以使用具有远程接口的EJB作为基础,远程接口可以让隐藏掉分布式构件的访问和管理的大部分复杂性…… J2EE对分布应用的出色支持已经导致一种误解:J2EE必定是一个分布式模型…… 大家都非常的清楚,分布式应用非常复杂,并导致显著的运行开销,而且要求设计工作保证令人满意的性能……人们有这样一种想法 分布式模型是实现坚固而又可缩放的应用的惟一方法,这种想法是不可行的,聚集所有服务构件把它们集中布置到同一JVM也是可能的……分布式体系结构提供了以下几点好处:
(1、支持许多需要一个共享式业务对象(中间层)的客户(客户可具有不同类型)的能力,考虑这个因素不适用于Web应用,因为Web应用已提供了一个中间层。
(2、部署任一应用构件到任意物理服务器上的能力。这对负载均衡是非常重要的(我们可考虑当一个Web接口做少量工作而业务对象做密集型计算时的一种场景,如果使用一个J2EE分布式模型,我们可把该Web接口运行在一台或多台计算机上,而让许多服务器运行各种做计算的EJB)这样做的后果就是虽然每个调用的性能会有所下降,因为无程请求的系统开销会降低该调用的速度,但每个硬件的总吞吐量可能通过消除性能瓶颈来得到改善……分布式体系结构也引起了一些麻烦:
(1、 性能问题,远程请求会比本地请求慢许多倍。
(2、 复杂性,分布式应用的开发、调试、部署和维护都是比较困难的。
(3、 实行OO设计方面的限制,这是十分重要的方面……分布式应用带来了许多有趣的挑战。由于分布式应用的复杂性,在我们对需求做解决方案时,倘若有选择的余地,最好是通过选择一个非分布式解决方案来避开分布式应用的各种复杂性……分布不是实现坚固、可缩放应用的惟一方法。使用了远程接口的大多数J2EE应用体系结构往往和所有构件一起被部署在相同的服务器上,以避免真正远程调用的性能开销,这意味着一个分布式应用的复杂性是完全没有必要的,因为它没有给我们带来或产生任何真正的好处。