我听到很多Azure Web应用程序上传的内容(如图片或任何文件)应该存储在Azure存储服务中,而不是应用程序文件系统中。 但我想保持解决方案简单并将这些文件存储到本地文件系统中。
在应用程序的本地文件系统上存储图像或任何文件是否会妨碍具有多个实例的应用程序部署?
答案 0 :(得分:2)
通过在Web应用程序中存储文件,您可以限制扩展能力。
Web服务器/应用程序应该做一件事:处理您的请求并输出HTML。如果您真的想要利用云计算,其他所有内容都应该在其他地方处理。因此,对于此实例,您应该将所有文件存储在Web应用程序中。
现在,如果你想保持尽可能简单,并且你并不过分关注实现规模,你的方法确实没有错。我的理解是,Web Apps实际上并没有为您启动新的虚拟机,或者如果它们确实如此,它们会完全复制虚拟机上的内容。比如考虑一下 - 如果你把所有文件存储在一个虚拟机上并且你创建了两个新文件,那么你必须将所有这些文件复制到接下来的两个文件中,现在你已经拥有了创建一种在所有VM中同步所有上传文件的方法。
我实际上并不认为您在Azure Web Apps中遇到此问题,但如果您自己或通过自动扩展策略处理VM,则可能会出现问题。如果您决定在不同地区启动新的网络应用程序,那么您肯定会遇到这个问题(假设爱尔兰地区让您的欧盟客户获得更好的性能 - 您现在有两个不同的位置可以上传文件并且您需要同步它们,而不是一直将它们上传到Azure存储,并将它们保存在中心位置)
答案 1 :(得分:1)
经过大量研究后,我了解到,与Amazon Beanstalk不同,Web应用程序的所有实例共享相同的文件存储。尽管ecah应用程序运行到不同的VM,但它们的文件系统是相同的。
考虑它的最佳方式是,您应用的所有实例都会映射到包含您文件的同一网络驱动器共享。
当您启动2个或更多实例时,即使您只有一个实例,文件中的文件也使用相同的基于存储的文件系统。
您可以通过删除文件(例如通过FTP)轻松查看,并在所有实例中立即看到它。