自动配置Java EE应用集群的装置和方法
技术领域
本发明涉及Java EE应用技术领域,尤其是涉及一种自动配置Java EE应用集群的装置和方法。
背景技术
越来越多的关键任务和大型应用运行在Java EE(Java Platform,Enterprise Edition)平台上,这些关键应用往往要求很高的可用性和可伸缩性。Java EE集群技术是Java EE产品提供商用于提高Java EE产品可用性和可伸缩性,以及实现负载均衡最常用的方式。
图1描述了现有Java EE集群系统100。客户端101发出应用请求102,路由器和负载均衡器103基于集群列表104将应用请求102发送给运行在节点群107上的应用集群109。节点群107包括数个节点108,节点108可以是物理主机,也可以是虚拟主机。每个节点108通常运行一个Java EE应用服务器,每个应用服务器部署多个Java EE应用110,多个节点中的同一应用构成一个应用集群109。在图1中,存在两个应用集群,其中一个应用集群109中的应用为“b”,另一个应用集群中的应用为“a”。
在配置上述应用集群109时,首先通过应用部署单元106选择目标节点108,并在目标节点108上部署应用110,然后通过集群配置模块105配置集群列表104,集群列表104中的信息包括应用集群109的节点列表和节点负载因子。如果在应用集群109中增加或者减少一个节点108,则需要通过集群配置模块105手动修改应用集群109的节点列表。
由于配置繁琐,系统100不适用应用集群109规模较大时的环境,而且不支持应用集群的动态伸缩。然而,应用的负载通常是动态变化的,具有一定的突发性。系统100若按照负载峰值配置应用集群,会造成大量资源的浪费;若按照负载均值配置应用集群,则在负载高峰期会造成服务质量的下降和用户的流失。此外,在系统100中,应用请求根据预设的静态负载因子选择目标节点,不能根据节点的实际负载情况来分发应用请求。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种自动配置Java EE应用集群的装置和方法,使得在部署新节点、节点失效或者在节点上部署应用之后,系统可以自动地完成应用集群的重新配置,并实现自适应的动态负载均衡。
(二)技术方案
为了解决上述技术问题,本发明提供了一种自动配置Java EE应用集群的装置,包括多个节点的节点群、运行在节点群上的应用集群,每个节点上运行一个Java EE应用服务器,每个应用服务器上部署多个Java EE应用,所述装置还包括:存储单元、代理单元、集群自动管理单元、负载均衡单元、应用部署单元;
存储单元用于存储节点列表、节点的负载因子、应用集群及其位置的列表;
代理单元用于监控Java EE应用服务器及其内部容器的状态,一旦发现状态发生改变则发送信息修改消息给集群自动管理单元,并周期性地计算节点的负载因子,并发送信息修改消息给集群自动管理单元;
集群自动管理单元用于维护存储单元中所存储的信息,当接收到代理单元的消息,根据所述信息修改消息对存储单元中变化的信息做相应的修改;
负载均衡单元用于接收客户端发送的应用请求,并根据从存储单元获得的应用集群的位置列表及该应用集群所在节点的负载因子选择目标节点,并将应用请求转发给目标节点;
应用部署单元提供应用部署功能,用于对应用进行部署,在部署应用时从存储单元获取可选择的节点列表。
优选地,所述节点是物理主机或虚拟主机。
本发明还提供了一种利用所述的装置自动配置Java EE应用集群的方法,包含以下步骤:
S1、代理单元实时监控Java EE应用服务器及其内部容器的状态,一旦发现状态发生改变则发送信息修改消息给集群自动管理单元;
S2、集群自动管理单元收到所述信息修改消息后自动更新存储单元中存储的信息;
S3、负载均衡单元接收到客户端发送的应用请求后,根据从存储单元获得的应用集群列表及其节点的负载因子选择目标节点,并将应用请求转发给目标节点。
优选地,在步骤S1之前还包括步骤S0、在节点刚启动时,节点的代理单元将用于获取节点所在主机地址和端口的消息以组播的方式发送给集群自动管理单元,集群自动管理单元收到组播消息后将该节点的主机地址和端口发送给节点的代理单元,从而实现节点的自动发现。
优选地,所述监控Java EE应用服务器及其内部容器的状态发生变化包括:节点地址发生变化、Java EE应用服务器启动或暂停、应用的部署和解部署。
优选地,步骤S1与S2之间还包括步骤S1’:代理单元在Java EE应用服务器端周期性地根据默认或者自定义的负载度量标准计算节点的负载因子的步骤。
优选地,在步骤S1’与S2之间还包括步骤S1”:代理单元向集群自动管理单元发送表明节点处于活动状态的心跳消息。
优选地,在步骤S2与S3之间还包括步骤S2’:集群自动管理单元根据预设的超时时间和各节点最近一次收到的心跳消息判定节点是否失效。
在判定节点是否失效之后,集群自动管理单元主动发送应用请求给代理单元,以确认节点是否失效。
(三)有益效果
本发明的技术效果主要为:(1)通过实现自动发现Java EE应用服务器节点和对节点状态的实时监控来获取节点和应用状态的变化信息,然后根据变化信息相应地修改应用集群的配置,从而能够随着应用部署的变化而自动配置Java EE应用集群。(2)提供了一个在JavaEE应用服务器端根据负载和资源的情况计算负载因子从而分发应用请求的动态负载均衡方法,与现有技术中采用静态的负载因子的方法相比,所能达到的负载均衡效果更优。
附图说明
图1为根据现有技术实现的集群系统示意图;
图2根据本发明的实施例实现的能够实现动态配置的集群系统示意图;
图3是本发明的方法流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细说明。以下实施例用于说明本发明,但不用来限制本发明的范围。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
图2描述了根据本发明实施例的系统200,其中根据应用集群209在主机群206中的位置及其节点208的负载因子,使用负载均衡单元203从多个客户端201向应用集群209传送应用请求202。特别地,代理单元211(图2中简写为“代理”)实时监控节点208的状态和周期性计算负载因子,在发生变化时及时通知集群自动管理单元213,集群自动管理单元213自动更新存储单元205中的集群列表、节点位置及负载因子204和节点列表212。
在图2中,节点4是刚启动的节点,其应用服务器上已部署应用“b”之后,用户通过应用部署单元207在节点3和节点4上部署了应用“c”,对节点3上的应用“a”进行解部署。
当节点4启动成功时,代理单元211发送包含用于获取主机地址和端口的组播消息,集群自动管理单元213收到组播消息后将自己的地址和端口告诉节点4。在获得集群自动管理单元213的主机地址和端口后,代理单元211将节点4上已部署的应用“b”发送给集群自动管理单元213。集群自动管理单元213收到更新消息后更新存储单元205中的集群列表、节点位置及负载因子204和节点列表212:在节点列表中增加节点4,在应用集群209的列表中增加节点4、节点4的地址和负载因子。
用户通过应用部署单元207选择在节点3和节点4上部署应用“c”。当节点3和节点4的代理单元211发现节点上部署了应用“c”,分别将操作类型“部署应用”和部署的应用“c”通知集群自动管理单元213。集群自动管理单元213收到更新消息后,确定节点3和4已经在节点列表212中,仅需更新存储单元205中的集群列表、节点位置及负载因子204:增加应用c(210)组成的应用集群,在应用集群的列表中增加节点3和节点4。
此后,用户通过应用部署单元207在对节点3上的应用“a”进行解部署。当节点3的代理单元211发现节点上的应用“a”被解部署时,将操作类型“解部署应用”和被解部署的应用“a”发送给集群自动管理单元213。集群自动管理单元213收到更新消息后,更新存储单元205中的集群列表、节点位置及负载因子204:在应用a组成的应用集群的列表中删除节点3。
本发明还提供了一种利用所述的装置自动配置Java EE应用集群的方法,包含以下步骤:
S1、代理单元实时监控Java EE应用服务器及其内部容器的状态,一旦发现状态发生改变则发送信息修改消息给集群自动管理单元;
S2、集群自动管理单元收到所述信息修改消息后自动更新存储单元中存储的信息;
S3、负载均衡单元接收到客户端发送的应用请求后,根据从存储单元获得的应用集群列表及其节点的负载因子选择目标节点,并将应用请求转发给目标节点。
优选地,在步骤S1之前还包括步骤S0、在节点刚启动时,节点的代理单元将用于获取节点所在主机地址和端口的消息以组播的方式发送给集群自动管理单元,集群自动管理单元收到组播消息后将该节点的主机地址和端口发送给节点的代理单元,从而实现节点的自动发现。
优选地,所述监控Java EE应用服务器及其内部容器的状态发生变化包括:节点地址发生变化、Java EE应用服务器启动或暂停、应用的部署和解部署。
优选地,步骤S1与S2之间还包括步骤S1’:代理单元在Java EE应用服务器端周期性地根据默认或者自定义的负载度量标准计算节点的负载因子的步骤。
优选地,在步骤S1’与S2之间还包括步骤S1”:代理单元向集群自动管理单元发送表明节点处于活动状态的心跳消息。
优选地,在步骤S2与S3之间还包括步骤S2’:集群自动管理单元根据预设的超时时间和各节点最近一次收到的心跳消息判定节点是否失效。
在判定节点是否失效之后,集群自动管理单元主动发送应用请求给代理单元,以确认节点是否失效。
由以上实施例可以看出,本发明主要解决Java EE应用集群不能随着应用部署的变化而自动配置的问题。技术方案的要点为通过节点自动发现和对节点状态的实时监控来获取节点和应用状态的变化信息,然后根据变化信息相应地修改应用集群的配置;根据Java EE应用服务器端基于负载和资源的情况计算获得的动态负载因子分发应用请求。本发明提供的装置和方法可以实现Java EE应用动态集群和自适应的动态负载均衡,从而提高Java EE应用的可用性和可伸缩性。
本发明可用于一般的Java EE应用环境。特别地,在云计算环境中,结合云计算可伸缩的基础设施架构以及基于应用负载的资源调整策略,可以实现Java EE应用自动适应业务需求的变化。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。