【问题标题】:node.js/express/mongodb instead of apache/mysql? [closed]node.js/express/mongodb 而不是 apache/mysql? [关闭]
【发布时间】:2014-01-24 11:50:33
【问题描述】:

因为我需要实时功能,如聊天、通知、事物的即时更新等。用 node.js(使用 websocket)完全替换我的网站(当前用作 web 服务器 apache + mysql)可能是个好主意),快递和MongoDB?请注意,我还需要上传/下载大小文件。

这种选择的优缺点是什么? 或者您是否推荐其他 Web 服务器而不是 node.js?

顿悟快乐,提前谢谢你。

【问题讨论】:

  • 有点模糊的问题,您的网站提供什么服务?多少流量? HTML 重或图像/视频重或两者兼而有之?你使用什么取决于你需要做什么,而不是互联网上不知道你对你的网站了解多少的人的意见。另请注意,mongoDB 是 NoSQL,这意味着查询中的表没有连接;如果您需要加入数据库数据,这会使事情变得复杂。
  • 预测上传和下载文件的巨大流量(甚至太大),在线查看文本/图像/音频/视频/等......包括聊天、通知等功能。我现在不知道我是否需要 nosql 或类似 sql 的数据库,但 mongodb 只是一个示例,在 node.js 中使用 mysql 或其他没有问题

标签: mysql node.js apache mongodb express


【解决方案1】:

引用克里斯的话:

您使用什么取决于您需要做什么,而不是互联网上不知道您对您的网站了解多少的人的意见。

他是完全正确的。影响你决定的事情太多了。但是,让我帮助澄清一些有助于间接回答您的问题的事情。

node.js/express/mongodb 代替 apache/mysql?

您不必将 Node.js 与 Express 或 MongoDB 一起使用。它们是三种不同的技术,仅仅因为您使用 Node.js 并不意味着您必须使用 MongoDB 或 Express。 Apache 和 MySQL 也是如此。他们完全没有任何关系。

对于您的网络服务器,请使用对您所服务的内容有意义的内容。如果您主要发送静态文件,请使用传统的 Web 服务器。我会说 Nginx 倾向于比 Apache 更好地处理更重的负载,所以看看那个。不过,对于 应用程序 方面,Node.js 通常是有意义的。为了从您的应用程序中提供内容,Express 通常用于处理样板文件。

您提到您需要与客户端进行大量实时通信...您是否考虑过 Socket.IO?这为您提供了一个类似 web-socket 的 RPC,由于它支持许多传输(WebSocket、长轮询 JSON 等)而高度兼容。 Socket.IO 通常运行在 Node.js 之上,可以与 Express 共享一个 Web 服务器实例。

您应该注意,您仍然可以同时使用 Nginx 和 Node.js 等传统 Web 服务器。我经常这样做,将 Nginx 代理请求返回到我的 Node.js 服务器。这让我可以在一个地方担心日志记录、限制和阻塞,同时保持良好的关注点分离。

最后,对于您的数据...您的数据在关系模型中是否有意义?如果是这样,请保留一个关系数据库,例如 MySQL、Postgres 或许多其他数据库之一。您的数据结构是否有点不同?考虑可能适合您的数据模型的众多 NO-SQL 数据库之一。仅仅因为您需要快速数据并不意味着特定类型的数据库会比其他类型的数据库更快。这完全取决于你在做什么。

我希望这能消除您的一些困惑。我鼓励您将问题分开并单独考虑每个部分,然后再得出您认为哪些技术可以很好地结合使用的结论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-03
    • 2013-08-01
    • 2014-06-05
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    相关资源
    最近更新 更多