Php 多步骤映像提交到负载平衡服务器问题

Php 多步骤映像提交到负载平衡服务器问题,php,apache,load-balancing,squid,Php,Apache,Load Balancing,Squid,我们有两个apache/php web服务器,它们使用squid页面缓存代理进行负载平衡。squid缓存在图像提交页面上未处于活动状态。我们有一个表单,用户可以提交图像 这是一个两步的过程。他们首先上传图像。第二步,他们可以输入有关图像的详细信息,然后在提交图像详细信息后将图像移到正确的文件夹中 问题是,当存在高流量时,第二步可能来自不同的服务器,而不是上载图像的服务器。因此,第二步可能找不到上载的图像,上载无法完成 这些服务器上有数千个图像文件,因此它们之间的同步速度很慢。我们是否可以强制特定

我们有两个apache/php web服务器,它们使用squid页面缓存代理进行负载平衡。squid缓存在图像提交页面上未处于活动状态。我们有一个表单,用户可以提交图像

这是一个两步的过程。他们首先上传图像。第二步,他们可以输入有关图像的详细信息,然后在提交图像详细信息后将图像移到正确的文件夹中

问题是,当存在高流量时,第二步可能来自不同的服务器,而不是上载图像的服务器。因此,第二步可能找不到上载的图像,上载无法完成


这些服务器上有数千个图像文件,因此它们之间的同步速度很慢。我们是否可以强制特定的页面始终由特定的服务器提供服务?基本上绕过负载平衡功能。

有几种解决方案

  • 切换到nginx作为反向代理,您可以将客户端粘贴到主机上
  • 使上载目录成为装载在两台主机上的NFS共享
  • 将文件上载到mysql表中(最好使用哈希表),以便两台服务器都可以访问它
  • 就我个人而言,我会选择选项1,因为您仍然可以获得循环负载平衡,但每个连接都会固定在它最初连接到的主机上

    选项2的好处是仍然可以平衡请求,但缺点是NFS共享是单点故障


    如果使用哈希表,如果DB服务器上没有足够的ram,选项3可能会导致问题。

    有几种解决方案

  • 切换到nginx作为反向代理,您可以将客户端粘贴到主机上
  • 使上载目录成为装载在两台主机上的NFS共享
  • 将文件上载到mysql表中(最好使用哈希表),以便两台服务器都可以访问它
  • 就我个人而言,我会选择选项1,因为您仍然可以获得循环负载平衡,但每个连接都会固定在它最初连接到的主机上

    选项2的好处是仍然可以平衡请求,但缺点是NFS共享是单点故障


    如果使用哈希表,如果DB服务器上没有足够的ram,则选项3可能会导致问题。

    我可以看到两个接近Geoffrey answer的选项。
    1.将图像上载到通过rsync同步的上载目录。
    这样,图像的大小会小得多,同步速度也会快得多。
    完成整个过程后,您可以将图像移动到正确的文件夹中。
    2.DB:存储的不是图像本身,而是图像的url,因此您将始终知道哪个服务器持有图像,并有权访问图像。

    只有两个选项可以阅读Geogray的答案并查找与此主题相关的信息。

    我可以看到两个选项与Geoffrey的答案相近。
    1.将图像上载到通过rsync同步的上载目录。
    这样,图像的大小会小得多,同步速度也会快得多。
    完成整个过程后,您可以将图像移动到正确的文件夹中。
    2.DB:存储的不是图像本身,而是图像的url,因此您将始终知道哪个服务器持有图像,并有权访问图像。

    阅读Geogray的答案并查找与此主题相关的信息时,只有两个选项。

    看起来#2是最好的选项。看起来#2是最好的选项。我们的服务器管理员做了一些事情,现在我们没有看到这个问题。他们还正在使用rbdb进行服务器同步。应该比rsync工作得更好。这应该可以解决服务器之间同步的延迟,并解决丢失文件的问题。我们的服务器管理员做了一些事情,现在我们没有看到这个问题。他们还正在使用rbdb进行服务器同步。应该比rsync工作得更好。这将解决服务器之间同步的延迟问题,并解决丢失文件的问题。