首页 > 解决方案 > 在微服务架构中存储文件的正确方法是什么?

问题描述

我目前正在开发一个传统的单体应用程序,但我正在将其分解为由 kubernetes 管理的 Spring 微服务。该应用程序允许上传/下载大文件,这些文件通常存储在主机文件系统中。我想知道在微服务架构中持久保存这些文件的最可行方法是什么?

标签: springdockerkubernetespersistencemicroservices

解决方案


有很多地方可以存储您的数据。它还取决于您能够花费的预算(保留重复数据也意味着需要更多的存储空间,这也需要花钱),并且主要取决于您的业务需求。

  • 是否始终需要所有数据?
  • 是否有与地理/地区相关的案例?
  • 读/写操作需要多快?
  • 东西需要缓存吗?
  • 有状态还是无状态?
  • 有操作要求吗?这应该如何维护?
  • ...

您的微服务不应该知道数据实际存储在哪里。在 kubernetes 中,您可以使用 Persistent-Volumes https://kubernetes.io/docs/concepts/storage/persistent-volumes/,它可以链接到您的云提供商的存储或其他东西。微服务应该只挂载该卷并能够将其视为本地文件。

请注意,云提供商存储已经包含了扩展、并发等解决方案。所以我可能会在后台使用单个 Blob-Storage。

然而不得不说,有一种趋势将微服务理解为耦合在一起的数据和逻辑的包,并接受复制数据,这会带来更好的可扩展性。

有关更多信息,请参阅:


推荐阅读