1

我想知道 EJB 会话 bean 池在集群环境中是如何工作的,假设如果有三个集群节点并且一个节点出现故障,那么会话 bean 池将如何被复制并且相同的请求操作将在另一个节点上继续。谢谢,谢伦德拉·辛格

4

2 回答 2

4

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

构建集群的主要动机之一是为您的应用程序提供一个称为高可用性的属性,这是系统在发生硬件故障或需要维护任务(例如更新新软件版本)时继续工作的可能性。完毕。

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

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

可以看到,节点之间没有数据复制,只是负载均衡。(EJB 不知道这个过程)

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

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

这种状态复制是由一个名为分布式缓存的特殊应用程序服务器组件完成的,作为开发人员,您的主要职责是告诉应用程序服务器哪些信息(服务)需要复制,多久复制一次等。

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

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

于 2013-07-05T01:46:55.753 回答
0

集群 EJB 具有故障转移功能。@Stateful @Clustered EJB 的状态在集群节点之间复制,因此如果集群中的一个节点出现故障,其他节点将能够接管调用。

欲了解更多信息,请访问链接

于 2013-07-04T12:34:17.290 回答