java - 大量对象、分片和 Java EE

标签 java jakarta-ee rmi sharding federation

我是 Java ee 的新手,我不确定如何实现特定要求。

我需要大量(数百万)个对象来维护一堆规则和状态并为客户端提供 API。这些对象中的每一个都是长期存在的。考虑到这些东西太多了,我们可能需要将它们分散到许多 VM 中并使用 RMI 来访问它们。

我的问题是是否有 Java EE 方法来解决定位对象实例的问题,允许客户端获取对象的引用而无需知道它在哪台机器上。

我知道 JNDI,但我不确定在 JNDI 目录中注册每个对象是否合适。我是否需要编写一个可以让自己知道每个对象所属的 VM 的“定位器”库?

最佳答案

没有更具体的细节,让我冒险探索几个途径。

如果我没看错,你想要的是类似于 DHT 的东西但用于托管和查找对象(代码+数据)或服务节点,而不仅仅是原始数据。我不知道有任何这样的平台,尽管这听起来确实是个有趣的想法。

Java EE 本身(作为规范)没有指定,引用实现也没有为我认为您正在寻找的大规模分布式集群和分片提供“开箱即用”的解决方案。

Glassfish(Java EE RI)本身使用 Shoal作为集群框架,它可以使用 GrizzlyJGroups作为底层群组通信平台。

因此,在您的特定情况下,我会考虑构建并基于 JGroups 进行群组通信。然后,我们依靠 DHT 来代替中央注册表来进行服务/对象定位。看看现有的、成功的基于 DHT 的平台(memcached、Apache Cassandra)是如何实现分区和查找、容错和故障转移的,然后调整/采用它们。然后您可以使用 RMI/RPC 进行客户端-服务器(服务节点)调用。

希望我说的有道理,祝你好运!如果你自己推出这个,看看你是否可以开源它。 ;)

关于java - 大量对象、分片和 Java EE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7087806/

相关文章:

Java : Regular Expression escape Regular Expression

java - 无法使用 Oracle 数据库更改通知获取表名称

java - MagicEightBall 阵列

java - 来自 Tomcat 的不完整 HTTP 响应

java - @Transactional 在 REST 层还是在服务层?哪个更好?

java - Eclipse 无法正确复制上下文

java - 将 JFreeChart 图表保存到特定目录

java.rmi.ServerException : RemoteException occurred in server thread (ClassNotFoundException)

java - 通过 SSL 的 RMI : Handshake failure

java - 从 'remote' 异常中的通用异常链工具中排除