J2EE 高并发体系详解

J2EE 集群是用来提供高可用性和伸缩性服务,同时支持容错处理的一种流行的技术。但是,由于 J2EE 规范缺乏对集群的支持, J2EE 供应商实现集群的方法也各异。这给 J2EE 架构师和开发人员带来了很多困难。以下是几个常见的问题:
l      为什么带集群功能的商业 J2EE 服务器产品如此昂贵?( 10 倍于不带集群功能的产品)
l      为什么基于单服务器环境构建的应用不能在集群中运行?
l      为什么应用在集群环境中运行得很慢,但在非集群环境中却快得多?
l      为什么集群的应用移植到其他服务器中失败?
理解这些限制和要素的最佳方法是学习他们的实现方式。

基本术语

在我们讨论不同的集群实现之前,先谈谈几个概念。这有助于理解不同的 J2EE 集群产品不同的设计结果和概念:
伸缩性( Scalability ):
在一些大的系统中,预测最终用户的数量和行为是非常困难的,伸缩性是指系统适应不断增长的用户数的能力。提高这种并发会话能力的一种最直观的方式就增加资源( CPU ,内存,硬盘等),集群是解决这个问题的另一种方式,它允许一组服务器组在一起,像单个服务器一样分担处理一个繁重的任务。
高可用性( High availability ):
单 一服务器的解决方案并不是一个健壮方式,因为容易出现单点失效。像银行、账单处理这样一些关键的应用程序是不能容忍哪怕是几分钟的死机。它们需要这样一些 服务在任何时间都可以访问并在可预期的合理的时间周期内有响应。集群方案通过在集群中增加的冗余的服务器,使得在其中一台服务器失效后仍能提供服务,从而 获得高的可用性。
负载均衡( Load balancing ):
负载均衡是集群的一项关键技术,通过把请求分发给不同的服务器,从而获得高可用性和较好的性能。一个负载均衡器可以是从一个简单的 Servlet 或 Plug-Ins (例如一个 Linux box 利用 ipchains 来实现),到昂贵的内置 SSL 加速器的硬件。除此之外,负载均衡器还需执行一些其他的重要任务,如“会话胶粘”让一个用户会话始终存在一个服务器上,“健康检查”用于防止将请求分发到已失效的服务器上。有些负载均衡器也会参与我们下面将要谈到“失效转移”过程。
容错( Fault tolerance ):
高可用性意味着对数据正确性的要求不那么高。在 J2EE 集群中,当一个服务器实例失效后,服务仍然是有效的,这是因为新的请求将被冗余服务器处理。但是,当一个请求在一个正在失效的服务器中处理时,可能得到不正确的结果。不管有多少个错误,容错的服务应当能确保有严格的正确的行为。
失效转移( Failover ):
失效转移是集群中用来获取容错能力的另一项关键的技术。当一个结点失效后,通过选择集群中的另一个结点,处理将会继续而不会终止。转移到另一个结点可以被显式的编码,或是通过底层平台自动地透明地路由到另一个服务器。
等幂方法( Idempotent methods ):
等幂方法是指这样一些方法:重复用相同的参数调用都能得到相同的结果。这些方法不会影响系统状态,可以重复调用而不用担心改变系统。例如: getUsername() 就是等幂的,而 deleteFile 就不是。当我们讨论 HTTP Session 失效转移和 EJB 失效转移时,它是一个重要的概念。

   原创文章@java进阶网 转载请标明出处: http://www.javady.com/index.php/411.html 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值