0

我们是 Openstack 云用户之一,使用 Swift 在云中存储大量文件。我们的用户(最终用户)将访问这些文件。如果文件是公开的,那么最终用户可以直接访问 Web 或移动应用程序中的对象 URL。但是,有些文件是私有的。每个最终用户只能访问他自己的私人文件。

最终用户可能有两种方法来访问他的私人文件:

A. 最终用户总是向我们的服务器发送请求。我们的服务器将从 Swift 获取文件,然后将它们发送给用户。在这种方法中,我们的服务器可以看作是一个文件代理。我们有Openstack的认证,用户有我们服务器的认证。我们应该维护自己的用户系统。

这种方法的一个问题是可伸缩性。因为每个请求都会发送到我们的服务器,那么如果同时上传或下载很多文件,服务器就会成为瓶颈。如果我们没有足够的服务器,就无法使用 Swift 的高可扩展性特性。实际上我们真的不需要很多服务器,除了文件传输。

B. 最终用户直接向 Swift 发送请求。它可以解决巨大的文件带宽问题。但是他必须有Openstack的认证方式。所以我们需要为我们的用户提供数千个 Openstack 帐户,而我们只是 Openstack 的用户之一!这看起来很奇怪,也不可行。

有没有其他方法可以满足要求?

4

2 回答 2

1

可以使用您的服务器来获取文件(方案 A),但将该服务器“放在云中”。然后,随着访问需要扩大,您可以在负载平衡器下启动额外的服务器。因此,您可以根据需要水平分布负载。

一个主意。

(免责声明:我是 Rackspace 的员工)

于 2013-12-12T14:57:39.843 回答
0

第三个想法是使用 swift 的 tempurl 功能,当客户端需要一个文件时,你生成一个签名的 url 到文件,检查他们是否被授权,并且他们得到的 url 使他们能够直接从 swift 下载,所以有两个问题解决了

1. User A can not get User B's files
2. Download is straight from swift, so your server does not become the bottleneck for downloads (only for authorization).
于 2016-05-27T21:55:17.833 回答