在 Spring Boot 应用程序中,我在内存中保留了一个 TreeMap。我每秒执行大约 10,000 次操作,并且可能会增加。为了提高性能,我将数据保存在内存中。我希望我的应用程序能够在应用程序重新启动时从相同的状态启动。
我可以为此找到一些方法。
- 将数据保存在 hazelcast 上。在这种情况下,除非 hazelcast 死了,否则我不会冒险丢失数据,但是如果 hazelcast 死了,我将无法恢复数据。此外,我认为在 Hazlecast 上同步这么多操作是没有意义的。
- 将事件同步到数据库。在这里,我的数据丢失风险非常低。但是,我需要在每次操作后执行查询。这可能会影响性能。另外,我需要处理数据库更新的异常。
- 批量同步数据 我在这里只能找到一个现成的解决方案,MapDB。我打算尝试一下,但我还没有尝试过。如果有更可靠、优化的接收器解决方案也使用 db 而不是文件,我更愿意使用它。
有什么建议可以解决这个问题吗?