Node的异步对于后台开发而言,优势在哪里的思考
发布于 8 年前 作者 nevercoding 5959 次浏览 来自 分享

题主最近在使用nodejs,它的开发高速便捷,大大缩短了开发周期。但是我一直很疑惑,后台开发的实践来说,nodejs的优势到底在哪里? 一般来说,访问量比较大的网站的后台架构多是采用CGI----SERVER----DATABASE的分布式系统。Node的优势在于异步,也就是说,在非异步代码结构中,server到Db这一层的请求一定是卡在这里直到有数据才返回(CPU空闲),node是直接返回,接着处理下一个请求。但是对同一个用户(同一个请求)而言,从发起请求,到收到数据这一过程的耗时其实是没变的,node只是保证了server机器的高负载。node也没有办法提高并发处理链接数,这一数目受server机器的常量影响(例如socket数目)。所以node在后台应用中的意义到底何在? 以12306春运的冲击量为例,采用传统非异步方式开发,可能架构是这样的: 1.png 本来是像借12306谈下node的优势的,越到后来越好奇12306的后台架构。不得不说,12306的后台架构还是蛮牛逼的!搜搜学习下。 从系统的角度来看,一个系统的优化往往是多个瓶颈相互制约的,也许一开始就不应该去问Nodejs对系统的优化体现在哪里,而是去寻找Nodejs在什么情境下能够对提升系统性能比现有解决方案更有帮助,更有效。 采用Node去处理非计算密集型的IO操作,确实发挥了它的优势,在提升系统性能方面做了它能做的一切,问题在于,如何去提升系统其它部分使得Node提升的优势可以充分得到发挥。就像上图中描述的那样。 写着写着写乱了,欢迎各位拍砖~~

11 回复

这还乱,写的很好了,纯思考,据说后来是淘宝的团队帮12306做的分布式部署,也就是分散多个服务器,用负载均衡来分发数据请求

@qxl1231 但这次改造貌似没有 node 什么事。。。

@nevercoding 当数据库查询的那个阶段,涉及多个数据源时,node 也可以很方便的并发,而非顺序查找。那这样的话,响应时间就可以对应降低啊。

不是什么访问都要用到数据库的啊,非异步的都被数据库操作卡住了,体验就很差了。 自豪地采用 CNodeJS ionic

@alsotang 貌似有点关系,阿里现在内部也有不少node项目在搞,具体不清楚,话说班主,你的nodeclub 项目,怎么设置管理员?貌似user Schema里没有isadmin字段,

@qxl1231 在 config.js 里面设置。自己搭建的话,最好把 config.js 都自定义一下。

@qxl1231 哈哈,自从淘宝的团队帮12306做的分布式部署之后,刷票速度非常快,常常能看到票,但是就是不能买!!!!!!因为缓存!!!!

lz你这个应该叫做 Node的异步对于后台同步而言的优势。但是后台也可以使用异步开发,所以这就不是node.js的优势,是异步的优势。

@qxl1231 乱写一通,自己都看不下去哈,感谢支持

@alsotang 你说的对,可以进行分库分表之类的操作,我写的思路乱了,大意是说,在系统优化中,如何去最大程度的发挥node异步的优势,就像下面@flyingcodes这位同学说的。多谢支持

@flyingcodes 受教了,感谢支持

回到顶部