4

在 Web 服务器的竞赛中:

为了避免重新查询(使用find),可以尝试在请求之间保持由find. 该Cursor对象是一个复杂的对象,例如存储套接字连接。如何存储这样的对象以避免对后续 Web 请求进行重新查询?我在 Node.js 工作,但任何建议都是有帮助的(不管是什么语言:rails、C#、Java、PHP)。

(我正在使用持久会话)

4

1 回答 1

1

Facebook 和 Twitter 的流功能比对数据库的简单查询更复杂。像这样的系统在其架构中往往有两个主要的后端组件,为您提供数据:慢速和快速。

1)第一个后端系统是您的数据库,通过查询访问以从流中获取结果页面(作为某人的 twitter 提要或他们的 fb 提要)。当您分页到底部或单击“更多结果”时,它只会增加页面变量并针对当前流的该页面的 API 进行查询。

2) 第二个是一个完全独立的系统,它通过 websockets 向您的页面发送实时更新或针对 API 调用进行分页。这是架构中“快速”的部分。这可能不是来自数据库,而是某处的队列。从这个队列中,处理程序将您的数据发送到您的页面,这是一个订阅者。

系统是这样设计的,因为要进行大规模扩展,您不能依赖实时更新数据库。它是大批量完成的。因此,您通过架构的快速部分运行该数据的一个非常小的子集,了解用户从“快速”后端获取数据的方式可能与最终在“慢速”后端的外观不完全相同,但是它足够近了。

所以......故事的寓意:

您不想保留您的 db 游标。您想 1) 我是否需要实时更新 2) 如果需要,我该如何构建我的系统,以便第一次调用可以获得我的大部分数据,而第二次调用/机制可以使其保持最新状态。

于 2013-06-09T15:07:00.010 回答