Websocket 用node還是python開發比較好?
12-28
各位對Node.js,Python如有了解,請問:
Node.js 和 Python 之前的擅長點在哪?鄙人在做Websocket相關的項目,是一般的應用,不需要太大的計算量,但是使用會人數很多。想問哪種語言更有優勢。
如果兩種語言都是入門,Websocket都已實現,但是在後期管理,維護中哪種更便於操作?
Node.js 非同步單線程,Python可多線程。
兩個語言要佔用多 CPU 的方法差不多,都是開多進程。Python 雖然「支持線程」但基本沒什麼用處。
所以,選擇的條件無非是:
- 團隊成員普遍熟悉什麼:熟悉 jQuery 操作 DOM 的不納入考慮範圍。
- 有什麼依賴的庫,比如是不是還有 WS 之外的部分基於 Python 寫了?
如果兩條都沒有嚴重偏向 JavaScript(比如隊伍里有 Node.js 大牛且項目已經有不少東西基於 Node.js 構建了)的話,選 Python。雖然 Python 這個語言 設計一般,還有 2/3 不兼容問題,但怎麼說……都比 JavaScript 這種東西稍微適合人類使用那麼一點。
兩個我都做過,項目中CPU 時間Node.js /Tornado 約為1/3,Tornado 內存佔用量約是node的兩倍
據國外的一篇測評(我沒測過):
Node.js, 0.6.8: ~11000 req/s
Tornado 2.2, PyPy 1.8: ~8000 req/s,
python的tornado,基於非阻塞的方式和對 epoll
的運用,從我做過的項目來看高並發先完全沒問題,是FriendFeed 開源版本
nodejs ,開發推薦使用coffeescript,據說知乎主站用的就是這個
至於可維護性之類的 肯定不光是語言的問題,比如還要考慮supervisorctl做守護
業務拓展類維護需要看你們程序員自己的技能樹偏向,主要是對架構的把握了
綜上:
1,性能基本上node佔優,但具體場景是也沒有太絕對
2,coffeescript後雙方開發基本打平
3,可維護性基本打平
4,並發量很大的話,肯定不能是單機,要做集群那麼單點性能優勢其實沒有太大
結論:
如果依照題主說的兩種語言都是剛入門:
業務複雜:推薦py去做,nodejs不是剛入門的人可以在實際項目中使用的。
業務正常:nodejs +coffeescript 藉助http://socket.io有一整套可以移植反而更方便。
2017年了,我只想說。用go吧。
推薦閱讀: