在 openshift Web 应用程序中存储和获取文件

Storing and fetching files in an openshift web application

我正在开发一个 Web 应用程序,它将具有上传、存储文件以及获取和显示文件的功能。我打算在 openshift 中部署应用程序。

请建议如何存储和检索文件。考虑到应用程序的性能,文件将存储在数据库 (MySQL) 还是文件系统中?

您的目标:

  • 您需要存储文件,这是一种持久对象;
  • 您需要在 OpenShift 环境中执行此操作。

因此,您应该考虑使用 持久卷 (PV),它随 Kubernetes 一起提供,这是 OpenShift 使用的容器的底层管理计划。

PV 子系统提供了一个 API,它抽象了有关如何提供存储以及如何使用存储的详细信息,因此您可以从众多后端中选择最适合您需求的一种。例如,您可以选择基于 GlusterFS 的持久卷,以获得高可用性。您还可以根据您已经拥有的基础架构选择 iSCSI、NFS 等。

参见OpenShift persistent volumes指南。

您还可以使用数据库将文件路径存储在持久卷上。使用 Java 写入这些文件与使用标准 java.io 包一样简单。

但是使用数据库来跟踪远程动态卷上的文件是一种重新发明对象存储系统。因此,您还可以查看 OpenStack 社区的 Swift SAAS(存储即服务)子系统。它可以从 JSON/REST API 获得,因此从您的 JEE 环境访问它会非常容易。

PV 肯定比 Swift 更容易集成(Swift 至少需要 KeyStone,才能提供服务,所以如果你想用 REST/JSON API).