同样解决了nodel没有线程的尴尬,那样的话就可以使用Node.js群集同时提供各种实时服务了。Erlang同样是没有线程的,我总觉得Erlang的纯函数式编程,不如javascript的函数式,面向过程(面向对象编程),实现具体的算法和逻辑,Javascript 更方便一些。
同时由于和Erlang互联后则可以,同C,C++,Per了,Python、Java、Ruby、C#等各种语音共同组成,群集网络,这样就可以发挥各种语言的优势,完成具体的业务目标的实现。
例如:http://cnodejs.org/topic/4f6eafa38a04d82a3d0ae9e2,谈论的事;
一个规模稍微大点的系统都不是一种开发语言可以搞定的,往往是几种混杂一起,比如c、c++做服务器端开发,java做业务逻辑,php等做前端展示,此外还需要消息中间件等等。
nodejs可以很快地在服务器端做原型(原来只有c系和java等能做的事情,性能还很高),而且代码量相对会少很多;另一点是它的语法优势,js闭包等。但它不太适合做cpu密集型处理的工作,只能绕着弯去解决,据说这次QCon会有人分享这方面的研究成果,可以关注下。
每种语言都有它适合的领域,没必要强求一门语言可以解决所有事情,拥有其它语言的特性,只有不断的tradeoff把系统做出来才是目标。
现在可以利用redis+socket.io实现进程间通信,而且是基于event的。集群方面redis已经做了很多工作。而类似的方案还有很多,就看个人口味了。
nodejs作为脚本语言并没有改变其异构模块间胶水功能,依托V8和各种丰富的设计模式。个人以为nodejs已经有了取代并超越java的可能——逻辑业务基本搞定。而现代语言广泛应用的时代C依旧占据着重要地位,是在于他能和好的和机器talk,在局部提供了划算的效率,特别是重型计算及实时性。而又不像汇编那样晦涩难懂,不拘泥于硬件环境。
回想起来,我们与10年甚至更早的码农没有本质区别,只是那时用shell之类的更多。当然,胶水不一样了,能黏住的东西就更多了。