假设我正在构建 netflix,我想通过用户 ID 和电影 ID 记录每个视图
格式为 viewID 、 userID 、 timestamp 、
然而,为了扩大规模,假设每秒获得 1000 次观看。将这些视图排队到 SQS 是否有意义,然后我们的队列读取器可以一一取消排队并将其写入 mysql 数据库。这样,数据库就不会因写请求而过载。
这看起来可行吗?
假设我正在构建 netflix,我想通过用户 ID 和电影 ID 记录每个视图
格式为 viewID 、 userID 、 timestamp 、
然而,为了扩大规模,假设每秒获得 1000 次观看。将这些视图排队到 SQS 是否有意义,然后我们的队列读取器可以一一取消排队并将其写入 mysql 数据库。这样,数据库就不会因写请求而过载。
这看起来可行吗?
费萨尔,
这是一个合理的架构;但是,您应该知道写入 SQS 会比写入 RabbitMQ(或任何本地)消息队列之类的东西慢很多倍。
默认情况下,SQS FIFO 队列支持每秒最多 3,000 条消息(带批处理)或每秒最多 300 条消息(每秒 300 次发送、接收或删除操作)(不带批处理)。要请求增加限制,您需要提交支持请求。
话虽如此,从 SQS 开始并不是一个坏主意,因为它易于使用和调试。
此外,您可能需要调查 MongoDB 的日志记录...查看以下参考资料:
MongoDB 非常适合记录日志
http://blog.mongodb.org/post/172254834/mongodb-is-fantastic-for-logging
封顶集合
http://blog.mongodb.org/post/116405435/capped-collections
使用 MongoDB 进行实时分析
http://blog.mongodb.org/post/171353301/using-mongodb-for-real-time-analytics