java - 集群环境中的 EJB session bean 池

标签 java ejb

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

最佳答案

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

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

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

具体说说EJB服务;负载平衡是由EJB 客户端的Stub 完成的,Stub 有一个包含集群节点IP 的列表。每次客户端需要发出请求时,Stub 都会从列表中选择一个 IP。如果一个节点出现故障,他的 IP 将不可用,直到该节点恢复。

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

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

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

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

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

注意:EJB 池是其他应用服务器服务,与集群无关。

关于java - 集群环境中的 EJB session bean 池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17470151/

相关文章:

java - HttpUrlConnection getOutputStream 抛出 IOException

java - 十六进制到十进制的读写?

java - 无法导入 javax.ejb.* 包

jakarta-ee - @Remove 方法在有状态 EJB 中的用途

java - 正则表达式组不适用于多个地址

java - 从 WAR 中的其他 Maven 模块导入 Spring bean?

ejb - EJB3 和 JNDI 查找中的 SessionContext.getBusinessObject()

jakarta-ee - @PreDestroy 是否在 JavaEE 6 中的 @PostConstruct 异常后被调用?

java - struts2-core ejb模块之间共享依赖

java - 插入最大日期(独立于数据库)