我正在开发一个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创建的缓存中,并访问集群中其他节点上的数据。

10-02 00:29
查看更多