3

我们有一个网络应用程序,允许用户上传照片,然后在上传后显示在指定的页面中。上传模块将图像放置在爆炸的战争目录中,例如webapp-root/uploads/,一旦图像上传,就可以立即查看,如http://mydomain.com/uploads/123.png.

这是在一台应用服务器上工作的,但事实证明,我们将把这个应用部署到两台负载平衡的服务器上。所以我编写了一个快速文件同步模块,当用户上传图像时,它使用 FTP 在服务器之间同步文件。基本上,当用户在 上上传图像时server1/uploads/,我会立即通过 FTP 将其复制到server2/uploads/.

编辑(添加上传过程):上传是这样的:

  • 用户选择并提交图像
  • 服务器将文件保存在server1/uploads/
  • 后台线程执行从 server1 到server2/uploads/(done async)的 FTP 同步
  • server2 反之亦然

在这一点上,我遇到了问题。

该 urlhttp://mydomain.com使用硬件负载平衡器指向 server1 或 server2。如果用户将图像上传test-image.png到 server1(然后同步到 server2),我假设http://mydomain.com/uploads/test-image.png无论负载平衡器将我定向到 server1 还是 server2,我都可以访问该图像。

然而事实并非如此。继续该示例,当域指向 server1 时上传的图像只有在重定向到 server1 时才能查看,如果第二个用户访问相同的url 但负载均衡器将他http://mydomain.com/uploads/test-image.png定向到 server2,则显示为断开的链接。

因此,每当我在其 war 目录中 FTP 复制图像时,JBoss 似乎都不会刷新第二台服务器。这有点奇怪,因为如果我将图像上传到 server1,该服务器上的 JBoss 实例会毫无问题地提供图像文件。

有什么方法可以手动告诉 JBoss “嘿,我们这里有一个新的图像文件”?

4

1 回答 1

0

我已将问题缩小到接收服务器上损坏的文件。似乎特定驱动器上的文件权限/加密正在阻止我的 FTP 服务器成功复制图像,这就是为什么我的所有同步图像都无法在任何图像查看器中查看的原因。

我将不得不尝试解决这些用户权限问题。同时,我会保持这个问题的开放性,以防任何人对其他可能的原因有更多的了解。

于 2012-09-28T07:33:34.713 回答