Mongodb Socket.io:实时web应用持久性权衡

Mongodb Socket.io:实时web应用持久性权衡,mongodb,websocket,socket.io,real-time,nodes,Mongodb,Websocket,Socket.io,Real Time,Nodes,我有一个实时应用程序,我已经建立。在阅读了一些关于谷歌实时api或mozilla togetherjs的文档后,我开始质疑我目前的架构。显然,它们是在持久性(我需要恢复状态)和更新速度方面的权衡。以下是我现在拥有的基本模型: 客户端更改对象->客户端发送到服务器->其持久化到Mongo->服务器通过套接字io向关心的每个客户端广播更新的对象 这种保证的持久性,但有时我觉得它会减慢实时更新。我考虑的模式是: 客户机更改对象->通过套接字io将对象更改广播给所有关心的客户机(集线器/辐条模型)->然

我有一个实时应用程序,我已经建立。在阅读了一些关于谷歌实时api或mozilla togetherjs的文档后,我开始质疑我目前的架构。显然,它们是在持久性(我需要恢复状态)和更新速度方面的权衡。以下是我现在拥有的基本模型:

客户端更改对象->客户端发送到服务器->其持久化到Mongo->服务器通过套接字io向关心的每个客户端广播更新的对象

这种保证的持久性,但有时我觉得它会减慢实时更新。我考虑的模式是:

客户机更改对象->通过套接字io将对象更改广播给所有关心的客户机(集线器/辐条模型)->然后在Mongo中发送到服务器->存储的帖子

在这个模型中,客户端不会等待到数据库的往返,这似乎更快。我考虑过的第三种模式:

客户端更改对象->通过套接字io将对象更改广播到所有关心的客户端(集线器/分支模型)->服务器异步存储在Mongo中


我觉得这是速度和最新持久性的折衷。只是想得到其他人的认可。

如果更新失败怎么办?我想这是一个乐观与悲观的问题,但如果你乐观,如果失败了,你就必须后退