如果Node.Js增加类似Erlang那样的,跨多进程,跨多计算机相互发送接收消息,那样可就巨大的发挥了,Node.js异步和实时交互性的东西的优势。
发布于 12 年前 作者 wukehong 7589 次浏览 最后一次编辑是 8 年前

同样解决了nodel没有线程的尴尬,那样的话就可以使用Node.js群集同时提供各种实时服务了。Erlang同样是没有线程的,我总觉得Erlang的纯函数式编程,不如javascript的函数式,面向过程(面向对象编程),实现具体的算法和逻辑,Javascript 更方便一些。

7 回复

同时由于和Erlang互联后则可以,同C,C++,Per了,Python、Java、Ruby、C#等各种语音共同组成,群集网络,这样就可以发挥各种语言的优势,完成具体的业务目标的实现。

例如:http://cnodejs.org/topic/4f6eafa38a04d82a3d0ae9e2,谈论的事;

一个规模稍微大点的系统都不是一种开发语言可以搞定的,往往是几种混杂一起,比如c、c++做服务器端开发,java做业务逻辑,php等做前端展示,此外还需要消息中间件等等。

nodejs可以很快地在服务器端做原型(原来只有c系和java等能做的事情,性能还很高),而且代码量相对会少很多;另一点是它的语法优势,js闭包等。但它不太适合做cpu密集型处理的工作,只能绕着弯去解决,据说这次QCon会有人分享这方面的研究成果,可以关注下。

每种语言都有它适合的领域,没必要强求一门语言可以解决所有事情,拥有其它语言的特性,只有不断的tradeoff把系统做出来才是目标。

不是说 JavaScript 语言本身是单线程的嘛…

现在可以利用redis+socket.io实现进程间通信,而且是基于event的。集群方面redis已经做了很多工作。而类似的方案还有很多,就看个人口味了。

nodejs作为脚本语言并没有改变其异构模块间胶水功能,依托V8和各种丰富的设计模式。个人以为nodejs已经有了取代并超越java的可能——逻辑业务基本搞定。而现代语言广泛应用的时代C依旧占据着重要地位,是在于他能和好的和机器talk,在局部提供了划算的效率,特别是重型计算及实时性。而又不像汇编那样晦涩难懂,不拘泥于硬件环境。

回想起来,我们与10年甚至更早的码农没有本质区别,只是那时用shell之类的更多。当然,胶水不一样了,能黏住的东西就更多了。

一切都在于构架,而且,应该多多了解IO密集和CPU密集的特征与瓶颈。

当web这种Io密集型的碰上cpu密集型的,都会死翘翘;java也难幸免;

不过现在 Cluster 的出现,或多或少能够缓解下这种cpu密集型的压力。

谢谢,你的回帖,我关注一下redis+socket.io

感觉只能在一台计算机,使用多进程,并不能跨计算机,互发消息。

回到顶部