【发布时间】:2015-12-01 08:01:07
【问题描述】:
目前,我正在开发一个基于 Spring Boot 的应用程序。其中一个要求是应用程序应该是实时的,并且我需要某种基于InvertedRadixTree 的独特数据结构(不完全是这个,但数据结构正在使用树来回答查询)。我为 crud 操作开发了一个管理 UI。 cruds的数量并没有那么多,基本上都会由OPs员工完成。我开发的数据结构是线程安全的,并由数据库(即 mongodb)同步,因为这是唯一使用此数据库的应用程序,所以我不担心其他应用程序会弄乱数据。我唯一的问题是,如果我们有这个应用程序的多个实例,其中一个在 mongodb 上执行一些 crud 操作;虽然这个实例的数据结构会被更新,但另一个实例不会被更新。我创建了一个调度程序,每 12 小时更新一次数据库中的数据结构,但我正在寻找另一种解决方案,例如在所有实例之间共享数据结构。我非常感谢每一个建议。
编辑:搜索后,我发现更新整个数据结构并不需要太多。我写了一些测试用例,并在 mongodb 中放入了大约一百万条我的班级记录并获取了整个集合。提取和数据结构创建花费了不到一秒钟的时间。所以我最终使用了这种方法,而不是使用一些复杂的方法来同步内存和数据库。
【问题讨论】:
-
将数据结构声明为静态怎么样???
-
你可以在数据库更新时收到推送更新:stackoverflow.com/questions/9691316/…,这会阻止你一直轮询它。
-
@HaseebAnser:举例来说,我并不是指“对象”与类。你可以考虑两个不同的服务器/机器/计算机运行相同的程序!
-
@PaulK。谢谢你。这不是我要找的。不过这个想法很有趣。
-
@HaseebAnser:就像我们有两个不同的服务器,每个服务器都有自己的 tomcat 服务器并运行相同的 war 文件。
标签: java spring spring-boot scheduling in-memory