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. javascript/jquery获取地址栏url参数的方法

    1.jquery获取url window.location.href; 2.通过javascript是如何获取url中的某个参数 function getUrlParam(name) { var re ...

  2. 12.IDEA中自动导资源包

    在idea工程中,当你赋值一个类文件的部分代码,粘贴到另一个文件中时,需要导入原来文件中的包资源, 自动设置如下

  3. TCriticalSection(Delphi)

    临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别 临界区对象TCriticalSection(Delphi) 与 TRtlCritical ...

  4. Docker学习总结(16)——当当网Docker应用实践

    随着Docker成为当下热门的容器技术,各大公司以及中小团队都开始选择Docker来进行应用部署,从原有部署方式迁移到Docker方式过程中难免会遇到各种问题,本次分享主要介绍当当网个性化推荐组应用D ...

  5. mac Gitblit安装

    jdk下载传送门 gitBlit是java编写的的 第一步 需要安装java jdk 传送门 JDK6的下载地址: http://www.oracle.com/technetwork/java/jav ...

  6. 葵花宝典之机器学习:全网最重要的AI资源都在这里了(大牛,研究机构,视频,博客,书籍,Quora......)

    https://blog.csdn.net/wemedia/details.html?id=42039

  7. Thread interrupt表示什么

    Thread interrupt表示什么 学习了:https://www.zhihu.com/question/41048032?sort=created 学习了:http://blog.csdn.n ...

  8. 【android】uses-permission和permission具体解释

    1.<uses-permission>: 官方描写叙述: If an application needs access to a feature protected by a permis ...

  9. jmeter函数和变量

    函数和变量广泛的应用在JMeter的传参过程,其中函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用. 常用函数 1.__RamdomString() / __Ramdom() 获 ...

  10. #leetcode#Anagrames

    Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...