目前,我正在开发基于弹簧启动的应用程序。其中一个要求是应用程序应该是实时的,我需要基于InvertedRadixTree的某种独特的数据结构(不完全是这样,但数据结构使用树来回答查询)。我为crud操作开发了一个管理UI。 OPs的数量并不多,基本上将由OP员工完成。我开发的数据结构是线程安全的,并且是由数据库(mongodb)同步的,因为这是使用这个数据库的唯一应用程序,所以我并不担心其他应用程序搞乱数据。我唯一的问题是,如果我们有这个应用程序的多个实例,并且其中一个在mongodb上做了一些crud操作;虽然此实例的数据结构将更新,但另一个实例将不会更新。我创建了一个调度程序来每12小时更新数据库中的数据结构,但我正在寻找另一种解决方案,比如在所有实例之间共享数据结构。我非常感谢你的每一个建议。
编辑:搜索后,我发现更新整个数据结构并不需要太多。我写了一些测试用例,并在mongodb中记录了我班级的一百万条记录并获取了整个集合。提取和数据结构创建只需不到一秒钟。所以我最终使用这种方法,而不是使用一些复杂的方法来同步内存和数据库。
答案 0 :(得分:0)
其中一个建议是您可以使用共享数据库。每次APP都有更新时,应该在数据库中更新。每次你必须使用数据时,你必须从数据库加载新数据。这是最简单的方法,就我而言想.. !!!
答案 1 :(得分:0)
我会使用类似redis http://redis.io/topics/pubsub的内容,并监听为实例触发的事件,如果数据不经常更新,则会对每个实例使用一些本地缓存