什么是J2EE的集群?
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的集群?的更多相关文章
- 【J2EE之web应用】java集群概念
在学习web应用进行部署的时候,遇到一个名词java集群,(事实上遇到非常多名词╭(╯^╰)╮~~~).不懂意思就查一查! 在这里做个笔记! 没有什么高深见解,就搞明确几个概念,java集群的特点 . ...
- J2EE 中间件 JVM 集群
[转]J2EE 中间件 JVM 集群 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 jvm应用服务器weblogicjvm集群 1 前言 越来越多的关键任务和大型应用 ...
- J2EE集群原理(摘录)
J2EE集群原理 什么是集群呢?总的来说,集群包括两个概念:“负载均衡”(load balancing)和“失效备援”(failover) 图一:负载均衡 多个客户端同时发出请求,位于前端的负载均衡 ...
- websphere8 从安装到部署 测试集群应用程序 安装j2ee程序(非常详细)
目录1. 准备安装文件2. 安装Installation Manager3. 为Installation Manager指定安装资源库4. 创建部署管理器概要文件5. 创建定制概要文件并联合到部署管理 ...
- Quartz集群
为什么选择Quartz: 1)资历够老,创立于1998年,比struts1还早,但是一直在更新(27 April 2012: Quartz 2.1.5 Released),文档齐全. 2)完全由Jav ...
- java集群技术(转)
来源:http://blog.csdn.net/cdh1213/article/details/21443239 序言 越来越多的关键应用运行在J2EE(Java2, Enterprise Editi ...
- 结合Apache和Tomcat实现集群和负载均衡 JK 方式
本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵. 因原文中有较多的 ...
- 结合Apache和Tomcat实现集群和负载均衡
http://fableking.iteye.com/blog/360870 TomcatApacheJSP应用服务器Web 本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实 ...
- window xp Apache与Tomcat集群配置--转载
转载地址:http://www.cnblogs.com/obullxl/archive/2011/06/09/apache-tomcat-cluster-config.html 一. 环境说明 Win ...
随机推荐
- 32.es读请示内部分发原理
当客户端发送一次读请求时,大致会经过以下几个步骤 1.客户端发送一个请求过去,es的一个node接收到这个请求(随机的node),这个node就被es内部分配成coordinating node(协调 ...
- 使用idea搭建maven项目时 java目录下的xml文件没有加载的解决方法
今天在idea集成开发环境下 使用maven搭建了ssm项目,遇到了3个问题 首先我们先复习一下知识点: 第一步:在web.xml中配置spring监听器 <!-- spring监听器 加载sp ...
- Firefox配置Fiddler
Fiddler: Toos->Telerik Fiddler Options->HTTPS->Capture HTTPS CONNECTs Toos->Telerik Fidd ...
- 解决ubuntu下wordpress设置固定链接后文章无法打开
1.首先查看是否开启了Apache的rewrite功能,新建一个phpinfo的php文档 <?php phpinfo(); ?> 保存为info.php文件 放在www目录下并用浏览器打 ...
- java中byte类型
http://www.cnblogs.com/Robotke1/archive/2013/05/25/3099309.html ------------------------------------ ...
- Spring @async 方法上添加该注解实现异步调用的原理
Spring @async 方法上添加该注解实现异步调用的原理 学习了:https://www.cnblogs.com/shangxiaofei/p/6211367.html 使用异步方法进行方法调用 ...
- [Angular] Upgrading to RxJS v6
This is just a learning blog post, check out the talk. 1. Custom pipeable operators: Custom pipeable ...
- mysql配置文件夹错误:在安装mysql 5.6.19 时运行cmake命令是出现CMake Error: The source directory does not appear to contai
在安装mysql 5.5.xx 时运行cmake命令是出现CMake Error: The source directory does not appear to contain CMakeLists ...
- setOutputFormat called in an invalid state: 1
在编写一个简单的录像应用程序的时候,爆出例如以下异常: E MediaRecorder: setOutputFormat called in an invalid state: 1 E Android ...
- linux中字符串转换函数 simple_strtoul
Linux内核中提供的一些字符串转换函数: lib/vsprintf.c 1. unsigned long long simple_strtoull(const char *cp, char **en ...