我正在开发一个Spring-boot应用程序,该应用程序可以集群为许多实例。
会话数据是由Spring Session + Hazelcast存储和处理的,但问题出在这种情况下。我有一个包含一组对象的类:
@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是领先的内存数据网格解决方案。它的java
缓存解决方案使组织能够按预期地扩展
通过提供内存访问来执行关键任务企业应用程序
到经常使用的数据。 Hazelcast存储经常访问的数据
内存中以及跨弹性可伸缩数据网格。这使
任何可动态集群和池化两个内存的机器网络
和处理器以提高应用程序性能。
您可以将数据集放入使用Hazelcast创建的缓存中,并访问集群中其他节点上的数据。