【发布时间】:2013-05-03 01:48:27
【问题描述】:
我有一个 node.js 服务器,它为客户端浏览器提供交互式 HTML 页面。所以在这种情况下,客户端前端页面不是从 Apache 服务器提供的,而是从 node.js 服务器提供的。
当用户执行某些操作(即创建墙帖或评论)时,我正在考虑使用一种可能的操作流程来管理它们,但我不知道哪个更好(在性能、可扩展性方面对于大量用户,并且易于实施)。 所以这些是我的选择:
选项 1:
- Socket.io 会将消息详细信息发送到节点服务器(监听特定端口)。消息将使用 JSON 编码。
- 节点收到消息。
- 节点将直接与 mysql 数据库通信。在此步骤执行输入清理。
- 节点将详细信息广播给在同一 socket.io 房间内订阅的其他用户。
选项 2:
- Socket.io 会将详细信息发送到节点服务器。消息将使用 JSON 编码。
- 节点收到消息。
- 节点使用 HTTP POST 调用 PHP。然后 PHP 控制器将处理 HTTP POST 消息并将所有相应的详细信息保存到 mysql 数据库中。将在此步骤执行输入清理。
- PHP 将通过 redis 通知 node.js 服务器,假设使用名为“mysqldb”的通道。
- 节点会订阅“mysqldb”频道,然后会将相应的详细信息广播给同一个socket.io房间内订阅的用户。
您能告诉我上述两种方法的优缺点吗?有没有更好的办法?
【问题讨论】:
标签: php mysql node.js redis socket.io