標籤:

PHP vs Node.js vs Nginx

PHP vs Node.js vs Nginx-Lua(轉)


最近公司在考慮做openapi的proxy伺服器,公司主營網遊,旗下多款遊戲的用戶登陸,充值等等有很多介面,想聚合分散的介面統一走一個通道,所以都要走這上面,壓力不小。在語言和平台上主要在nodejs和ngx_lua中選擇,當然最後還是選擇了ngx_lua放棄了nodejs的方案,主要原因:1、主要考慮公司會nodejs的人貌似就我一個,會累死我的2、對於ngx的運維和配置相對比nodejs來說更加熟悉和有經驗3、從各種性能測試來說ngx_lua似乎在CPU和內存上更勝一籌

我在研究一陣子ngx_lua之後發現lua語法和js真的很像,同時ngx_lua模型也是單線程的非同步的事件驅動的,工作原理和nodejs相同,代碼甚至比nodejs的非同步回調更好寫一些。

性能測試,100並發php:17400nodejs:31197ngx_lua:32628

單純做http代理伺服器加上一些簡單的邏輯,似乎ngx_lua的方案更加合適,同時ngx_lua還支持redis、mysql等資料庫的支持。

最後附上PHP vs Node.js vs Nginx-Lua性能測試,轉載的http://bluehua.org/demo/php.node.lua.html


標籤:無 snoopy 在 2013-3-1 23:17 發布 snoopy 在 2013-3-1 23:19 重新編輯 分享到 weibo 8 回復

saighost 2013-3-1 23:51 #1

lua以前寫wow宏和插件時玩過。頂一下!ps:你確認你公司會ngx_lua的不只你一個嗎?:)

seasonx4 2013-3-2 02:00 #2

這是用的24核CPU么.... 太不公平了,Node.js用了CLUSTER如同開掛,PHP卻被I/O拖累

NODE代碼越長性能直線下降,優化起來其實是最難的

hades 2013-3-4 21:56

PHP Lua都有一樣的問題吧

a272121742 2013-3-2 10:06 #3

如果是用nodejs_lua呢?

zzjin 2013-3-4 15:00 #4

如果php加上不錯的opcode緩存呢?I/O?

xueyangkk 2013-4-17 13:47 #5

其實這樣考慮是對的 ! ngx_lua是基於nginx的擴展 nginx已經有無數家驗證過 他確實是個可靠的WEB應用。而且ngx_lua 已經有很多廣泛的應用 可以說技術上來說已經很成熟了,你們的平台是一個OPANAPI的應用 。所以 在這個上 選ngx_lua 是對的 !當然這並不是說NODE不好 !語言沒什麼好壞 !只能從成本 技術成熟度來考慮 !

javac 2013-11-7 06:31 #6

請問性能測試統計同用什麼生成的?

jayceefun 2013-11-8 14:20 #7

之前使用過章大神openresty, 確實很值得一試, 比node.js易用, 沒有那麼裸, 做的各種性能優化也都是c級別的, 剛出時也是號稱並發超過node.js的. lua確實是很快, 據說是腳本語言里最快的了. 不過也有缺點就是lua的文件處理很弱, 各種庫非常的少, 記得當初的想要個好點的orm都沒有, 還得手寫. 同意樓主說的lua某種程度上真的是跟js很像啊, 當初轉型node.js語言上也基本沒費多少勁. 推薦一個用lua完全模仿node.js寫的一個東西, 叫luvit, 現在完全不成熟, 只有些簡單的http server功能, 但是基礎的性能測試結果是比node.js快2倍還是4倍來的, 很恐怖啊有木有.

gauss 2013-11-8 15:03 #8

只做簡單性能測試結果反應是很片面的。如果測試只是response一個靜態數據,某些簡單的http伺服器可以完勝nginx,請求鏈上的處理節點少了,處理自然迅速。但如果加上業務代碼處理動態數據,影響速度關鍵則在業務邏輯和資料庫、網路通訊的問題上了。從目前http伺服器應用情況來說,非同步io方式勝過了多線程,所以無論採用nginx或是nodejs來,差距並不會很大。關鍵的問題看平台的穩定性,文檔、社區是否成熟,團隊人員對平台的熟悉程度。如果是在不熟悉的平台開發由於失誤而造成的影響會遠超於平台自身因素。舉個例子,假如使用nodejs沒考慮到單線程非同步的特性,在業務處理的代碼中加入了大量的複雜計算或循環什麼的,那最後上線的效果可能還不如tomcat跑出效果好!所以不要在技術選型時過於糾結測試的結果,多考慮些團隊因素。做壓測的精力還是放在之後的代碼優化上吧

推薦閱讀:

nginx的dns緩存問題?
actor模型跟nginx中worker_process的相同和差異有哪些?
圖文解說:Nginx+tomcat配置負載均衡
apache和nginx那點事兒--阻塞和非同步
反向代理伺服器的工作原理

TAG:Node.js | Nginx |