一种集群应用服务器的分布式热部署方法

文档序号:7662111阅读:183来源:国知局
专利名称:一种集群应用服务器的分布式热部署方法
技术领域
本发明涉及通过借助一种底层通信平台来实现集群应用服务器环境下EJB的分布式热部 署,主要是一种集群应用服务器的分布式热部署方法。
背景技术
术语"应用服务器"是指位于应用软件及操作系统、数据库之间满足一定标准的一系列 软件环境、服务及工具的集合。集群应用服务器是指各个独立的应用服务器,通过一种底层 通信平台相互连接,然而对外表现为单一的系统。比如,当我们在浏览网页的时候,在地址 拦里输入域名,浏览器就会向对应的服务器发送请求,在集群应用服务器情况下,该请求可 能被集群中的任何一台应用服务器处理,并返回信息。然而对于我们而言,只感觉到在跟一 台服务器进行交互。
EJB是Java中用于开发企业级应用的技术标准,他定义了一个用于开发和发布可重用的 服务器端组件的模型。EJB的部署是指将该EJB绑定到应用服务器,从而在接收客户端请求 时,可以调用该EJB来处理请求,并返回结果。EJB的分布式热部署是指,当一个EJB在集 群应用服务器中的任意一个节点上部署时,该EJB同时被部署到集群中的其他应用服务器上。 本项技术主要提出一种集群应用服务器下EJB分布式热部署的方法。 在集群应用服务器下,如果部署一个EJB需要把EJB手动部署到每一台服务器上的话, 不但过程繁琐,而且容易出错,可能由于疏忽,某台应用服务器并没有部署或卸载相应的EJB, 从而造成集群应用服务器的不一致现象。
分布式热部署就是为了解决这一情况而设计。当一个新节点加入集群时,它会去下载集 群中其他节点上己经部署的EJB,并在本地部署。当一个EJB在集群中的一个节点上部署时, 其他节点会自动下载该EJB,然后在本地部署;同样,当一个EJB在一个节点上被卸载时, 其他节点也会自动卸载该文件。

发明内容
本发明要解决上述技术所存在的缺陷,提供一种集群应用服务器的分布式热部署方法。
本发明解决其技术问题所采用的技术方案
这种集群应用服务器的分布式热部署方法,当一个新的应用服务器节点加入到集群中时, 它会自动去获取集群中每个节点特定目录下的所有EJB文件,然后在本地部署。当在本地部 署一个EJB时,先将该EJB在本地部署,再在集群中广播,通知集群中的其他节点下载该文
件。具体过程如下
当有一个新的应用服务器节点加入集群时-
1. 该节点首先通过底层通信平台获得集群中其他节点上的所有文件的文件名和文件版本 信息,将其存放到一张表中。
2. 逐个取出表中的文件信息,和本地已部署文件信息表进行对照,如果在本地已部署文 件信息表中没有找到该文件,或是能够找到,但是文件的版本信息比该文件的版本信息要早, 则将集群中其他节点上该文件的信息(文件内容和版本信息)获取过来,存放到一张临时表 中。
3. 逐个取出临时表中的文件信息,再次查找本地的己部署文件信息表,如果不能找到,
或是能够找到,但是其文件版本信息比该文件的版本信息要早,则将该文件下载到本地,再
进行部署,并将文件名添加到远程已部署文件信息表中;否则,不做任何操作。 当有一个新的EJB在某个应用服务器上部署时
1. 该节点首先对新EJB在本地进行部署。
2. 在部署完新EJB后,将该文件名和文件版本信息添加到本地的已部署文件信息表中。 接着,在远程巳部署文件信息表中査找该文件,如果能够找到该文件,说明该文件已经在其 他节点上部署,则不用再在集群中广播;否则,通过底层通信平台通知集群中的其他节点下 载该文件。
3. 其他节点收到消息后,首先在本地的已部署文件信息表中查找该文件,如果不能找到, 或是能够找到,但是其文件版本信息比接收到的文件版本信息要早,则将该文件下载到本地, 再进行部署,并将文件名添加到远程已部署文件信息表中;否则,不做任何操作。
当有一个EJB在某个应用服务器上被卸载时-
1. 该节点首先将该EJB在本地进行卸载。
2. 在卸载完该EJB后,将本地的已部署文件信息表中的该文件信息删除。接着,在远程 已卸载文件信息表中查找该文件,如果没有找到,说明集群中其他节点上还没有卸载该文件,
再通过底层通信平台通知集群中的其他节点卸载该文件。
3.其他节点收到消息后,首先判断该文件是否存在,如果不存在,则直接返回,不做任 何操作。否则,将该文件名添加到远程已卸载文件信息表中,并将该文件删除。
本发明有益的效果是通过以上的技术实现,能有效的实现EJB在一台机子上加载,而 能够在集群范围内部署。并且能够根据EJB的版本信息实现动态更新。同样,当一个EJB在 一个节点上被卸载时,能够在集群范围内实现反部署。同将EJB在集群中的每一个节点上进 行逐个部署的情况现比,不但方便、高效,而且不会出现各个节点部署不一致的情况。


图1为新节点获得其他节点上的所有文件信息的示意图; 图2为新节点获得其他节点上a. jar文件的内容和版本信息的示意图; 图3为节点4部署新的jar文件并通知集群中的其他节点示意图; 图4为节点4卸载jar文件并通知其他节点卸载相应的文件示意图。
具体实施例方式
下面结合附图和实施例对本发明作进一步介绍
现在我们采用钱塘应用服务器,用Jboss (应用服务器产商)开发的开源底层通信平台 jgro叩s来进行具体说明。所有EJB文件被放置在distributed目录下。 图1表示新节点加入的情况。
1. 当在新节点上启动钱塘应用服务器时,该节点首先通过jgro叩s获得节点l,节点2, 节点3上的所有文件的信息(包括文件名和文件版本信息),将其存放到一张tmp表中,tmp 表结构如图l所示-
其中distributed为需要进行分布式热部署的EJB文件存放的目录,a. jar, b. jar分别对 应两个EJB文件。
2. 取节点1中的文件(如distributed\a. jar),査找本地localD印loyed表,如果文件 不能找到,或是能够找到,但是文件的版本信息比表中的版本信息要早,则把所有节点上该 文件的信息获取过来,存放到一张list表中,list表结构如图2所示。其中文件内容以字 节的形式存储到fileContent[]。
3. 取节点l中的文件,再次查找本地的localD印loyed表,如果不能找到,或是能够找 到,但是其文件版本信息比接收到的版本信息要早,则将该文件下载到本地,再进行部署; 否则,不做任何操作。
4.重复步骤2, 3,直到遍历完整张表。
图3表示有一个新的EJB在节点4上部署的情况。
1. 节点4首先对该文件进行部署。
2. 在部署完新文件后,将该文件名和文件版本信息添加到本地的localD印loyed表。接 着,査找remoteD印loyed表,如果表中已经有该文件,说明该文件已经在节点1, 2, 3上部 署,则不用再通知;否则,通过jgroups通知节点1, 2, 3下载改文件。
3. 当节点l, 2, 3到消息后,首先査找本地的localD印loyed表,如果不能找到,或是 能够找到,但是其文件版本信息比接收到的版本信息要早,则将该文件下载到本地,再进行 部署,并将文件名添加到remoteD印loyed表;否则,不做任何操作。
其中distributed为需要进行分布式热部署的EJB文件所存放的目录。a. jar a, b. jar, c. jar分别对应三个EJB文件。
图4表示某个EJB在节点4上被卸载的情况。
1. 节点4首先将该EJB在本地进行卸载。
2. 在卸载完该EJB后,将localD印loyed表中的b. jar文件信息删除。接着,査找 remoteUnd印loyed表,如果没有找到,说明节点1, 2, 3还没有卸载该文件,于是通过jgroups 通知节点l, 2, 3卸载该文件。
3. 当节点l, 2, 3收到消息后,首先判断b. jar文件是否存在,如果不存在,则直接返 回,不做任何操作。否则,将文件名添加到remoteUnd印loyed表中,并将该文件删除。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要 求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
权利要求
1、一种集群应用服务器的分布式热部署方法,其特征在于当一个新的应用服务器节点加入到集群中时,它会去获取集群中每个节点设定目录下的所有EJB文件,然后在本地部署,当在本地部署一个EJB时,先将该EJB在本地部署,再在集群中广播,通知集群中的其他节点下载该文件。
2、 根据权利要求1所述的集群应用服务器的分布式热部署方法,其特征在于当有一 个新的应用服务器节点加入集群时(1) .该节点首先通过底层通信平台获得集群中其他节点上的所有文件的文件名和文件 版本信息,将其存放到一张表中;(2) .逐个取出表中的文件信息,和本地己部署文件信息表进行对照,如果在本地已部 署文件信息表中没有找到该文件,或是能够找到,但是文件的版本信息比该文件的版本信息 要早,则将集群中其他节点上该文件的信息获取过来,存放到一张临时表中;(3) .逐个取出临时表中的文件信息,再次査找本地的已部署文件信息表,如果不能找 到,或是能够找到,但是其文件版本信息比该文件的版本信息要早,则将该文件下载到本地, 再进行部署,并将文件名添加到远程已部署文件信息表中;否则,不做任何操作。
3、 根据权利要求1所述的集群应用服务器的分布式热部署方法,其特征在于当有一个 新的EJB在某个应用服务器上部署时(1) .该节点首先对新EJB在本地进行部署;(2) .在部署完新EJB后,将该文件名和文件版本信息添加到本地的己部署文件信息表 中。接着,在远程已部署文件信息表中査找该文件,如果能够找到该文件,说明该文件已经 在其他节点上部署,则不用再在集群中广播;否则,通过底层通信平台通知集群中的其他节 点下载该文件;(3) .其他节点收到消息后,首先在本地的巳部署文件信息表中查找该文件,如果不能 找到,或是能够找到,但是其文件版本信息比接收到的文件版本信息要早,则将该文件下载 到本地,再进行部署,并将文件名添加到远程已部署文件信息表中;否则,不做任何操作。
4、根据权利要求1所述的集群应用服务器的分布式热部署方法,其特征在于当有一个 EJB在某个应用服务器上被卸载时(1) .该节点首先将该EJB在本地进行卸载;(2) .在卸载完该EJB后,将本地的巳部署文件信息表中的该文件信息删除。接着,在远程已卸载文件信息表中查找该文件,如果没有找到,说明集群中其他节点上还没有卸载该文件,再通过底层通信平台通知集群中的其他节点卸载该文件;(3) .其他节点收到消息后,首先判断该文件是否存在,如果不存在,则直接返回,不 做任何操作。否则,将该文件名添加到远程已卸载文件信息表中,并将该文件删除。
全文摘要
本发明涉及一种集群应用服务器的分布式热部署方法,当一个新的应用服务器节点加入到集群中时,它会自动去获取集群中每个节点特定目录下的所有EJB文件,然后在本地部署。当在本地部署一个EJB时,先将该EJB在本地部署,再在集群中广播,通知集群中的其他节点下载该文件。本发明有益的效果是通过以上的技术实现,能有效的实现EJB在一台机子上加载,而能够在集群范围内部署。并且能够根据EJB的版本信息实现动态更新。同样,当一个EJB在一个节点上被卸载时,能够在集群范围内实现反部署。同将EJB在集群中的每一个节点上进行逐个部署的情况现比,不但方便、高效,而且不会出现各个节点部署不一致的情况。
文档编号H04L12/24GK101183975SQ20071015670
公开日2008年5月21日 申请日期2007年12月4日 优先权日2007年12月4日
发明者健 吴, 吴朝晖, 尹建伟, 武 李, 莹 李, 邓水光 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1