`

揭开J2EE集群的神秘面纱(四)

阅读更多

原文  http://blog.csdn.net/ESoftWind/archive/2006/10/20/1342309.aspx

 

性能因素

考虑如下问题:一台 WEB 服务器中可能运行着许多 WEB 应 用,它们中每一个都可能被成百的并发用户访问,而每个用户都会产生浏览器会话用于访问特定的应用。所有会话信息都将备份以便服务器失效后能转移到其他服务 器实例中。更糟的是,会话会由于一次次的发生以下情况而变化,包括创建、失效、增加属性、删除属性、修改属性值。甚至是什么都没变,但由于有新的访问而使 最后访问时间变了(由此判断什么时候失效会话)。因此,性能在会话失效转移的解决方案中是个很大的因素。供应商通常会提供一些可调的参数改变服务器行为, 使之适应性能需求。

备份时机

当 客户端的请求被处理后,会话随时改变。由于性能因素,实时备份会话是不明智的。选择备份频率需要平衡。如果备份动作发生得太频繁,性能将急剧下降。如果两 次备份的间隔太长,那么在这间隔之间服务器失效后,很多会话信息将会丢失。不管所有的方式,包括数据库和内存复制,下面是决定备份频率的常用的选项。

l      WEB 请求

WEB 请求处理结束后,发生响应之前保存数据。这种方式能够保证在失效后备份的会话数据是最新的。

l      按固定的时间间隔

会话在后台按固定的时间间隔保存。这种方式不能保证备份的会话数据是最新的。但由于不需在每次请求之后备份数据,因而有更好的性能。

备份粒度

当备份会话的时候,你还需要决定多少会话状态需要保存。以下是不同产品所有采用的常用的策略。

l      整个会话

每次都将保存所有会话。这种方式为正确保存分布式 WEB 应用的会话提供了最好保证。这种方式简单,内存复制和数据库存储方式都默认采用这种方式。

l      修改过的会话

当会话被修改过后,则备份整个会话。当 “session.setAttribute()” “session.removeAttribute()” 被调用后,则认为会话被修改过。必须保证这些方法调用才修改会话属性,这并不是 J2EE 规范后要求的。但却是正确实现这种方法所需要的。备份修改过的会话减少了会话存储的数量,那些仅仅是读取会话属性的请求将不会触发会话备份的动作。这将带来比备份整个会话更好的性能。

l      修改过的属性

仅仅是保存被修改过的会话属性而不是整个会话。这将最小化备份的会话数据。这种方式带来最好的性能及最小的网络通信。为了保证这种方式工作的正确性,必须依据以下的要点。首先,只能通过调用“ setAttribute() ”方法修改会话状态,并且会话数据要被序列化和备份。其次,确保属性之间没有交叉引用。每个唯一的属性键值下的对象图应当被独立地序列化和保存。如果两个独立的键值下的对象存在交叉引用,它们将不能够正确的序列化和反序列化。例如图 13 所示,在一个内存复制的集群中,会话中存有“ student ”和“ school ”对象,同时“ school ”对象含有到“ student ”对象的引用,某一个时候“ school ”被修改后备份到备份服务器中。在序列化和反序列化之后,在备份服务器的被还原的“ school ”对象的版本将包含整个对象图,包括其引用的“ student ”对象。但是“ student ”对象可以被独立的修改,当它被修改后,仅仅只有它自己被备份。在序列化和反序列化之后,在备份服务器中还原“ student ”对象,但在此时,它将丢失与“ school ”对象的连接。尽管这种方式有最好的性能,但上述限制将影响 WEB 应用程序的架构和设计。特别是需要用会话保存缓存的复杂的用户数据。

 

13   会话复制中的交叉引用

其他失效转移的实现

如前面章节所提到的,当会话备份时粒度对于性能非常重要。然而,当前的一些实现,不管是数据库存储还是内存复制,都将使用 Java 对象序列化技术来传输 Java 对象。这就打了个大印子,影响系统的性能,并给 WEB 应用程序的架构和设计带来很多的限制。一些 J2EE 供应商便寻找一些特别的手段来更为轻量地,小印子地实现 WEB 集群,提供细粒度的分布式对象共享机制用于提高集群的性能。

Jrun Jini 技术

Jrun4 将它的集群解决方案构在 Jini 技术之上。 Jini 为分布式计算而生,它允许在一个单一的分布式计算空间内创建“联合”的设备或组件。 Jini 提供查找,注册,租用等分布式系统服务,这对集群环境非常有用。另一种称为 JavaSpace 的技术构建于 Jini 之上,它提供了一些用于实现集群非常有价值的特性,如对象处理,共享,迁移等。要了解有关 Jini JavaSpace 更多的信息,请参考 http://java.sun.com/products/jini/2_0index.html

Tangosol 的分布式缓存

Tangosol Coherence 提供了一个分布式数据管理平台,它可以嵌入到大多数流行的 J2EE 服务器中用于实现集群环境。 Tangosol Coherence 同时也是提供了分布式缓存系统用于在不同的 JVM 之间有效地共享 Java 对象。要了解有关 Tangosol 更多的信息,请参考 http://www.tangosol.com

分享到:
评论

相关推荐

    揭开J2EE集群的面纱 by 王昱.中英文双语

    《揭开J2EE集群的面纱》是由王昱编著的一本专著,该书以中英文双语的形式深入探讨了J2EE集群的核心概念和技术。J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司提供的一个企业级应用开发平台,它允许开发...

    揭开J2EE集群的面纱 pdf

    3.什么是J2EE集群? 4.WEB层集群实现8 4.1.WEB层负载均衡 4.2.HTTP会话的失败转移 4.2.1.数据库持久方案 4.2.2.内存复制方案 4.2.3.Tomcat的方案:多服务器复制 4.2.4.WebLogic, WebSphere, JBoss的方案:结对...

    揭开j2ee集群的神秘面纱

    《揭开J2EE集群的神秘面纱》是深入理解企业级Java应用集群部署的重要参考资料。在信息技术日益发展的今天,J2EE(Java 2 Platform, Enterprise Edition)作为企业级开发的首选平台,其集群技术对于确保高可用性、可...

    揭开J2EE集群的面纱

    《揭开J2EE集群的面纱》一书深入探讨了J2EE集群技术的核心概念与实践,为读者提供了全面的理解和应用指南。本书不仅详细解释了集群的基本术语,还介绍了J2EE集群的具体实现,包括WEB层、JNDI、EJB以及JMS和数据库...

    揭开J2EE集群的神秘面纱.pdf

    ### 揭开J2EE集群的神秘面纱 #### 序言 随着互联网技术的快速发展,J2EE(Java 2 Platform, Enterprise Edition)作为企业级应用开发的标准平台之一,在金融、电商等领域得到了广泛的应用。为了确保关键业务系统的...

    揭开J2EE集群的神秘面纱

    J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出的用于构建企业级分布式应用程序的框架...《揭开J2EE集群的神秘面纱》这本书将深入讲解这些概念,并提供实践经验,对学习和研究J2EE集群有着极大的帮助。

    揭开J2EE集群的面纱 中文版PDF

    ### 揭开J2EE集群的面纱 #### 前言 随着互联网技术的飞速发展,企业和组织越来越依赖于稳定可靠的应用程序来支撑其业务运作。在这样的背景下,J2EE(Java 2 Platform, Enterprise Edition)作为一套成熟的企业级...

    J2EE扫盲之-揭开J2EE集群的神秘面纱

    ### J2EE扫盲之-揭开J2EE集群的神秘面纱 #### 1. 前言 随着互联网业务的迅速发展与企业信息化水平的不断提升,越来越多的关键性应用程序选择基于J2EE(Java 2 Platform, Enterprise Edition)平台进行构建。例如,...

    揭开J2EE集群的神秘面纱.doc

    J2EE集群是一种为了提供高可用性和伸缩性而设计的技术,主要应用于关键业务系统,如银行和账单处理系统,以及大型互联网服务,如Google和Yahoo。在高可用性方面,集群通过冗余服务器避免单点故障,确保服务始终可用...

    J2EE详解

    "揭开J2EE集群的神秘面纱.pdf"可能涵盖了J2EE应用在集群环境下的运行和管理。集群是通过多个服务器实例(节点)共享工作负载和提高可用性的方式。在J2EE集群中,可以实现负载均衡、故障转移、会话复制等功能,确保...

    走进 JBoss 服务器

    本文旨在带领读者深入了解JBoss,从下载、安装到实际应用,逐步揭开其神秘面纱。 #### 二、工具准备 在开始之前,确保准备好以下必要的工具: - **JDK**:Java Development Kit版本需为1.3.1或更高。这是因为...

Global site tag (gtag.js) - Google Analytics