什么是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 ...
随机推荐
- spring-boot 访问时,加与不加项目名分析
众所周知,springboot非常便捷,可以简化项目开启步骤,加快开发进度. 很多新手也许都遇到过这样一个问题,在以往的springMvc项目里,大家伙都是把打的war放在tomcat中运行,下意识的 ...
- CodeForces 551E GukiZ and GukiZiana
GukiZ and GukiZiana Time Limit: 10000ms Memory Limit: 262144KB This problem will be judged on CodeFo ...
- floyd求最小环 模板
http://www.cnblogs.com/Yz81128/archive/2012/08/15/2640940.html 求最小环 floyd求最小环 2011-08-14 9:42 1 定义: ...
- 如何让 Windows 上的命令行工具更好用
侯爵老师视频详解:如何让 Windows 上的命令行工具更好用 很多 Windows 用户在打开这个小黑窗时,都会情不自禁的感慨,「实在是太丑了--」 实际上如果你用的是 Windows 8 或 Wi ...
- MySQL性能分析、及调优工具使用详解
本文汇总了MySQL DBA日常工作中用到的些工具,方便初学者,也便于自己查阅. 先介绍下基础设施(CPU.IO.网络等)检查的工具: vmstat.sar(sysstat工具包).mpstat.op ...
- Hive教程(1)
1. 介绍 Apache Hive可以使用SQL来读,写,管理分布式存储的大数据集,结构可以投射到已经存储的数据上,命令行工具和JDBC驱动可以让用户连接到Hive. 2. 安装和配置 你可以下载Hi ...
- MYSQL 技术内幕 博客学习
http://blog.csdn.net/CCyutaotao/article/category/6147849/3
- Android ScrollView中嵌套ListView
由于要做一个相似美团的团购产品.scrollview中还有嵌入listview,要是直接把listview嵌进scrollview中.listview的高度是固定的不能进行滑动.默认情况下Androi ...
- no projects are found to import
从svn上导出的项目在导入Eclipse中常常出现 no projects are found to import . 产生的原因是:项目文件里中没有".classpath"和&q ...
- dlopen failed: empty/missing DT_HASH in "libx.so" (built with --hash-style=gnu?)
崩溃日志内容: java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH in "libxxxx.so&quo ...