首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该把Java应用程序的图像放在哪里?

我应该把Java应用程序的图像放在哪里?
EN

Stack Overflow用户
提问于 2019-08-04 07:34:03
回答 2查看 70关注 0票数 1

我编写了一个工业级Java,为您提供了几个100年代的JPEG图像。总尺寸为15 MB,并不多。我认为,托管Java应用程序,因为这个大小不是一个问题。

我想我应该把图片放在Java应用程序中,还是放在云中,然后从那里读取。什么是更好的决定?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-04 07:49:08

理想的解决方案是拥有某种存储空间,比如亚马逊的S3云存储。

优点: 1.中央存储空间:如果希望扩展应用程序,则每个部署都将没有这些文件的副本,从而最终避免了不同部署节点之间的同步问题。

  1. 没有应用程序重新部署的文件附加/更新:如果您希望在不久的将来更改这些文件,则不必在所有节点/服务器上重新构建和部署应用程序,而只需在云存储空间中更新您的文件。因此,也避免了应用程序停机。

因此,你需要评估与拥有一个存储空间的成本相比,你是否需要这些好处,以及你有多大的可能性来扩展这个应用程序。

票数 3
EN

Stack Overflow用户

发布于 2019-08-04 09:50:43

我可以在几个月后增加或移除其中的一些。但是,一般来说,它们不会改变。

事实上,我要区分两种情况:

1)应用程序呈现/显示托管在目录中的图像列表,最近的版本对客户端更好。

2)应用程序使用/依赖于其代码中的特定图像来呈现/操作它。

对于第一种情况,我同意Ankur的回答:使用外部存储来解耦应用程序组件及其映像。这是正确的解决办法。

对于第二种情况,使用外部存储或在应用程序中存储图像是可以接受的解决方案。每一种都有其优点和缺点。

外部存储

优势:

  • 不要夸大应用程序及其大文件的部署
  • 不需要进行任何结构更改(图像内容修改)的重新部署。

缺点:

  • 映像集版本管理:在外部存储、应用程序配置和应用程序代码中。
  • 需要为结构更改执行多个配置设置和重新部署(新的映像文件)。

例如,在dev分支/env中,您可以使用映像集v.2,而对于反映实际生产组件的所有其他分支/env则使用映像集v.1。

您不希望将映像集v.2传播到任何地方,因为这会破坏部署在其他env中的应用程序。因此,你需要:

  • 要创建与要部署的不同映像的版本相同的空间
  • 使应用程序可配置为使用正确的版本
  • 对于每个需要使用映像集v.2的env,您应该更新应用程序以考虑版本2映像集并重新部署应用程序

图像存储在源代码

优势:

  • 没有图像集版本管理( SCM为您做到这一点)
  • 没有对每次重新部署使用的映像集版本进行配置更改(图像来自SCM)
  • 运行时使用的内容的确定性,不存在网络/访问配置问题/不可用的风险(图像来自SCM,存储或提取部署的组件)

缺点:

  • 膨胀应用程序及其大文件的部署
  • 要求对任何映像集版本执行重新部署。

根据我的经验,如果您使用工具来自动化您的应用程序配置/重新部署(例如Ansible),并且执行定期部署,那么在源代码方法中存储的映像是很有趣的,因为这很简单,而第二个缺点不是:“要求对任何映像集版本执行重新部署。”因为您已经经常重新部署并且整个部署链是有效的。

如果您对重新部署感到脆弱、不舒服,那么使用外部存储可能更安全,而新的映像将总是迫使您重新部署应用程序,使其具有使用该存储的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57344742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档