1
linnchord 2013-02-05 16:20:16 +08:00
node还比较小众吧,lua连小众都还谈不上了,适用情况很少。
制造些耸人听闻的话题是某些人的爱好。 |
2
saharabear OP @linnchord 我对nginx+lua了解不多,但是感觉思路上很新颖,弱化了web服务器和web应用的概念。不过这样最终在稍大的项目中,似乎还是会出现前面一个简单的nginx挂着后面一堆带模块的nginx的情况,未必比现在的nginx+php-fpm的方式,或者nginx+apache的方式有多大优势。
|
3
linnchord 2013-02-05 17:17:03 +08:00
@saharabear nginx+lua感觉和sql服务+存储过程或者web服务+C扩展是一个类型,不是当前web开发多层分布架构的主流,适用于某些性能要求极高、逻辑实现极简的个别情况。
|
4
saharabear OP @linnchord 同意。
我对于node的优势,从各种媒体文章中没有得到过有价值的信息,我好奇的是node跑在单线程下玩异步,其实所谓的快只不过是web层不等到把事情搞定就先继续接受下一个请求而已,似乎没有什么优势啊。为什么这么多人推崇node呢? 看了一些成功案例,听说trello是用的node,还用了socket.io, 这种高交互也许适合node,但传统的以提供api为核心的web服务似乎用node没有什么优势? |
5
LazyZhu 2013-02-05 17:31:34 +08:00
|
6
ElmerZhang 2013-02-05 17:36:12 +08:00
要写业务逻辑的话还是得用PHP这类的语言,node只适合写业务逻辑简单,对并发要求高的场景。
|
7
qiuai 2013-02-05 17:49:31 +08:00
我只认为他们在炫耀.
|
8
linnchord 2013-02-05 18:05:58 +08:00
@saharabear nodejs的优势(或者说js的优势)在于异步回调的程序流模型,这个模型复用了IO等待的时间,由此提高了效率。所以对于目前以IO密集型(数据库访问、缓存访问、文件访问、远程调用)为主的大部分web开发是会提高效率的。对CPU计算密集类型则无用,例如你搞个计算器服务,用node就蛋疼了。
|
9
jackyz 2013-02-06 10:41:42 +08:00 15
流行谈不上。该用啥还继续用啥。很多业务都是需求密集型的。上来就谈性能,要么是初哥,要么是装13。
ngx_lua 是 openresty 的组件之一,之前在 yahoo/淘宝工作的章亦春同学 @agentzh 现在肉翻到了米国的某公司做 openresty 的全职开发,相当靠谱,另外就是淘宝量子统计的一票人也在国内猛 commit 代码。 node.js 则主要是 joynet 的产物,社区发展速度有目共睹,就不多说了。 从技术实现的层面分析,这两个东西基本上是一码事。因为 nginx + lua 的实质就是 libuv + lua 而 node.js 的实质则是 libuv + javascript 也就是说,都是由一个追求高效的异步 IO 底层加上一个追求高效和小巧的编程语言构成。 两者解决问题的思路也很类似 Non-Block 和 Event-Driven 是最核心的关键词和考虑一切问题的哲学。这是一个编程思路上的跳跃。跟 Erlang 一样,口味比较怪,犯错是必须的,而且不能指望你所有的程序员都能拐得过来这个弯。 从技术包装的层面 nginx 本身是聚焦在 http 协议之上的设施 openresty 这个名称说明了一切。而 node.js 则相对抽象得更底层,可以解决 tcp/udp 等更低层次上的需求。比如说,都可以做网站(HTTP),但 node.js 还可以做 DNS 服务。这也就意味着,后者适用的领域可能要更广泛一些。 两者最适用的场合都是 io 密集型的应用场景。需要说明的是,并不是所有的 web 都可以自动归类到 io 密集型里来的。真正称得上 io 密集的应用场景,其实是相当罕见的。大量的 web 都是需求密集型的(这个词是捏造的,意思是,主要还是业务复杂,而不是其他方面的要求有多高)。当然,为了打压竞争对手而拿这个说事儿,就另说了。 要不要评估和实施 node.js 和 ngx_lua 最主要还是看两点:1,需求本身是不是非得变态的追求性能,2,手里面都有什么样的人。毕竟软件开发是一个经济活动,某个行为的成立首先在 ROI 上就要合理。 |
10
saharabear OP @jackyz 感谢已送出,多谢。
|