【问题标题】:Store infrequently changing info in Spring App在 Spring App 中存储不经常更改的信息
【发布时间】:2020-05-26 01:08:52
【问题描述】:

我正在开发一个微服务(Spring boot),它需要存储一些不经常更改的静态信息(每季度一次)。数据(下)是关于公司报告的,看起来像

reportId#1: "frequency"="daily","to":"some email ids"
reportId#2: "frequency"="weekly", "to":"some emailids"

如您所见,数据中的条目基本上是一个报告 ID,相关属性是报告频率和接收者的电子邮件 ID。

我的问题是.. 存储这些信息的最佳位置是什么?我有一些想法..这是我的看法。

a) 像 MongoDB 这样的 NoSQL DB 似乎是一个不错的选择。我可以创建一个集合并将其存储在那里并在应用程序启动期间检索一次。但是我想,创建一个集合来存储这个静态信息是否是一个不错的选择?

b) Redis 似乎是另一个不错的选择。我可以为上述数据集创建一个模板并将其存储在那里。我可以根据 reportId 查询 Redis 以检索频率和发件人列表。

c) 将其存储在类路径中的文件中,并在应用启动时加载。缺点是,每当此报告列表发生更改时,我都必须重新部署应用程序并在文件中进行新更改。我相信将此信息外部化到 Mongo 或 Redis 是更好的选择。

d) 该应用程序正在 AWS 中运行..所以我什至可以将其存储在 S3 存储桶中的文件中。

想知道你的看法吗?

【问题讨论】:

    标签: spring spring-boot nosql spring-data microservices


    【解决方案1】:

    由于配置只会每季度更改一次,因此不需要监听数据库。您应该考虑 Apache commons 配置。它将允许您从文件加载配置更改,而无需重新启动应用程序。

    http://commons.apache.org/proper/commons-configuration///userguide/howto_reloading.html

    【讨论】:

    • 我正在谈论的应用程序在 docker 容器中运行..所以我需要将该文件放在打包文件中的某个位置。我打算将该文件保留在应用程序可安装文件之外。
    猜你喜欢
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2017-12-01
    • 2010-11-10
    • 2012-01-26
    相关资源
    最近更新 更多