当应用程序集群时在两个 JVM 之间共享数据
Share data between two JVMs when application is clustered
我正在开发一个 spring-boot 应用程序,它可以集群成许多实例。
会话数据由Spring Session + Hazelcast 存储和处理,但问题在于这种情况。我有一个包含一组对象的 class:
@ServerEndpoint(value="/chat/{username}")
public class ChatEndpoint {
private Session session;
private static Set<ChatEndpoint> chatEndpoints
= new CopyOnWriteArraySet<>();
private static HashMap<String, String> users = new HashMap<>();
@OnOpen
public void onOpen(
....
}
@OnMessage
public void onMessage(Session session, Message message)
throws IOException {
....
}
....
}
在这种情况下,数据在 JVM 的每个实例上都是本地可用的。我怎样才能让这些数据在所有 JVM 之间共享?
由于您的技术堆栈中已经有 Hazelcast,请使用 caching facility of Hazelcast:
Hazelcast is the leading in-memory data grid solution. Its java
caching solution enables organizations to predictably scale
mission-critical enterprise applications by providing in-memory access
to frequently used data. Hazelcast stores frequently accessed data
in-memory and across an elastically scalable data grid. This enables
any network of machines to dynamically cluster and pool both memory
and processors to accelerate application performance.
您可以将数据集放入使用Hazelcast 创建的缓存中,然后访问集群中其他节点上的数据。
我正在开发一个 spring-boot 应用程序,它可以集群成许多实例。
会话数据由Spring Session + Hazelcast 存储和处理,但问题在于这种情况。我有一个包含一组对象的 class:
@ServerEndpoint(value="/chat/{username}")
public class ChatEndpoint {
private Session session;
private static Set<ChatEndpoint> chatEndpoints
= new CopyOnWriteArraySet<>();
private static HashMap<String, String> users = new HashMap<>();
@OnOpen
public void onOpen(
....
}
@OnMessage
public void onMessage(Session session, Message message)
throws IOException {
....
}
....
}
在这种情况下,数据在 JVM 的每个实例上都是本地可用的。我怎样才能让这些数据在所有 JVM 之间共享?
由于您的技术堆栈中已经有 Hazelcast,请使用 caching facility of Hazelcast:
Hazelcast is the leading in-memory data grid solution. Its java caching solution enables organizations to predictably scale mission-critical enterprise applications by providing in-memory access to frequently used data. Hazelcast stores frequently accessed data in-memory and across an elastically scalable data grid. This enables any network of machines to dynamically cluster and pool both memory and processors to accelerate application performance.
您可以将数据集放入使用Hazelcast 创建的缓存中,然后访问集群中其他节点上的数据。