|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
手机用到的是用j2me所编出来的小程序。前文汇总和PDF下载:揭开J2EE集群的奥秘面纱
叙言
愈来愈多的关头使用运转在J2EE(Java2,EnterpriseEdition)中,这些诸如银行体系和账单处置体系必要高的可用性(HighAvailability,HA),同时像Google和Yahoo这类年夜体系必要年夜的伸缩性。高可用性和伸缩性在明天高速增加的互毗连的天下的主要性已证明了。eBay于1999年6月停机22小时的变乱,中止了约230万的拍卖,使eBay的股票下落了9.2个百分点。
J2EE集群是用来供应高可用性和伸缩性服务,同时撑持容错处置的一种盛行的手艺。可是,因为J2EE标准缺少对集群的撑持,J2EE供给商完成集群的办法也各别。这给J2EE架构师和开辟职员带来了良多坚苦。以下是几个罕见的成绩:
- 为何带集群功效的贸易J2EE服务器产物云云高贵?(10倍于不带集群功效的产物)
- 为何基于单服务器情况构建的使用不克不及在集群中运转?
- 为何使用在集群情况中运转得很慢,但在非集群情况中却快很多?
- 为何集群的使用移植到其他服务器中失利?
了解这些限定和要素的最好办法是进修他们的完成体例。
基础术语
在我们会商分歧的集群完成之前,先谈谈几个观点。这有助于了解分歧的J2EE集群产物分歧的计划了局和观点:
伸缩性(Scalability):
在一些年夜的体系中,展望终极用户的数目和举动长短常坚苦的,伸缩性是指体系顺应不休增加的用户数的才能。进步这类并发会话才能的一种最直不雅的体例就增添资本(CPU,内存,硬盘等),集群是办理这个成绩的另外一种体例,它同意一组服务器组在一同,像单个服务器一样分管处置一个沉重的义务。
高可用性(Highavailability):
单一服务器的办理计划并非一个强健体例,由于简单呈现单点生效。像银行、账单处置如许一些关头的使用程序是不克不及容忍哪怕是几分钟的逝世机。它们必要如许一些服务在任什么时候间都能够会见并在可预期的公道的工夫周期内有呼应。集群计划经由过程在集群中增添的冗余的服务器,使得在个中一台服务器生效后仍能供应服务,从而取得高的可用性。
负载平衡(Loadbalancing):
负载平衡是集群的一项关头手艺,经由过程把哀求分发给分歧的服务器,从而取得高可用性和较好的功能。一个负载平衡器能够是从一个复杂的Servlet或Plug-Ins(比方一个Linuxbox使用ipchains来完成),到高贵的内置SSL减速器的硬件。除此以外,负载平衡器还需实行一些其他的主要义务,如“会话胶粘”让一个用户会话一直存在一个服务器上,“安康反省”用于避免将哀求分发到已生效的服务器上。有些负载平衡器也会介入我们上面将要谈到“生效转移”历程。
容错(Faulttolerance):
高可用性意味着对数据准确性的请求不那末高。在J2EE集群中,当一个服务器实例生效后,服务仍旧是无效的,这是由于新的哀求将被冗余服务器处置。可是,当一个哀求在一个正在生效的服务器中处置时,大概失掉不准确的了局。不论有几个毛病,容错的服务应该能确保有严厉的准确的举动。
生效转移(Failover):
生效转移是集群顶用来猎取容错才能的另外一项关头的手艺。当一个结点生效后,经由过程选择集群中的另外一个结点,处置将会持续而不会停止。转移到另外一个结点能够被显式的编码,或是经由过程底层平台主动地通明地路由到另外一个服务器。
等幂办法(Idempotentmethods):
等幂办法是指如许一些办法:反复用不异的参数挪用都能失掉不异的了局。这些办法不会影响体系形态,能够反复挪用而不必忧虑改动体系。比方:getUsername()就是等幂的,而deleteFile就不是。当我们会商HTTPSession生效转移和EJB生效转移时,它是一个主要的观点。
甚么是J2EE集群
一个无邪的成绩,不是吗?但我仍要用几句话和图往返答它。一般,J2EE集群手艺包含"负载平衡"和"生效转移"。
如所示,负载平衡意味着有很多客户端向方针对象同时收回哀求。负载平衡器在挪用者和被挪用者之间,分发哀求到与原始对象不异的冗余对象中。伸缩性和高可用性就是如许失掉的。
如所示,生效转移与负载平衡分歧。偶然客户端会一连发哀求到方针对象,假如哀求两头方针对象生效了,生效转移体系将检测到此次失利,并将哀求重定向到另外一个可用的对象。经由过程这类体例能够取得容错才能。
假如你想晓得更多的有关J2EE集群的常识,你就会问到一个基础的成绩,“甚么对象能够集群?”和“在我的J2EE代码中那里会产生负载平衡和生效转移呢?”。这些都是用来了解J2EE集群的十分好的成绩。实践上,并非一切的对象都能被集群的,而且负载平衡和生效转移并非在J2EE代码一切中央都能产生。看看上面的例子代码:
在ClassA的bussiness()办法中,instance1能够负载平衡吗?或是当其生效,能够生效转移到其他B的实例上吗?我想是不可的!对负载平衡和生效转移来讲,必需要有个拦阻器在挪用者和被挪用者之间分发或重定向哀求到分歧的对象上。ClassA和ClassB的实例是运转在一个JVM中严密耦合的,在办法挪用间到场分发逻辑十分坚苦。
甚么范例对象能够被集群?——只要那些能够被部署到散布式拓朴布局中的组件。
在我的J2EE代码中,甚么中央会有负载平衡和生效转移?——只在你挪用散布式组件的办法时。
在如所示的散布式情况中,挪用者和被挪用者被分别在有分明界限的分歧的运转容器中,这个界限能够是JVM,历程和呆板。
当方针对象被客户端挪用时,方针对象的功效是在容器中运转的(这就是为何我们说它是散布式的缘故原由)。客户端和方针对象经由过程尺度的收集协定通讯。这些特征就为一些机制供应了时机能够参与到办法挪用之间完成负载平衡和生效转移。
如,扫瞄器经由过程HTTP协定挪用JSP对象,JSP运转在WEB服务器中,扫瞄器只必要前往了局而不体贴它是怎样运转的。在上述场景中,一些工具就能够在扫瞄器与WEB服务器之间完成负载平衡和生效转移的功效。在J2EE平台,散布式手艺包含:JSP(Servlet),JDBC,EJB,JNDI,JMS,WEBService等。负载平衡和生效转移就产生在这些散布式办法被挪用时。在后续部分我们将具体会商这些手艺。
来自:http://blog.csdn.net/ESoftWind/archive/2006/10/19/1341089.aspx译者:ESoftWind
在1995年5月23日以“Java”的名称正式发布了。 |
|