我们是 Openstack 云用户之一,使用 Swift 在云中存储大量文件。我们的用户(最终用户)将访问这些文件。如果文件是公开的,那么最终用户可以直接访问 Web 或移动应用程序中的对象 URL。但是,有些文件是私有的。每个最终用户只能访问他自己的私人文件。
最终用户可能有两种方法来访问他的私人文件:
A. 最终用户总是向我们的服务器发送请求。我们的服务器将从 Swift 获取文件,然后将它们发送给用户。在这种方法中,我们的服务器可以看作是一个文件代理。我们有Openstack的认证,用户有我们服务器的认证。我们应该维护自己的用户系统。
这种方法的一个问题是可伸缩性。因为每个请求都会发送到我们的服务器,那么如果同时上传或下载很多文件,服务器就会成为瓶颈。如果我们没有足够的服务器,就无法使用 Swift 的高可扩展性特性。实际上我们真的不需要很多服务器,除了文件传输。
B. 最终用户直接向 Swift 发送请求。它可以解决巨大的文件带宽问题。但是他必须有Openstack的认证方式。所以我们需要为我们的用户提供数千个 Openstack 帐户,而我们只是 Openstack 的用户之一!这看起来很奇怪,也不可行。
有没有其他方法可以满足要求?