我在stackoverflow问这个问题,并build议我在这里尝试:
我正在build立一个网站,用户可以上传照片,我也会把上传的照片转换成缩略图。
提前计划,如果网站变得stream行起来,我该如何扩大规模,使图像(包括原始图像和缩略图)能够存储在多台服务器上,并从多台服务器上提供服务? 也许是一个集群? 有没有开源软件可以帮助我?
谢谢。
以后可以做的最简单的事情就是编写软件,使得图像在修改时永远不会保留相同的文件名 – 对图像的更改必须始终更改文件名。 这意味着您可以通过自己的caching或通过内容交付networking设置非常长的caching生命周期,这将大大减less您需要的磁盘读取次数。 (您可能需要有一些机制来立即从caching或CDN中刷新特定的文件,如果可能的情况下,图像必须完全删除。)
为了允许水平缩放,将图像分成大量的组(100个或更多),并将path加到每个图像所在的组的path前。现在可以将所有组从同一台服务器上提供,但稍后date,使用负载平衡器将stream量引导到基于映像组的不同服务器将是相当容易的。 我不会为图像使用群集文件系统,因为它增加了一层额外的复杂性,使用多台服务器和一些负载平衡器规则来传播负载可能更简单。