Java Web 应用程序图像传输

Java Web Application Image Transfer

使用Tomcat或JBoss,如何在不编写Client/Server申请?
我正在构建的网站包含大量图像,这些图像只能在一台机器上保存和共享。所有 Web 应用程序服务器都需要能够访问这些文件。

Kermit Love,根据您的要求,这里有一些建议。请注意,其中 none 是基于 Java 的,也不特定于 Tomcat / JBoss.

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

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

优点

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

缺点

  • 网络开销可能会降低您的全局解决方案的速度,具体取决于您的需要(访问频率、图像大小……)
  • 无高可用性(容错)

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

您可以使用简单的 Nginx/Apache 服务器来传送 "static" 内容,同时将流量路由到您的应用程序服务器。

优点:

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

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

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

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

优点:

  • 易于设置
  • 免费(暂时不需要额外的硬件)
  • (略)长期性能优于选项 1(无重复网络开销)。

缺点:

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