1. 前言 
       现在有越来越多的关键应用和大型应用是基于J2EE
来创建的,像银行系统和帐单系统这些关键应用要求有很高的可用性,而Google 和Yahoo
这样的大型应用就需要很好的可扩展性。在如今这个联系越来越紧密的世界,高可用性和良好的可扩展性的重要性日益突出。例如在1999 年6
月份,eBay 的服务停止了22 个小时,导致大约230 万的拍卖被中断,eBay 的股票也随之下降

了9.2 个百分点。

       J2EE 集群就是一种能够提供高可用性、可扩展性以及容错性的流行技术。但是由于在J2EE 规范中没有对集群做出规范,各个J2EE 厂商就使用不同的方式来实现集群,这样就给系统架构师和开发人员带来了很多麻烦。下面就是常见的一些问题:

•     为什么带有集群支持的商业J2EE 服务器产品如此昂贵?(是无集群支持产品的10 倍)

•     为什么在单机环境下创建的应用在集群环境中无法正常运行?

•     为什么我的应用在集群环境下运行的非常慢,但是在单机模式下却没有这个问题?

•     为什么我的集群应用在向其他厂商的服务器迁移时会失败?

要理解为什么会有这些限制,最好的方法就是研究它的实现,以揭开J2EE 集群的面纱。

[size=large2. 基本术语[/size]

       在我们开始讨论对于集群不同的实现之前,我想,了解一下集群技术的一些基本概念还是很有意义的。希望本章不单单是告诉你这些概念和设计问题,也同时能够为你勾勒一下不同J2EE集群实现的框架以便于理解。

2.1.可扩展性

      
在一些大型系统中,很难提前预知最终用户的数量以及他们的使用行为,所以,可扩展性就是指一个系统能够快速适应用户数量的增加。提高服务器处理能力的最直
接的方法就是增加硬件资源,例如CPU、内存或者硬盘等。集群是解决这个问题的另外一种方式,它使得一组服务器共同分担繁重的任务,但对于最终用户来说就
像一台服务器。

2.2.高可用性

    
通过向单机添加硬件来扩展系统能力的方案并不可靠,因为单一的服务器存在一个单点故障。像银行系统、帐单系统这样的关键应用甚至连一分钟的停机都不能容
许,它们需要在任何时间都是可用的,并且要能够保证响应速度。集群技术就可以满足这个要求,它通过加入冗余服务器使得在一个服务器出错而停止服务的时候,
这些冗余的服务器可以继续服务。

2.3.负载均衡

    
负载均衡是集群的另外一个关键技术,它通过将请求分发到不同的服务器来达到高可用性和高效的处理能力。负载均衡器可以是一个servlet,也可以是一个
插件(例如Linux 上的ipchains),甚至还可以是一个比较昂贵的内嵌了SSL
支持的硬件产品。为了能够分发请求,负载均衡器还需要做一些重要的工作,例如使用“会话粘滞”技术以确保来自同一个用户的请求会被转发到同一个服务器;使
用“健康检查”(或者“心跳监听”)技术来防止将请求转发到一个失败的服务器;有时候负载均衡器还将参与“失败转移”的工作。

2.4.容错

       高可用的数据并不必是严格正确的数据。在J2EE
集群中,当一个服务器实例失败了,在集群中冗余的服务器就可以处理新到的请求,这样就保证了服务依然可用。但是在服务器失败的那一刻,正在被处理的请求就
可能无法得到正确的数据。那么,带有容错功能的集群就可以确保请求所得到的数据是正确的,哪怕是服务器端出现了错误。

       这个是怎么实现的呢?确实需要我们去进行思考!

2.5.失败转移

       在集群中,失败转移是实现容错的一个关键技术。当最初的节点失败之后,在集群中选择另外一个节点来完成处理。失败转移到其他节点可以通过编码实现,也可以由平台自动实现。

2.6.幂等方法

      
如果一个方法使用同样的参数进行多次调用所得到的结果都一样,也就是说对于该方法的调用次数不影响系统,那么这个方法就叫做“幂等方法”。例如
“getUsername()”就是一个幂等方法,而“deleteFile()”就不是幂等的。在讨论 HTTP 会话失败转移和EJB
的失败转移时,幂等方法是一个很重要的概念。

       这个我还是没明白这个概念的应用在那里?

什么是J2EE的集群?的更多相关文章

  1. 【J2EE之web应用】java集群概念

    在学习web应用进行部署的时候,遇到一个名词java集群,(事实上遇到非常多名词╭(╯^╰)╮~~~).不懂意思就查一查! 在这里做个笔记! 没有什么高深见解,就搞明确几个概念,java集群的特点 . ...

  2. J2EE 中间件 JVM 集群

    [转]J2EE 中间件 JVM 集群 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 jvm应用服务器weblogicjvm集群 1 前言 越来越多的关键任务和大型应用 ...

  3. J2EE集群原理(摘录)

    J2EE集群原理 什么是集群呢?总的来说,集群包括两个概念:“负载均衡”(load balancing)和“失效备援”(failover)  图一:负载均衡 多个客户端同时发出请求,位于前端的负载均衡 ...

  4. websphere8 从安装到部署 测试集群应用程序 安装j2ee程序(非常详细)

    目录1. 准备安装文件2. 安装Installation Manager3. 为Installation Manager指定安装资源库4. 创建部署管理器概要文件5. 创建定制概要文件并联合到部署管理 ...

  5. Quartz集群

    为什么选择Quartz: 1)资历够老,创立于1998年,比struts1还早,但是一直在更新(27 April 2012: Quartz 2.1.5 Released),文档齐全. 2)完全由Jav ...

  6. java集群技术(转)

    来源:http://blog.csdn.net/cdh1213/article/details/21443239 序言 越来越多的关键应用运行在J2EE(Java2, Enterprise Editi ...

  7. 结合Apache和Tomcat实现集群和负载均衡 JK 方式

    本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵. 因原文中有较多的 ...

  8. 结合Apache和Tomcat实现集群和负载均衡

    http://fableking.iteye.com/blog/360870 TomcatApacheJSP应用服务器Web  本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实 ...

  9. window xp Apache与Tomcat集群配置--转载

    转载地址:http://www.cnblogs.com/obullxl/archive/2011/06/09/apache-tomcat-cluster-config.html 一. 环境说明 Win ...

随机推荐

  1. python中的二进制、八进制、十六进制

    python中通常显示和运算的是十进制数字. 一.python中的二进制 bin()函数,将十进制转换为二进制,0b是二进制的前缀.如: >>> bin(10) '0b1010' 二 ...

  2. hdu 1568关于斐波那契数列的公式及其思维技巧

    先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c); 假设给出一个数10234432,那么log10(10234432)=log10(1.023 ...

  3. How to run Java main class and pass application arguments in Maven?

    原文: http://www.logicbig.com/how-to/maven/mvn-java-exec-args/ --------------------------------------- ...

  4. Ruby的case语句

    Ruby的case语句 case语句使用的是===判断方式,可以进行更加广义的相等判断: 可以进行类型的判断,可以进行正则表达式的判断: array = ["a",1,nil] a ...

  5. ScalaChina: Scala中文社区

    给大家推荐一个很常使用心的Scala中文社区 ScalaChina地址:http://scalachina.org/ 来自社区创建者的<我为什么想做ScalaChina>: http:// ...

  6. Linux命令(九)——系统监视和进程控制

    与windows系统一样,linux系统中也有很多进程在同时运行,每个进程都有一个识别码PID,它是进程的唯一识别标志. 一.进程的类型 1.系统进程 在操作系统启动后,系统环境平台运行所加载的进程, ...

  7. 轻快的VIM(五):复制

    操作相同文本的时候复制尤其有效,在Windows中我们都习惯了先用鼠标选择文本 而Vim下则不用那么麻烦,你甚至可以使用可视模式操作,但这里先略过 我在这一节主要说说命令模式下的复制 在讲复制之前我要 ...

  8. Linux之convert命令【转】

    本文转载自:http://zlb1986.iteye.com/blog/778054 转载: 强大的convert命令 convert命令可以用来转换图像的格式,支持JPG, BMP, PCX, GI ...

  9. Elasticsearch日志收集

    Install pip if necessary curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py&q ...

  10. 2015 多校赛 第一场 1002 (hdu 5289)

    Description Tom owns a company and he is the boss. There are n staffs which are numbered from 1 to n ...