要用最好的自己去对待最爱的人,而不是用最坏的自己去考验对方是否爱你。
在多个服务器之间共享数据是目前很多企业开始使用的方法可以在多台服务器之间得到相应的信息同时也可以减少服务器的压力方便开发人员的操作至于如何实现多台服务器之间的信息共享有很多方法可以实现至于哪种方法更安全有效还需要我们继续探索
在创建上载和操作文件的多步骤表单时如果应用程序在负载均衡器后面的多个服务器上运行那么我们需要确保该文件在整个过程执行期间都可用所以无论哪个服务器在每一步都处理该过程
当提供用于处理用户上载的文件的某些功能时该文件在整个执行过程中必须可用于该过程简单的上传和保存操作不会产生任何问题但是如果此外文件必须在保存之前进行操作并且应用程序在负载均衡器后面的多个服务器上运行那么我们需要确保该文件可用于每次运行该进程的任何服务器
例如多步骤上传你的用户头像功能可能要求用户在步骤一上传头像在步骤二中裁剪最后在步骤三中保存文件在步骤上传到服务器之后该文件必须可用于处理步骤二和三的请求的任何服务器步骤二和步骤一的请求可能相同或不同
一种比较不靠谱的方法是将步骤一中上传的文件复制到所有其他服务器因此该文件将全部可用但是这种方法不仅极其复杂而且也不可行例如如果站点在几个地区的数百台服务器上运行那么就无法实现
一种可能的解决方案是在负载均衡器上启用粘性会话它将始终为给定会话分配相同的服务器然后步骤一二和三将由同一服务器处理并且在步骤一上传到该服务器的文件仍将用于步骤二和三但是粘性会话不完全可靠如果在步骤二之间如果服务器崩溃则负载均衡器必须分配不同的服务器破坏功能和用户体验同样在特殊情况下始终为会话分配相同的服务器可能会导致来自负担过重的服务器的响应时间变慢
更合适的解决方案是将文件的副本保存在可供所有服务器访问的存储库中然后在步骤一上将文件上载到服务器之后该服务器将其上传到存储库(或者可以将文件直接从客户端上传到存储库绕过服务器); 服务器处理步骤二将从存储库下载文件对其进行操作然后再将其上传到存储库中最后服务器处理步骤三将从存储库下载并保存
其实像国外有人通过AWS S3在多个服务器之间共享数据在S3上执行最基本的操作上载下载和列出文件每个文件几乎不需要几行代码解决方案的简单性表明将云服务集成到应用程序中并不困难而且也可以由对云不太熟悉的开发人员来完成