设计实时更新的动态对象的最佳方法是什么?

时间:2017-11-17 09:46:43

标签: java spring-mvc tomcat architecture

我有一个问题,我想从某个时候解决。假设有一个Web应用程序,其页面包含许多输入字段。假设有许多并发用户访问该页面并在所述输入中输入数据。当一个用户编辑一个字段时,改变应反映在所有其他用户界面中。有人能指出我正确的方向或任何网络资源来完成这项工作。目前还有两个负载平衡的tomcat节点托管Web应用程序,我想到了创建一个公共动态对象来保存数据。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

你的问题更像是建筑问题。如何在GUI#1中执行操作时自动更新第二个GUI?

您可能知道如何将操作转发到其中一个tomcat实例。第一个问题是如何将此操作广播到所有服务器实例。您可以将其写入数据库并让每个实例定期轮询,但这将是糟糕的设计。您可能需要保留数据,但如果您需要让所有实例了解更新,我建议使用消息队列(https://de.wikipedia.org/wiki/Java_Message_Service#JMS-Provider)。

您的问题的第二部分是如何将更新推送回所有浏览器。有很多框架可以实现这一目标。示例:https://en.wikipedia.org/wiki/Comet_(programming)。 Java 9支持您可以使用的全新技术:https://en.wikipedia.org/wiki/WebSocket。快速和肮脏的解决方案将是一个常规的javascript轮询。

您基本上必须在服务器和客户端之间决定简单轮询和更高级的推送技术。

你也可以选择不自己实现它并使用类似的东西:https://firebase.googleblog.com/2017/10/introducing-cloud-firestore.html