为了账号安全,请及时绑定邮箱和手机立即绑定

为 Spring Boot 应用程序存储值的最佳实践是什么?

为 Spring Boot 应用程序存储值的最佳实践是什么?

MMMHUHU 2024-01-17 21:07:58
我有一个使用 Spring boot 构建的简单微服务。它包含一个计划任务,我需要保留下一个计划任务的最后一个计划任务日期。由于服务将因更新或任何意外原因而停止,请告知在本地存储此值的最佳实践是什么?谢谢
查看完整描述

4 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

有几种可能的解决方案:

  • 写入文件(如果可以写入文件系统)

  • 写入数据库(如果您正在使用它)

  • 向另一个微服务发出 HTTP 请求,该微服务将保留您的最后一条记录


查看完整回答
反对 回复 2024-01-17
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

由于应用程序将部署在 AWS 上,因此您可以使用Systems Manager Parameter Store。您可以指定键值对并在每次成功的计划更新时更新该值。这样,即使 EC2 实例(已部署应用程序)终止,这些键值对也不会受到影响。

您还可以使用 S3 存储桶并将其写入文件中。


查看完整回答
反对 回复 2024-01-17
?
翻阅古今

TA贡献1780条经验 获得超5个赞

存储应用程序数据的方法有很多种,但选择归根结底取决于您希望解决方案的灵活性。与您的用例类似,Spring Batch Admin(现已停产)正在使用 MySql DB。这样就可以跟踪处理过的记录,并可以从最后一点继续处理。

它可以像将数据写入文件一样简单,该文件可以帮助您识别最后处理的记录,或者将其存储在 Redis、MySql 或 MongoDB 等数据存储中。

因此,如果您没有正在使用的任何数据库,如果您已经在使用某种类型的数据存储(例如 MySql、MongoDB 或 Redis),则将最后处理的记录的标识符存储到文件中就可以了。

最好数据存储到此数据存储中,因为数据存储从特定于应用程序的逻辑或格式中抽象出来,并且可以根据需要在外部进行查询和/或修改。这使得解决方案更具可修改性,因为它与应用程序没有紧密绑定。



查看完整回答
反对 回复 2024-01-17
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您应该避免将任何最常查找的数据保存在文件系统上。如果有数百个并发读取,这会减慢您的应用程序的速度。尝试依赖持久性缓存。

  • 所有读取的第一选择应该是在内存中。您可以异步写入内存和持久缓存。如果应用程序发生故障,您应该使用为此目的构建的其他高性能缓存。重新启动时,从持久缓存重新加载内存缓存。

  • 持久缓存例如:Elasticsearch、Redis。这将提高您的应用程序性能并且更具可扩展性。


查看完整回答
反对 回复 2024-01-17
  • 4 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信