使用带有MySql的节点或使用带有PHP的节点(将处理MySql操作)

时间:2013-05-03 01:48:28

标签: php mysql node.js redis socket.io

我有一个node.js服务器,它为客户端浏览器提供交互式HTML页面。因此,在这种情况下,客户端前端页面不是从Apache服务器提供的,而是从node.js服务器提供的。

当用户执行某些操作(即创建一个墙贴或评论)时,我正在考虑使用其中一种可能的操作流来管理它们,但我不知道哪一个更好(在性能,可伸缩性方面)适用于大量用户,易于实施)。 所以这些是我的选择:

选项1:

  • Socket.io会将消息详细信息发送到节点服务器(侦听特定端口)。消息将使用JSON进行编码。
  • 节点收到消息。
  • Node将直接与mysql数据库通信。输入清理在此步骤执行。
  • 节点将详细信息广播给在同一socket.io会议室中订阅的其他用户。

选项2:

  • Socket.io会将详细信息发送到节点服务器。消息将使用JSON进行编码。
  • 节点收到消息。
  • 节点使用HTTP POST调用PHP。然后,PHP控制器将处理HTTP POST消息,并将所有相应的详细信息保存到mysql数据库中。输入清理将在此步骤执行。
  • PHP将通过redis通知node.js服务器,假设使用名为“mysqldb”的频道。
  • 节点将订阅“mysqldb”频道,然后将相应的详细信息广播给在同一个socket.io会议室中订阅的用户。

您能告诉我上述两种方法的优缺点吗?有没有更好的方法?

1 个答案:

答案 0 :(得分:0)

反问题:

  • 每个选项中的相同操作需要多少步骤才能完成所有步骤?
  • 考虑每个选项可能出错/失败/中断的所有事情?
  • 如果所有内容都是用一种语言编写的话会容易多少?
  • 如果数据未在节点,PHP,MySQL和redis之间传递,可以节省多少时间?
  • 您需要为每个选项安装和配置多少个软件包?

除非你有一个非常特别的理由将PHP插入功能齐全的软件堆栈中,并且实际上不知道为什么甚至会问这个问题。

简短版:选项1