2013-12-04

node.js 那裡不好用 ?

先說明一下,阿舍寫這一篇文章不是要用來醜化 node.js  或是用來比較誰比 node.js 好之類的評論文,而是阿舍在前陣子剛好有機會帶了一個用 node.js 開發的案子,然後,發現了一些阿舍沒有預期到的問題,所以,阿舍把它寫出來,讓有興趣或有在評估要使用 node.js 開發的人來參考哩 !  .... ^^=

Credit www.techthali.org

阿舍遇到的就是下面這二個問題,不過,都是解法的,所以,也就還好,只是,如果在使用 node.js 之前沒有注意到這二個使用和觀念上的不同的話,可能會在開發中和系統上線後造成一些問題哩 !

1. 只能利用 CPU 的單一核心

node.js 沒有執行緒,只有單一個程序,所以,在執行時,永遠只會使用一個 CPU 的核心,因此,不論是幾核心的機器,node.js 的程式就只會使用單一的核心來執行,所以,在高用量的運行環境下,只使用單核心做運行的 node.js 的程式就會變的很不效益也不好提升效能哩 !

解決的方式就是要利用 node.js 內建的 Cluster 模組來解決這個問題,透過 Cluster 模組的支援,就可以讓 node.js 的程式來利用多核心進行運算,不過,使用 Cluster 模組需要改變一些些程式的寫法哩 !


2. Callback 不好寫

為了要讓程式保有 Non-Blocking 的功能,所以,不能夠在程式中使用或呼叫 Blocking 的函式及模組,因此,就必需要使用大量的 callback 函式來維持 node.js 的 Non-Blocking 機制,否則,一旦使用了 Blocking 的函式,就會少了一個使用 node.js 的重大好處哩 !

不過,大量的 callback 函式的寫法,再加上,要考慮先後順序與時機,這樣寫起來有時真的會讓人寫到頭腦都打結哩 ! 因此,是有不少人不很是會習慣用這樣來寫程式哩 ! 這種心路歷程,阿舍也是有經歷過哩 !

但是,這個問題目前也是有解法的,不過,是要透過安裝額外的模組來協助的,一個是 Step 模組,另一個則是 sync 模組,透過這二個模組的支援,就可以使用傳統的程式寫法來寫非同步的程式碼哩 ! 只是,也一樣一下程式的寫法哩 !

除了上面這二個問題之外,目前阿舍就覺得 Node.js 還算不錯用哩 ! .... ^^=

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁