在同一java应用程序的不同实例之间共享数据结构的最佳方法?

在同一java应用程序的不同实例之间共享数据结构的最佳方法?,java,spring,spring-boot,scheduling,in-memory,Java,Spring,Spring Boot,Scheduling,In Memory,目前,我正在开发一个基于spring boot的应用程序。其中一个要求是,应用程序应该是实时的,我需要基于某种独特的数据结构(不完全是这样,但数据结构使用树来回答查询)。我为crud操作开发了一个管理UI。积垢的数量不多,基本上由老年退休金计划的员工来处理。我开发的数据结构是线程安全的,由数据库(即mongodb)进行同步,因为这是唯一使用此数据库的应用程序,所以我不担心其他应用程序会弄乱数据。我唯一的问题是,如果我们有这个应用程序的多个实例,其中一个在mongodb上做一些crud操作;虽然将

目前,我正在开发一个基于spring boot的应用程序。其中一个要求是,应用程序应该是实时的,我需要基于某种独特的数据结构(不完全是这样,但数据结构使用树来回答查询)。我为crud操作开发了一个管理UI。积垢的数量不多,基本上由老年退休金计划的员工来处理。我开发的数据结构是线程安全的,由数据库(即mongodb)进行同步,因为这是唯一使用此数据库的应用程序,所以我不担心其他应用程序会弄乱数据。我唯一的问题是,如果我们有这个应用程序的多个实例,其中一个在mongodb上做一些crud操作;虽然将更新此实例的数据结构,但不会更新其他实例。我创建了一个调度器,每12小时从数据库更新一次数据结构,但我正在寻找另一种解决方案,比如在所有实例之间共享数据结构。我真的很感激每一个建议


编辑:在四处搜索之后,我发现更新整个数据结构不需要花费太多时间。我写了一些测试用例,在mongodb中放了大约一百万条我的类记录,并获取了整个集合。抓取和数据结构创建不到一秒钟。因此,我最终使用了这种方法,而不是使用一些复杂的方法来同步内存和数据库。

其中一个建议是可以使用共享数据库。每次有任何应用程序更新时,都应该在数据库中更新。每次你必须使用数据时,你都必须从数据库中加载新数据。这是我认为最简单的方法

建议之一是可以使用共享数据库。每次有任何应用程序更新时,都应该在数据库中更新。每次你必须使用数据时,你都必须从数据库中加载新数据。这是我认为最简单的方法

我会使用redis之类的工具,并监听为进行更改的实例触发的事件,如果数据不经常更新,则在每个实例上使用一些本地缓存我会使用redis之类的工具,并侦听为进行更改的实例触发的事件,如果数据不经常更新,则在每个实例上使用一些本地缓存

将数据结构声明为静态怎么样???更新数据库时,您可能会收到推送更新:,这将阻止您一直轮询它。@HaseebAnser:我所说的实例并不是“对象”和“类”。你可以考虑两个不同的服务器/机器/计算机运行同一个程序!@保克。非常感谢。这不是我要找的。有趣的想法。@HaseebAnser:就像我们有两台不同的服务器,每台服务器都有自己的tomcat服务器,并且运行同一个war文件。将数据结构声明为静态怎么样???当数据库更新时,您可能会收到推送更新:,这将阻止您一直轮询它。@HaseebAnser:我指的不是“对象”对阶级。你可以考虑两个不同的服务器/机器/计算机运行同一个程序!@保克。非常感谢。这不是我要找的。这个主意很有趣。@HaseebAnser:就像我们有两个不同的服务器,每个服务器都有自己的tomcat服务器,并且运行相同的war文件一样。