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

标签 java spring-mvc tomcat architecture

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

最佳答案

您的问题更像是一个架构问题。如何根据 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 .

关于java - 设计实时更新的动态对象的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47347613/

相关文章:

java - 将跟踪模式设置为 cookie 以删除附加的 session ID,而不使用 web.xml

java - 部署 tomcat 应用程序时设置松散?

java - Spring Boot 。映射 2 个独立的项目 Controller 而忽略一个项目

java - 通过 JTable 删除 MySQL 数据库中的选定行

java - android 中的 arraylist 内的 arraylist

spring-mvc - 使用 Spring MVC 处理 MaxUploadSizeExceededException

java - 使用 JRebel 6.0.0 部署时,在 Spring 4.1.2 更新后找不到资源

apache 通过直接点击 url 来阻止查看用户的内容

java - 有没有办法将 JFileChooser 设置为从某个文件开始?

java - 扩展线程然后对任务进行排队的 ExecutorService