静态文件的服务器群集

如果这个问题可能(有必要)有些宽泛,我很抱歉。 我会尽我所能把它保存在一个有效的问题的格式。

我目前正在设置后端服务大量的静态文件(图像,具体)。 最终产品的整体stream量预计会很大,所以可扩展性和各种瓶颈的逃避是必须的。

我最初的结论是,最好的方法是build立一个虚拟服务器集群来处理请求。 我将使用标准的负载均衡策略来确保客户端请求在集群中的节点之间平均分配,所以这部分是没有问题的。

问题的一部分是如何有效地将静态文件本身存储在集群上。 我们预计将会出现大量(太字节范围)的数据,并且在每个节点上保留文件的镜像副本根本就不是一种select。

看来我基本上有两个select:

1)使用节点可以请求的中央文件服务器。 但是,我发现很难看到如何阻止这台服务器成为瓶颈。

2)使用1)与节点上的某种caching机制一起使用,以避免对文件服务器的多余请求。

3)一些其他精彩的解决scheme,将拯救我的灵魂,使1)和2)过时。

获得这种文件分发的策略是什么,以及可以使用哪些软件?

提前感谢!

一致的环形散列是这类问题的经典解决scheme,至less在algorithm上是这样。 像Swift,memcached,Dynamo,Riak等系统已经使用这种方法来解决这个问题。

OpenStack Swift具体是一个对象/ blob存储,它使用一致的环形哈希来跟踪和分发对象,容器等。您可以直接使用Swift或类似的东西来解决您的场景,或使用一致的哈希构build您自己的解决scheme环。 使用像Swift这样的解决scheme,不需要自己开发,而且还包括通过复制,版本控制等方面的数据保护。

如果您不需要自己运行它,而是对托pipe服务感兴趣, Rackspace Cloud Files (基于Swift)或Amazon S3等产品提供CDN(Akamai和CloudFront for Rackspace和Amazon分别)的对象存储和检索function, 。 CDN将大大提高地理分布式客户端的检索效率。