`

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

阅读更多

原文  http://blog.csdn.net/ESoftWind/archive/2006/10/19/1341120.aspx

 

WEB 层集群实现

WEB 层集群是 J2EE 集群的重要且基本的功能。 WEB 集群技术包括 WEB 负载均衡和 HTTP Session 失效转移。

WEB 负载均衡

J2EE 提供商实现 WEB 负载均衡有许多方式。基本上,都一个负载均衡器被插入到浏览器和 WEB 服务器之间,如下图所示。

 

5   WEB 负载均衡

负载均衡器可以是一台硬件,如 F5 负载均衡器,或仅仅是另一台有负载均衡 Plug-Ins WEB 服务器,一个简单的带 ipchains Linux box 可以很好的实现负载均衡。不管采用哪种技术,负载均衡器都有以下特性:

l      实现负载均衡算法

当客户请求到来时,负载均衡器需要决定将如何分发到后台服务器。流行的算法是 Round-Robin Random Weight Based 。负载均衡器尽力使每台服务器实例都获得相同的负载,但是上述算法没有一个可以获得理想的负载相同,因为它们仅仅是依据发送到特定服务器的请求的个数。一些精密的负载均衡器实现了特殊的算法。它在分发请求之前将检测服务器的工作负载。

l      健康检测

当一台服务器失效了,负载均衡器应当检测出失效并不再将请求分发到这台服务器上。同样,它也要检测服务器是否恢复正常,并恢复分发请求。

l      会话胶粘

几乎所有的 WEB 应用程序都有一些会话状态,可能是简单的记住用户是否登陆,或是包含你的购物车信息。因为 HTTP 本身是无状态的,会话状态应当存在服务器的某个地方并与你当前浏览会话相关联,这样当你下次再请求相同 WEB 应用程序的页面时可以很容易的重新获取。当负载均衡时,最佳的选择就是将特定的浏览器会话分发到上次相同的服务器实例中,否则,应用程序可能不能正确工作。

因为会话状态存储在特定 WEB 服 务器的内存中,“会话胶粘”对于负荷均衡非常重要。但是,如果其中某台服务器实例因为某种原因失效了(比如关机),那么这台服务器的会话状态将要丢失。负 载均衡器应当检测到这个失效并不再将请求分发给它,但这些请求的会话状态都因为存放在失效的服务器中而丢失了所有信息,这就将导致错误。会话的失效转移因 此而生。

HTTP Session 失效转移

几乎所有流行的 J2EE 供应商都在他们的集群产品中实现了 Http Session 失效转移,用来保障当某台服务器失效后会话状态不会丢失,使客户端请求能被正确处理。如图 6 所示,当浏览器访问有状态的 WEB 应用程序(第 1 ,2 步),这个应用程序可能在内存创建了会话对象用于保存信息以供后面的请求使用,同时,发送给浏览器一个唯一的 HTTP Session ID 用于标识这个会话对象(第 3 步),浏览器将这个 ID 保存 Cookie 中,并当它下次再请求同一 WEB 应用程序的页面时,会将 Cookie 发还给服务器。为了支持会话失效转移, WEB 服务器将在一定的时候把会话对象备份到其他地方以防止服务器失效后丢失会话信息(第 4 步)。负载均衡器检测到这个失败(第 5 6 步),并将后续的请求分发到装有相同应用程序的服务器实例中(第 7 步),由于会话对象已经备份到其他地方了,这个新的服务器实例可以恢复会话(第 8 步)正确地处理请求。

 

6   HTTP Session 失效转移

为了实现上述功能, HTTP Session 失效转移将带来以下问题:

l      全局 HTTP Session ID

如上所述, HTTP Session ID 用于在特定的服务器实例中标识唯一的内存会话对象,在 J2EE 平台, HTTP Session ID 依赖于 JVM 实例,每个 JVM 实例拥有几个应用程序,每个应用程序都为不同的用户管着许多会话, HTTP Session ID 是在当前 JVM 实例用于访问相关会话的关键。在会话失效转移的实现中,要求不同的 JVM 实例不能产生两个相同的 HTTP Session ID ,这是因为当失效转移发生时,一个 JVM 的会话将要备份并恢复到另一个中,这样,必须建立全局 HTTP Session ID 产生机制。

l      如何备份会话状态

如何备份会话状态是区别 J2EE 服务器好坏的关键因素。不同的供应商有不同的实现,在后续部分我再详细解释。

l      备份的频率和粒度

会话的备份是消耗性能的,包括 CPU ,内存,网络带宽和写入磁盘和数据库的 I/O ,备份的频率和备份对象的粒度将严重影响性能。

分享到:
评论

相关推荐

    揭开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