0

我想知道是否有人可以给我一些建议。目前,我们正在构建一个使用大量 API 的应用程序,例如 Flickr、Facebook、Salesforge、Picasa、Twitter、LinkedIn 等。现在我想知道解决数据使用问题的最佳想法是什么。首先,请求所有数据会消耗您的数据容量。此外,该应用程序应该能够同时处理 1000 个用户,因此使用所有这些请求可能会使我们被标记为 DDOS 攻击者:P 所以我的解决方案是将所有内容本地存储在 MySQL 中,并每小时更新关键数据和其他数据一天一次。你们将如何解决这个问题?另一个问题是图像,我们将使用 1000000 张图片。你们会建议在本地托管这些并经常更新它们吗?还是只存储链接并将其发送给用户?我遇到的最后一个问题是 MySQL 如何处理 1000 名用户每秒从复杂表发出数百个请求的情况。例如,如果用户加载相册,数据库必须输出 100 张照片。想象一下,同时为 100 个用户完成这项工作。mysql能够处理这一切吗?

在此先感谢,山姆

4

1 回答 1

0

大多数(如果不是全部)公共 API 都有称为 ETag 的东西。这是数据的指纹,您可以向 API 发出有条件的 GET 请求,例如:

“如果 Etag 与 E33SDF33D234DMD 不同,请给我 ID 为 6123765 的图像!” 这是通过 If-None-Match HTTP 标头完成的。

If-None-Match:W/"98F96B877E576EA4E5A278D41217959117663007"

然后 API 将使用图像进行回复,或者它会给您一个 HTTP 302(它在您的缓存中)。如果服务器为您提供缓存的图像已过时,并且服务器还将在 Etag HTTP 响应标头中为您提供新的 Etag:

ETag:W/"A4D860491DE0E51EA05F46143A41CC58F7270142"

在您的缓存中,您存储图像 ID、图像数据和 Etag。然后,当您使用 ETag 从 API 请求图像并且服务器以 302 回复时,您可以交付已缓存的图像。如果服务器给你一张图片和一个 200 回复,你用新的图片和服务器给你的图片的 Etag 更新你的缓存。并将图像传输给调用者。

于 2013-02-28T08:08:34.307 回答