我目前经营着一个流行的分类广告网站,该网站在 2 台服务器上运行。目前有 2 台服务器,一台是网络服务器,一台是数据库服务器。它们运行的是 Linux,网站采用 MySQL 编码。
由于网站规模越来越大,现有服务器设置已无法满足我的需求,因此我正在升级服务器。我购买了另一台服务器作为另一台网络服务器,该服务器连接到私有网络中现有的 2 台服务器。因此,我将拥有 2 台网络服务器和 1 台数据库服务器。
该网站有大量图片,用户不断上传和删除。最初的想法是让 2 个 Web 服务器同步包括图片在内的文件。但我认为由于要同步的图片数量太多,可能会出现图片无法立即同步的问题。
我只是想找出最好的、最强大的解决方案,因为我确信这是许多成长中的网站必须面对的共同问题。
我目前的想法是:
1) 同步两个 Web 服务器。可能会很慢,有时两个服务器上的图像都不可用。2) 安装图像目录,以便两个 Web 服务器上传到同一目录。这会减慢图像上传速度吗?3) 更改上传照片 php 脚本以上传到 Amazon s3 存储桶并使用 anmazon cloud front 提供图像。虽然我认为这可能很昂贵,因为网站每月提供的图像数量很大。
任何想法或进一步阅读的链接都很好。
答案1
迄今为止最简单、最好、最强大的解决方案是使用 S3 选项 - 无论是否带有云端。
答案2
图像通常是静态内容,因此缓存效果非常好。如果您的解决方案设计可以利用这一点,那么实际的永久存储速度是否缓慢或成本是否昂贵其实并不重要。
您的网络服务器要么各自操作自己的缓存,要么利用外部缓存,即内容分发网络的缓存。
对于许多应用程序来说,(高可用性)文件共享仍然是一种在服务器之间共享内容的非常合适且常见的解决方案。
或者根本不将文件存储在文件系统上,而是使用数据库并将它们存储为 BLOB。这是一种非常常见的方法。由于您无论如何都需要一个数据库,这使得应用程序服务器几乎无状态,通过将它们转移到数据库层解决了许多锁定、复制、HA、一致性和访问问题,其中许多问题都是旧闻,很容易理解和解决。