KSDG meet-up #1
-
Upload
ericpi-bi -
Category
Technology
-
view
936 -
download
0
description
Transcript of KSDG meet-up #1
May 3, 2012
node.JS雲端應用實例
Web再進化 - 很久很久以前
·• 事件發生仰賴 Refresh rate
·• 互動性差 ·• 即時性更差
©2012. KKBOX Inc. All Rights Reserved
Web再進化 – 不久前…
·• 事件觸發單向從Browser發出
·• 互動性略好些 ·• 即時性還是很糟
©2012. KKBOX Inc. All Rights Reserved
Web再進化 – 現在
©2012. KKBOX Inc. All Rights Reserved
現在網路服務的需求
·• 互動功能多
·• 即時性要好
·• 網站上朋友要多
·• 最好正妹也要多
©2012. KKBOX Inc. All Rights Reserved
使用者需求越來越多(高?)
©2012. KKBOX Inc. All Rights Reserved
但…
©2012. KKBOX Inc. All Rights Reserved
我們回不去了…
我們碰到的瓶頸
·• 主要後端語言PHP
·• PHP 很讚 – 好開發/效率不差 – 除了寫起來有點醜 – 要做 Comet / Web Socket 也可以
©2012. KKBOX Inc. All Rights Reserved
我們碰到的瓶頸
·• 持續連線數量大時
·• php-cgi 會卡很大
·• 加機器?
·• php-cgi 實在很肥…
©2012. KKBOX Inc. All Rights Reserved
但…
所以需要找個連線成本低的方案
·• Javascript: node.JS
·• Python: Twisted, Tornado
·• Ruby: Event Machine
·• Java: Jetty
·• Erlang….
©2012. KKBOX Inc. All Rights Reserved
node.JS 優點
·• Javascript大家都會寫
·• 連線成本低, 處理連線效率高
·• 大量開發者投入, api 完整度越來越高
·• 有Joyent、Microsoft等商業公司投入
·• UNIX like / Microsoft solution都有不錯支援
©2012. KKBOX Inc. All Rights Reserved
node.JS 注意事項
·• 不適合大量運算場合 ·• single thread serves js runtime – non-blocking I/O, 但寫爛程式還是 blocking – 謹慎控制每個 callback 執行時間 – 嚴格管控變數 scope
·• Multi-core CPUs 需要自己管控 ·• JSON -> JavaScript Object Notation – 但是在 node.JS JSON.stringify/parse 跑不快 – 還好 0.6 終於補回來
©2012. KKBOX Inc. All Rights Reserved
KKBOX哪邊用到 node.JS?
©2012. KKBOX Inc. All Rights Reserved
KKBOX一起聽
©2012. KKBOX Inc. All Rights Reserved
點播歌曲
點播歌曲
點播歌曲
創作者 / 演唱者
聽眾
聽眾
聽眾
素人DJ
直接互動
直接互動
歌迷互動
node slave
node slave node slave node slave
KKBOX一起聽 服務元件 (原型)
·• node.JS slave
·• node.JS master
·• memcached
·• Mysql
©2012. KKBOX Inc. All Rights Reserved
Users
Users
Users
mmc
node master
node master
mmc
mysql mysql
node slave node slave node slave node slave
KKBOX一起聽 服務元件 (now)
·• node.JS slave
·• node.JS master
·• memcached
·• Mysql
·• RabbitMQ
©2012. KKBOX Inc. All Rights Reserved
Users
Users
Users
mmc
node master
node master
mmc
mysql mysql
RabbitMQ RabbitMQ
Summary
·• node.JS 已經足夠成熟
·• event driven 帶來許多 server-side 開發優勢 – 雷也不少 – 但瑕不掩瑜
©2012. KKBOX Inc. All Rights Reserved
大家來寫 Javascript 吧~
©2012. KKBOX Inc. All Rights Reserved