javascript - 关于node性能的问题

查看:93
本文介绍了javascript - 关于node性能的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我们都知道node是因为Javascript语言的特性 (即:单线程 + event-loop)所以做到了节省服务器资源,以及相对的高性能
节省资源我能理解,但高性能,虽然我能理解一部分,但我假设了一种场景,然后我就想不通了

比如有一个功能,函数体主要是查询一个数据库表的数据,假设同一时间有10000次的并发量来访问,那么接下来假设执行栈10000次的执行一瞬间完成之后,任务队列里这时候就会有10000个等待执行的回调函数在排队。
那这么看的话,性能上也不见得会快啊,或者node有适合的应对机制?

比如java的话,我可以用多台服务器以分布式部署的方式,用硬件的量来打破这个瓶颈(虽然钱上面的开销就。。)
node的话,cpu就是直接的瓶颈了,那该肿么样处理这个问题呢?


刚刚初学node,这是我现在不理解的地方。请各位大神指点~

解决方案

我们从两个角度来看node的效率

一:从工具的角度来看

在我们准备要做一款产品或是实现一个功能的时候,其中很重要的一步就是技术选型,根据产品的特点和开发周期来评估(真是情况会复杂的多很多因素会影响技术选型)

  • node的优势就是动态语言门槛学习相对(c/c++)较低。

  • 甚至会javascript的前端同学稍微指导一下就能写。

二:从性能角度来看

  • 又不会像PHP传通的LAMP多进程那一套效率低。

  • 单线程异步特点项目前期即使不前后端分离也能有不俗的吞吐量。

三:但是也有缺点

  • 项目后期单线程异步比起传统的同步逻辑的编程调试会复杂点。

  • 过于底层的操作性能低,例如操作文件。

  • 动态语言没有严格的变量类型,对于大的项目来说增加调试难度,不过这些问题可以用现有的typescript解决

四:如果正确使用

现在我在项目中的做法是node做介入层仅仅只负责渲染页面用,请求发送到api服务器放入消息队列,消费端用go来实现业务逻辑(保证高效稳定)。

这篇关于javascript - 关于node性能的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆