集群环境中的EJB会话bean池

时间:2013-07-04 12:18:39

标签: java ejb

我想知道EJB会话bean池如何在集群环境中工作,假设是否有三个集群节点和一个节点发生故障,那么会话bean池将如何被复制,而另一个请求操作将在另一个节点上继续节点。谢谢,Shailendra Singh

2 个答案:

答案 0 :(得分:4)

回答你的问题有点难,因为我认为你需要更多关于群集的背景,但我会尝试......

构建集群的主要动机之一是为您的应用程序提供一个名为High Availavility的属性,即使发生硬件故障或维护任务(例如更新新软件版本),系统仍可继续工作需要做。

实现此目的的最简单方法是使用负载平衡,这意味着当群集节点发生故障时,传入的请求将由其他活动节点管理。

具体谈论EJB服务;负载均衡由EJB客户端Stub完成,Stub有一个包含集群节点IP的列表。每次客户端需要发出请求时,Stub都会从列表中选择一个IP。如果节点发生故障,则在节点恢复之前,其IP将不可用。

如您所见,节点之间没有数据复制,只是负载平衡。 (EJB不知道这个过程)

如果群集是异构的,由于客户端需要一个名为HA-JNDI的服务来查找Stub,事情会变得更复杂。

有些应用程序(绝大多数)需要特殊要求,因此负载均衡有时是不够的;例如当节点发生故障时,将处理下一个客户端请求的新节点必须知道损坏节点正在管理的信息状态。如果先前在至少其他群集节点中复制了信息,则可以执行此操作。添加状态复制时,您的应用程序是Fault Tolerance。

此状态复制由名为Distributed Cache的特殊appserver组件完成,作为开发人员,您的主要职责是告诉appserver需要复制哪些信息(服务),等等。

我希望这可以帮助你作为下一次阅读的起点。

注意:EJB池是其他appserver服务,与Cluster无关。

答案 1 :(得分:0)

群集EJB具有故障转移功能。 @Stateful @Clustered EJB的状态将在群集节点中复制,这样,如果群集中的某个节点发生故障,其他节点将能够接管调用。

了解更多信息,请访问link