KSDG meet-up #1

Post on 14-Jan-2015

936 views 0 download

description

2012/05/03 node.js 雲端應用實例

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

Thanks

©2012. KKBOX Inc. All Rights Reserved

ericpi@kkbox.com