原創文章轉載請註明出處:@協思, http://zeeman.cnblogs.com前端
首先本文的目的不是引起語言之爭,純屬我的的一些思緒記錄。node
由於工做緣由,用Node.js作過幾個項目,基本都是涉及REST方面的。有一個涉及消息轉發的服務,分別部署到6臺服務器,目前已經成功處理數億的消息,沒有發生消息丟失,整體運行穩定,說明Node用在產線環境是能經受考驗的。git
今年Node社區發生了一件大事,那就是Express做者TJ大神轉投Go的懷抱,理由是大神要作雲端程序開發。做爲悲催的偏後端碼農,開始懷疑Node在後端的表現,有了如下偏見:github
1. Node是運行在V8之上的,雖然有的模塊已經被改良,但基因沒變,而V8是爲桌面瀏覽器設計的,服務端畢竟要求會苛刻一些。後端
2. Node做爲Javascript運行環境,而Javascript的發展受限於ECMA規範,ECMA規範多是雙刃劍。瀏覽器
3. 總感受event loop比較脆弱, 能夠充分利用IO, 但沒法執行CPU密集性工做,多核運行須要require cluster,一直以爲這種作法有點山寨。服務器
4. Callback層次的問題,能夠用async等庫進行改善,但仍是以爲山寨。業務邏輯在回調機制下支離破碎,凡人難以理解。async
5. 生態的問題,Javascript因爲門檻低,github各類node庫至關氾濫,質量良莠不齊,好在有源代碼,踩坑了再回來填坑。oop
6. 一些第三方庫或爲了追求性能,或爲了突破限制,須要結合Node源碼進行編譯,總以爲不夠環保。特別是產線服務器不能訪問外網的狀況下,就要抓狂了。性能
7. 我本身Javascript水平不怎麼樣,也就認爲弱類型語言可維護性不如強類型語言,單元測試能夠保證正確性,但難以重構。
基於以上莫須有的理由,我不知道Node 1.0之後的路會怎麼走? 往哪方面走?還能走多遠? 目前1.0已經有些難產…
建議:暫時不要將Node用於核心業務, 雖然paypal宣稱已經這樣幹了。充分利用Node的優點,作和前端交互性的工做,而且是在規模不大的時候。若是把後端系統想象成一個雞蛋的話,那蛋黃就不要用Node來作,一家之言。