关灯
开启左侧

什么时候不应使用 Node.js?

[复制链接]
老蚊子 发表于 2019-5-31 08:39:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
1.带有关系型数据库的服务器端 Web 应用
例如,将 Node.js + Express.js 与 Ruby on Rails 进行比较,当涉及到关系数据访问时,显然后者更合适。
与其竞争对手相比,Node.js 的关系型数据库工具仍然相当原始。另一方面,Rails 提供了开箱即用的数据访问设置以及数据库架构迁移支持工具,另外还有其他的 Gems。 Rails 及类似框架拥有成熟的且经过验证的 Active RecordData Mapper 数据访问层实现,如果你想要尝试在纯 JavaScript 中复制这些功能的话,那么祝你好运。
不过,如果你真的倾向于用 JS 实现一切,请查看 Sequelize 和 [Node ORM2](github.com/dresende/no… ORM2)。
如果仅仅是把 Node.js 用作面向公众的界面,同时用 Rails 后端访问关系数据库,这是可以的,而且这种方式并不罕见。


2.繁重的服务器端计算与处理
当涉及到繁重的计算时,Node.js 并不是最好的平台。你绝对不想用 Node.js 去构建一个 Fibonacci 计算服务器。通常,任何 CPU 密集型操作都会通过事件驱动的非阻塞 I/O 模型来抵消 Node 提供的所有吞吐量优势,因为当线程被数字运算占用时,任何传入请求都将被阻止。
正如前面所说的,Node.js 是单线程的,只使用一个CPU核心。在多核服务器上添加并发性时,Node 核心团队以 cluster module 的形式完成一些工作。你也可以很容易地在反向代理 nginx 的后面运行几个 Node.js 服务器实例。
如果使用群集,你仍然应该将所有繁重的计算放到在更合适的环境下编写的后台进程中,并使它们通过像 RabbitMQ 这样的消息队列服务器进行通信。
即使你所有的后台处理最初可能在同一服务器上运行,这种方法也有可能实现非常高的可伸缩性。这些后台处理服务可以轻松地被分发到单独的工作服务器,而无需对前置 Web 服务器负载进行配置。
当然,你也可以在其他平台上使用相同的方法,但是使用 Node.js,你可以获得我们所讨论的高 reqs/sec 吞吐量,因为每个请求都是一个非常快速有效的小任务。


作者:前端先锋
链接:https://juejin.im/post/5cecdf606fb9a07ed7405ecd




 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


1关注

13粉丝

75帖子

排行榜
关闭

站长推荐上一条 /1 下一条

官方微信

全国服务热线:

400-9988-316

公司地址:国家西部信息安全产业基地(成都市高新区云华路333号)

邮编:610000    Email:2908503813@qq.com

Copyright   ©2015-2016  EOIT论坛Powered by©Discuz!    ( 蜀ICP备11000634号-7 )