我们都知道 Dropbox 使用 Amazon S3 来备份文件,据说每 15 分钟就有 100 万个文件由 Dropbox 处理。那么 Amazon S3 的读取和写入必须是巨大的。
任何人都知道 S3 如何处理这么多文件描述符..?S3 后面是否有任何不同的文件系统?我的意思是 S3 是否为每个文件创建一个新的文件描述符..?或者打开一个文件,写入许多文件,直到它达到某个大小,比如 1 GB 等等。
我们都知道 Dropbox 使用 Amazon S3 来备份文件,据说每 15 分钟就有 100 万个文件由 Dropbox 处理。那么 Amazon S3 的读取和写入必须是巨大的。
任何人都知道 S3 如何处理这么多文件描述符..?S3 后面是否有任何不同的文件系统?我的意思是 S3 是否为每个文件创建一个新的文件描述符..?或者打开一个文件,写入许多文件,直到它达到某个大小,比如 1 GB 等等。
(免责声明:我实际上并不知道 S3 的任何实现细节):
听起来您正在做出两个错误的假设:
每个 DropBox 文件都可能映射到单个 OS 文件,但它们也可能执行类似Google File System 的操作,这会将文件分解为多个具有固定最大大小的较小文件。
其次,这些文件不会全部存储在一台机器上,而是存储在许多不同的机器上。因此,您不会在任何给定的机器上打开那么多文件描述符。
第三,您可能忘记了在任何给定时间打开的文件描述符的默认最大数量可以由 ulimit(来自命令行)或setrlimit(来自 C 代码)提高。如果将限制提高到超出标准默认值以最大化可用描述符,我不会感到惊讶。