|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。j2eeJ2EEclustering2
集群和堕落恢复服务
在一台server上供应J2EE服务比拟在全部集群中供应来讲是微乎其微的.鉴于集群手艺的庞大性,每一个applicationserver有本人独到的完成体例.你应当向供给商懂得他们怎样完成集群和entitybean,statelesssessionbean,statefulsessionbean和JMS的堕落恢复.很多供给商传播鼓吹本人撑持集群化组件,但他们对此的界说常常扳连到集群中的组件.比方,BEAWebLogicServer5.1撑持集群化的statefulsessionbean,但假如server自己溃散了,其上一切形态也丧失了.客户只得从头创立statefulsessionbean,使得本来的在集群中就不成用了.直到BEAWebLogic6.0公布,statefulsessionbean才完成内存复制来集群化和堕落恢复.
一切applicationservers撑持EJBclustering,但对能够设置的主动堕落恢复的撑持有很年夜的分歧.现实上.有些applicationservers其实不撑持EJBclient的主动堕落恢复.比方,SybaseEnterpriseApplicationServer撑持statefulsessionbean堕落恢复,条件是你从数据库或经由过程序列化loadbean的形态.如后面所提到的,BEAWebLogic6.0经由过程内存复制bean的形态来撑持statefulsessionbean的不对恢复.年夜多半applicationserver能够在集群中运转JMS,但对团体定名的Topics和Queues不供应负载平衡和堕落恢复.如许,你大概就必要购置可集群的JMS产物,如SonicMQ,来取得Topics和Queues的负载平衡.
另外一个很主要的思索要素,我们如今要提到的是:HttpSession堕落恢复.
HttpSession堕落恢复
当本来为用户创立session的服务器溃散了,HttpSession堕落恢复同意用户无缝地从另外一台server上取得session信息.BEAWebLogicServer完成了session信息内存复制,而HPBluestoneTotal-e-Server接纳会合式sessionserver,它带有HA的备份.SilverStreamApplicationServer和SybaseEnterpriseApplicationServer接纳会合式数据库或文件体系,每一个applicationservers都从中读写.
用数据库/文件体系完成的session耐久性的次要弱点在于:当存储年夜的或良多对象在session中时无限的伸缩性.用户每次向HttpSession增添一个对象,session中一切的对象都要序列化并写进数据库或共享的文件体系.年夜多半用数据库完成session耐久化的applicationserver都主意只管罕用session存储object,但这会限定Webapplication的布局和计划,出格是用HttpSession存储用户数据时.
基于内存的session耐久性把内存中的session信息写到一个备份服务器上,有两种做法.第一种把HttpSession信息写到一个会合式形态服务器(centralizedstateserver).集群中的一切呆板都把HttpSessionobjects写到这台server上.第二种办法,集群中每一个节点恣意地选择一个节点存储内存中的session信息.每一个用户向HttpSession增添object,该object被独自序列化在写进那台backupserver.
下面两种办法中,假如集群中的呆板数较少,用专门的stateserver比恣意指定backupserver要好,如许能够节俭CPU来处置transaction和静态网页的天生.
另外一方面,当集群的呆板数很年夜时,专门的stateserver就成为瓶颈,而向恣意指定的backupserver复制内存的损耗将跟着呆板数的增加而线性增加.当增添呆板时,用专门的stateserver,你必要为它加上更多的RAM和CPU.用恣意指定的backupserver,你仅仅增添呆板罢了,session会均匀地散布在一切呆板之间.基于内存的耐久化供应了天真的Webapplication计划,范围和高牢靠性.
如今我们将反省一下单一点失利.
单一点失利
未供应备份的集群服务会形成单一点失利,他们会形成全部集群或部分使用溃散.比方,WebLogicJMS在集群中仅能有一个Topic运转在一台呆板上.假如那台呆板可巧溃散了,那使用中依附JMSTopics的部分就不克不及事情,直到另外一个WebLogicinstance启动起来(注重只要durablemessage才干在新的serverinstance启动时被发送.)
反省一下你的集群是不是存在单一点失利.假如有,你得估量一下如许是不是能满意使用需求.
上面说起伸缩拓扑.
天真的伸缩拓扑
集群还必要天真的拓扑结构.年夜多半applicationserver还能够充任HTTPserver,见.
.多合一拓扑
当你的website年夜多半是静态网页时,这类布局不错.但是,当年夜多半是静态页面时,要扩大网站的价值就十分高贵了,由于你要增添applicationserver用于静态HTML页面哀求.以是,得当的做法是:要扩大静态部分,增添Webserver,要扩大静态部分,增添applicationserver,如.
.分开的拓扑
上图的布局次要的缺点在于:增添了静态页面哀求提早.可是比拟天真的自力扩大而言,微乎其微.
最初,对applicationserver的会商停止于保护性.
保护性
集群中大批呆板总制止不了保护成绩:保持集群运转,关照使用的改动.Applicationservers应当供应agent来感知次要服务的溃散,然后从头启动它们.大概激活backupserver.更进一步,applicationserver应当供应一个烦琐的办法来更新和同步集群中一切的server.
SybaseEnterpriseApplicationServer和HPBluestoneTotal-e-Server供应文件和设置同步服务.SybaseEnterpriseApplicationServer在主机,组和集群level上供应这些服务.Bluestone则仅供应主机level的.假如要deploy年夜的application或良多application,就要花很长的工夫.BEAWebLogicServer仅供应设置同步.这二者中,设置同步加上storageareanetwork更能较好地事情,由于能够把变更写进一个逻辑存储介质,如许一切的呆板就可以吸收到applicationfile的变更.每台呆板只必要从一台会合式configurationserver上吸收设置变更就能够了.SilverStreamApplicationserver用dynamicclassloader从数据库中载进applicationfiles和configuration.dynamicclassloader使得运转中的applicationserver吸收变更更便利.
我们已会商了applicationserver必要思索的主要特性.上面就依据我们的原则对照一下4个盛行的applicationserver.
ApplicationServer对照
既然我们进修了关于集群的一样平常常识,让我们把注重力会合在各个applicationserver上,把所学的和实际天下接洽起来.我们要对照的是:
HPBluestoneTotal-e-Server7.2.1
SybaseEnterpriseApplicationServer3.6
SilverStreamApplicationServer3.7
BEAWebLogicServer6.0
每一个applicationserver的会商都包括一张HA布局图,接着是它的主要特性的小结.
HPBluestoneTotal-e-Server7.2.1
.HPBluestone7.2.1拓扑
集群一样平常特征小结:
Bluestone完成的是自力的JNDItree集群.作为plug-in运转在Webserver中的LBB,供应HTTP哀求的负载均衡和堕落恢复服务.LBB晓得哪台UBS(universalbusinessserver)上运转着甚么application,能够准确地定向流量.经由过程EJBProxyService和ProxyLBB撑持对stateful,statelesssessionbean和entitybean的办法间堕落恢复.EJBProxyService的次要弱点在于增添了每一个EJB哀求的提早,并且它同UBS运转在统一呆板上.EJBProxyService和UBSstub撑持UBS溃散的情形下的堕落恢复,可是不撑持硬件溃散的堕落恢复.后者呈现的情形下,堕落恢复是经由过程客户端设置apserver.txt或ProxyLBB对apserver.txt设置.客户真个apserver.txt内里列出了集群中一切的组件.当有新的组件到场时,一切客户必要用BAM(BluestoneApplicationManager)更新该文件或手工逐一主机地更新.在ProxyLBB处设置apserver.txt将用户和集群中的变更断绝,但为EJB哀求引进了新的提早.HPBluestone是独一的一个供应集群化和负载平衡JMS的applicationserver.
集聚集中工夫:
绝对会合式和全局共享式JNDItree而言,起码.
HttpSession堕落恢复:
会合式stateserver和backupstateserver或数据库,内存复制.
单一点失利:
无
天真的集群拓扑:
撑持一切集群拓扑.
保护:
Bluestone在保护方面赛过别的server.Bluestone供应一个静态使用加载器(dynamicapplicationlauncherDAL),供LBB在使用程序或呆板溃散时挪用.DAL可以在主机或备份机上重启使用程序.别的,Bluestone还供应一个设置和公布工具,叫BluestoneApplicationManager(BAM),用来deployapplicationpackage和它们的相干文件.这个工具独一的弱点是一次只能设置一台呆板--对年夜型集群用起来就不便利了.
SybaseEnterpriseApplicationServer3.6
SybaseEnterpriseApplicationServer3.6拓扑
集群一样平常特征小结:
EnterpriseApplicationServer完成的是会合式JNDItree集群,用硬件负载均衡器来完成HTTP哀求的负载平衡和堕落恢复.一个集群中的两台nameservers各自能够独自处置HTTPrequest,可是为功能思索,最好仍是专门处置JNDIrequest.
EnterpriseApplicationServer3.6没有Webserverplug-in,但到仲春的3.6.1EBF(ErrorandBugFixes)版就会有了.它撑持stateful,statelesssessionbean和entitybean的办法间堕落恢复.记着EnterpriseApplicationServer病危供应任何监督代办署理或静态使用程序加载器,你必要为单一点失利或主动server重启购置第三方产物,如VeritasClusterServer.EnterpriseApplicationServer不撑持JMS.
集聚集中工夫:
会合工夫取决于nameserver的数目和成员server的数目.在三种集群完成体例中,会合式JNDItree集群的会合度是最差的.只管会合工夫目标很主要,server能够在把对象bind到nameserver的同时就入手下手吸收哀求(固然,保举最好不要如许做).
HttpSession堕落恢复:
HttpSession堕落恢复用会合式数据库完成,不撑持内存复制.
单一点失利
假如运转多台nameserver,则没有单一点失利.
天真的集群拓扑:
拓扑布局受限于没有Webserverplug-in.
保护:
Sybase利用文件和设置同步,为applicationdeployment供应了最好的选择.它能够在component,package,servlet,application,乃至Webapplicationlevel上同步.你还能够选择同步全部集群,一组呆板或单个主机.很棒的功效!可是假如集群中的呆板太多,同步就要延续相称长一段工夫.它的一个缺点是没有静态使用程序加载服务,这意味着你必需购置第三方产物,如VeritasClusterServer.
SilverStreamApplicationServer3.7
.SilverStreamApplicationServer
dispatcher拓扑.
.SilverStreamApplicationServer
WSI拓扑
集群一样平常特征小结:
当设置SilverStream集群时,有两种设置计划:基于dispatcher的和基于Webserver集成模块(Webserverintegration-moduleWSI)的.在基于dispatcher的集群中,用户毗连dispatcher或基于硬件的dispatcher--比方Alteon180e,然后dispatcher将HTTP重定向到及大众的一台呆板上.从谁人时候起,用户与那台server就在物理上绑定了.故这类体例下,一个集群和一台server没有区分.次要的弱点在于:静态部分和静态部分不克不及自力地扩大.
在基于WSI的集群中,用户先毗连dispatcher,后者把持webserver的负载均衡和HTTP哀求不对恢复.每一个Webserver有一个plug-in指向一个位于集群前真个负载均衡器.WSI集群不利用重定向,每一个HTTP哀求能够在任何一台呆板上被均衡负载.副负载均衡器仅当applicationserver层溃散时用.AWSI布局优于dispatcher布局:能自力扩大静态和静态部分.可是,次要弱点是必要ArgoPersistenceManager作HttpSession堕落恢复.在任何一种体例中,用户都不克不及失掉办法间的不对恢复.EJB堕落恢复完整成为程序员的义务.最初,SilverStream不撑持集群化JMS.
HttpSession堕落恢复:
SilverStream用会合式的数据库和ArgoPersistenceManager供应HTTPSession堕落恢复.不幸的是,这个办理计划具有一切权成绩.不利用惯例的把session信息存进数据库的办法,而利用一个产物的ArgoPersistenceManagerclass--一年夜缺憾.
集聚集中工夫:
绝对会合式和全局共享式JNDItree集群,起码.
单一点失利:
以上布局皆没有.
天真的集群拓扑:
撑持一切集群拓扑.
保护:
缓存办理器和静态class-loader为deploy和更新运转着的使用程序供应了便利的路子,基础不打搅以后举动的client.当集群中的一台server上的使用更新时,更新的部分写进数据库,然后缓存办理器把一切呆板上的缓存设为有效,强制它们下次从头猎取新的application.只要一个弱点,就是要花工夫把使用从数据库中掏出,调进内存中.
BEAWebLogicServer6.0
.BEAWebLogicServer6.0
集群一样平常特征小结:
WebLogicServer完成的是全局共享式的JNDItree集群.这类事情体例下,当一台server启动时,把本人的JNDI
tree写进全局共享的JNDItree.然后server用这个全局的tree的备份来供应服务,利用户能感知集群中的一切对象.用户用的stub能感知全部集群,意味着它们向原定的server哀求,但同时具有别的applicationserver上复成品的信息.恰是因为这点,stub能够通明地举行不对恢复.WebLogicServer的一个举世无双的特征就是statefulsessionbean的内存复制和可设置的EJBremoteobjects主动堕落恢复.WebLogic把clusterable界说为一个在集群中的服务.JMS就是如许一个服务,可是每一个TopicorQueue仅在一台server上运转,以是不克不及负载平衡和堕落恢复--WebLogicJMS完成的一年夜弱点.
HttpSession堕落恢复:
WebLogicServer经由过程向恣意指定的backupserver或databaseserver复制内存中形态来完成HttpSession堕落恢复.集群中地每台呆板选择一台分歧的呆板.假如主server溃散了,backupserver酿成主server,再从头选择一台backupserver.WebLogic有一个独一的特征:cookie的自力性.HPBluestone和EnterpriseApplicationServer都必要cookie才干举行HttpSession堕落恢复,可是WebLogic可使用URL中加密的信息,把用户定向到backupserver上.
单一点失利:
JMS和Administrationserver.
天真的集群拓扑:
撑持一切集群拓扑.
保护:
WebLogic的弱势在于保护.只管BEA已在设置同步方面接纳了主动的措施,WebLogicServer仍是没有任何监督代办署理,静态使用加载器,或文件同步服务.以是你必要为单一点失利或HA购置第三方计划.假如你接纳了SAN,你就不用文件同步服务了,但年夜多半开辟者才方才入手下手熟悉到SAN的优点.
剖析
整体来讲BEAWebLogicServer6.0最为健壮,集群完成得最完全.HPBluestoneTotal-e-Server2.7.1,SybaseEnterpriseApplicationServer3.6,SilverStreamApplicationServer3.7顺次分列.
选择准确的applicationserver必要衡量折中.假如你的使用中有EJBclients(applet和applications),Webclients,对HttpSession大批利用(为了caching),请求扩大浅易和堕落恢复,你必要BEAWebLogic6.0.假如你的application必要大批利用JMS,尽年夜多半client是Webclient,Bluestone大概更好一些.从集群地角度说,SybaseEnterpriseApplicationServer3.7短少主要的集群特征,比方JMS,HttpSession内存复制,Webserverplug-in等.可是,SybaseEnterpriseApplicationServer3.7切实其实带来了文件和设置同步服务.假如你利用SAN,这些有点就微乎其微了.SilverStreamApplicationServer的集群完成得最不完全,短少集群化的JMS,HttpSession内存复制和堕落恢复等.
结论
在本文中你取得了集群的一样平常熟悉,集群的办法和主要的集群服务.我们审阅了每一个applicationserver的优弱点,会商了和集群有关的特征.有了这些常识今后,你就明白怎样创建高牢靠性和伸缩性的集群.但这仅仅是进修的入手下手,到表面找一些evaluationclusteringlicense,和applicationserver,考证一下.
第二部分中,我们要入手下手写代码,考证applicationserver供给商的答应.我们还将用J2EEJavaPetStore例程做负载和集聚集中度测试.
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。 |
|