假设有一个允许用户上传图像文件的java webapp,它只是将这些图像存储在tomcat服务器的文件系统上,并在进一步请求时将它们作为静态资源提供。现在,这个应用程序需要扩展并部署在一个位于apache服务器后面的大型tomcat服务器集群中,并将mod_jk作为负载均衡器。
由于上传的图像位于文件系统上,因此除了发生上载事件的其他tomcat服务器之外,它们将不可用。如果一个用户进来,上传一个图像,并在一段时间后再次请求图像,由于循环负载平衡策略,他的请求可能会被丢失到另一个服务器,所以他不会看到他的图像!
有没有传统方法来处理这类问题?或者我应该利用后端数据库重新设计上传系统?
答案 0 :(得分:1)
有没有理由你没有共享的NFS驱动器并在那里上传图像?假设当然没有命名冲突。
答案 1 :(得分:0)
一种方法是使用共享文件系统。当然,这并不总是可行的。另一种方法是将所有内容保存在数据库中。由于同步,这是我建议的方式。 对于内容,我建议使用长耳兔。这里有一个关于聚类和长耳兔的好的介绍:http://wiki.apache.org/jackrabbit/Clustering