NodeStack (NodeJS + MongoDB + SmartOS)
何謂NodeStack(擷取自官網http://nodestack.org公開文件):
- Application Development Stack
- Lean & Powerful
- Open Source Technologies
- Strong Community & Vendor Support
總之,NodeStack是一個由SmartOS為底層作業系統,搭配MontoDB服務, NodeJS語言所堆疊出來的架構,類似常見於WEB開發的LAMP (Linux + Apache + MySQL + PHP)架構,主要都是希望給開發人員從OS、AP Server、程式語言到資料庫一個完整的開發環境,透過OS提供這些開發環境完整的相容與快速的安裝之後,可以讓開發者盡量無痛的,趕快投入開發的工程。
SmartMachines
SmartMachine為源自於Solaris的Ilumus分支的Linux系統,為使用ZFS為系統磁碟格式的Bare-Metal虛擬系統,透過Thin Provision的方式提供Guest OS各式資源,這也讓SmartOS具備接近於實體主機的高效能,甚至可以達到動態的資源調整與重新分配,並且可以透過ZFS達到快速的將運行中的Guest OS做Snapshot備份。
1. SmartOS的Snapshot:
有別於其餘作業系統的snapshot,SmartOS針對snapshot後的物件,另外mount於作業系統可見的磁碟中,使用者可以透過mount point直接存取snapshot中的檔案,而不用直接restore...更方便!
# ls -l /checkpoints/
2. SmartOS SMF:
SmartOS提供SMF(Service Management Framework)服務架構,該服務源自於Solaris之Deamon管理方式,讓開發人員可以透過簡單的XML定義來撰寫Daemon服務。SMF並會協助管理您掛載服務的生命週期,並且透過設定中給予的參數,更可以自動重新啟動已經Crash的服務,讓您管理您的服務更加方便!趕快把你的程式加到SMF吧!
顯示所有服務: # svcs -a 查看服務LOG位置: # svcs -L [服務名稱] 啟動服務: # svcadm start [服務名稱] 關閉服務 # svcadm stop [服務名稱] 匯入設定檔: # svccfg import [服務設定檔] 查看設定檔: # svccfg export [服務設定檔] |
3. SmartOS套件安裝程式:
SmartOS預設採用類似Linux系統的yum, apt-get等操作方式的pkgin系列指令操作安裝相關服務套件,套件庫更由Joyent原廠維護,每季更新。
查詢套件 # pkgin search [套件關鍵字] 安裝套件 # pkgin install [套件關鍵字] 移除套件 # pkgin remove [套件關鍵字] |
SmartOS Mongodb
Montodb為目前火紅的NoSQL資料庫的一支,透過文件型態的Key-Value模式提供快速的儲存與查詢功能,即使收容大量資料,依然能夠維持高效能運作,而在SmartOS中,透過pkgin能夠快速的安裝Mongodb,並提供服務:
安裝Mongodb (原SmallPackage中已經預載...) # pkgin search mongodb # pkgin install mongodb-[version] 啟動服務: # svcadm enable mongodb 確認服務是否啟動: # svcs mongodb STATE STIME FMRI online 12月_13 svc:/pkgsrc/mongodb:default 本地端連線DB # mongo MongoDB shell version: 2.2.0 connecting to: test > 設定提供外部連線 # vi /opt/local/etc/mongodb.conf |
SmartOS Node.js
Node.js為具備Non-Block與Event Driven的Server Side JavaScript程式語言,能夠快速建構出輕量化且高效能的網路服務或網站,廣受時下受開發者社群青睞,並且在開發社群成長快速的程式語言。在短時間已內於github上已累積大量的優質開放原始碼套件,可供開發人員使用。而SmartOS中,預設支援pkgin直接安裝Node.js之服務,並讓您可以搭配Console 指令、Shell腳本、互動模式或執行檔方式進行操作:
安裝Node.js (原SmallPackage中已經預載...) # pkgin search node # pkgin install node-[version] 指令列直接使用node.js # node > console.log('Hello') Hello 在Shell中使用Node.js # vi test.sh #!/bin/bash node -e " var os = require('os') os.loadavg() " # sh test.sh [1,2,0] 使用expressjs建立web framework 安裝expressjs # npm install express -g 建立web專案 # express [YourProject] # cd [YourProject] && npm install 啟動服務: # node app.js |