我有以下用例:Web应用程序(实际上是客户端的浏览器)定期向Web服务器发送跟踪/ ping(通过XHR,JSON)。我将这些轨道存储在具有四个属性索引的MongoDB集合中。显然,这个系列会快速增长。
我有三个选择:
只需处理JSON消息并插入MongoDB即可。
获取 JSON消息并生成一个后台任务以插入MongoDB
哪一个在大型互联网规模用例中表现最佳?我认为2-3)将有一个严重的开销,因此在开发模式下会更慢,但我无法预测2-3)真的会更好地扩展。由于会有很多行并且有一个巨大的索引,我会说如果达到某个限制,插入到MOngoDB集合中会非常慢。
背景信息:保证每个消息/跟踪的处理并不是至关重要的,如果服务器发生故障,如果数据丢失则没问题。
答案 0 :(得分:2)
我的观点 - 与#1一起去。 Singleton插入MongoDB非常快。不需要队列或后端进程。此外,基于您缺乏严格的数据持久性,如果您的MongoDB位于副本集中,您也可以在未启用SafeMode的情况下进行连接,以将开销保持在最低限度。
一些背景阅读 - 盒装冰的人甚至replaced their RabbitMQ implementation使用MongoDB。
答案 1 :(得分:2)
从我的角度来看,如果您的应用程序将承受很高的开销 并且需要扩展我会选择具有以下优点的选项#3:
当然,这种方法增加了开发的复杂性,因为需要更多的控制(错误处理等)