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