我正在开发一个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之间共享这些数据?
答案 0 :(得分:1)
由于您的技术堆栈中已有Hazelcast,请使用caching facility of Hazelcast:
Hazelcast是领先的内存数据网格解决方案。它的java 缓存解决方案使组织可以预测扩展 通过提供内存访问来实现任务关键型企业应用程序 经常使用的数据。 Hazelcast存储经常访问的数据 内存中和跨弹性可伸缩数据网格。这使得 任何机器网络,动态地集群和汇集两个内存 和处理器,以加快应用程序性能。
您可以将数据集放入使用Hazelcast创建的缓存中,并访问群集中其他节点上的数据。