Java Web 应用程序图像传输

Posted

技术标签:

【中文标题】Java Web 应用程序图像传输【英文标题】:Java Web Application Image Transfer 【发布时间】:2020-04-18 01:44:11 【问题描述】:

使用 Tomcat 或 JBoss,我如何在不编写客户端/服务器应用程序的情况下将动态图像内容从一台服务器上的图像存储库传输并保存到同一网络上的许多其他服务器(机器)? 我正在构建的网站包含大量图像,这些图像只能在一台机器上保存和共享。所有网络应用服务器都需要能够访问这些文件。

【问题讨论】:

我不会那样做,但事情可能会变得主观。您是否考虑过替代解决方案,例如使用 NAS(或共享目录)或其他解决方案? 我没有考虑过NAS。在这种情况下使用 Java 有哪些选择?仅供参考,我正在 Windows 2019 服务器上开发此应用程序。 有多个不完美的选择,但就像我说的那样,它可能会变得非常主观。您有具体要求吗? 我必须降低成本,即我需要使用 Windows 操作系统服务。每个 Web 响应都需要访问这些大小超过 400 GB 且无法存储在多台机器上的图像文件。 【参考方案1】:

Kermit Love,以下是根据您的要求提出的一些建议。请注意,这些都不是基于 Java 的,也不是特定于 Tomcat / JBoss 的。

选项 1:使用 NAS 或共享目录

使用特定硬件 (NAS)、文件服务器 (Samba) 或网络上的简单共享目录将允许您的所有计算机通过网络访问内容。

优点

此解决方案可以扩展 设置简单

缺点

根据您的需求(访问频率、图像大小等),网络开销可能会减慢您的全局解决方案 没有高可用性(容错)

选项 2:使用专用于负载平衡/反向代理/提供文件的前期服务器

您可以使用简单的 nginx / Apache 服务器来传递“静态”内容,同时将流量路由到您的应用程序服务器。

优点:

向客户提供图片的高效方式。 您将关注点(业务逻辑与服务文件)分开。

缺点:没有高可用性(容错)

选项 3:使用rsync 同步文件系统

您可以定义一个基于 cron 的规则,以每 N 秒/分钟运行一次 rsync 命令,以确保您的所有机器都有可用的数据。

优点:

易于设置 免费(暂时不需要额外的硬件) (稍微)从长远来看比选项 1 更好的性能(没有重复的网络开销)。

缺点:

还有一个额外的过程 不水平缩放 无法立即访问文件

【讨论】:

感谢您提供此信息,但我认为以下帖子满足了我的需求:***.com/questions/10356849/… 很酷,这是第一个选项。无论如何,请随意阅读我的优点/缺点:)

以上是关于Java Web 应用程序图像传输的主要内容,如果未能解决你的问题,请参考以下文章

Java Tapestry Web 应用程序中的基本图像编辑器(打开文件、裁剪、保存到新文件)

java程序怎么在Web服务器里运行.

web 应用程序之间如何通信,共享和传输数据

如何通过java程序来加载客户端证书进行ssl连接?

Java Web工作原理

如何用Java实现Web服务器