19
May 3, 2012 node.JS雲端應用實例

KSDG meet-up #1

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: KSDG meet-up #1

May 3, 2012

node.JS雲端應用實例

Page 2: KSDG meet-up #1

Web再進化 - 很久很久以前

·• 事件發生仰賴 Refresh rate

·• 互動性差 ·• 即時性更差

©2012. KKBOX Inc. All Rights Reserved

Page 3: KSDG meet-up #1

Web再進化 – 不久前…

·• 事件觸發單向從Browser發出

·• 互動性略好些 ·• 即時性還是很糟

©2012. KKBOX Inc. All Rights Reserved

Page 4: KSDG meet-up #1

Web再進化 – 現在

©2012. KKBOX Inc. All Rights Reserved

Page 5: KSDG meet-up #1

現在網路服務的需求

·• 互動功能多

·• 即時性要好

·• 網站上朋友要多

·• 最好正妹也要多

©2012. KKBOX Inc. All Rights Reserved

Page 6: KSDG meet-up #1

使用者需求越來越多(高?)

©2012. KKBOX Inc. All Rights Reserved

Page 7: KSDG meet-up #1

但…

©2012. KKBOX Inc. All Rights Reserved

我們回不去了…

Page 8: KSDG meet-up #1

我們碰到的瓶頸

·• 主要後端語言PHP

·• PHP 很讚 – 好開發/效率不差 – 除了寫起來有點醜 – 要做 Comet / Web Socket 也可以

©2012. KKBOX Inc. All Rights Reserved

Page 9: KSDG meet-up #1

我們碰到的瓶頸

·• 持續連線數量大時

·• php-cgi 會卡很大

·• 加機器?

·• php-cgi 實在很肥…

©2012. KKBOX Inc. All Rights Reserved

但…

Page 10: KSDG meet-up #1

所以需要找個連線成本低的方案

·• Javascript: node.JS

·• Python: Twisted, Tornado

·• Ruby: Event Machine

·• Java: Jetty

·• Erlang….

©2012. KKBOX Inc. All Rights Reserved

Page 11: KSDG meet-up #1

node.JS 優點

·• Javascript大家都會寫

·• 連線成本低, 處理連線效率高

·• 大量開發者投入, api 完整度越來越高

·• 有Joyent、Microsoft等商業公司投入

·• UNIX like / Microsoft solution都有不錯支援

©2012. KKBOX Inc. All Rights Reserved

Page 12: KSDG meet-up #1

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

Page 13: KSDG meet-up #1

KKBOX哪邊用到 node.JS?

©2012. KKBOX Inc. All Rights Reserved

Page 14: KSDG meet-up #1

KKBOX一起聽

©2012. KKBOX Inc. All Rights Reserved

點播歌曲

點播歌曲

點播歌曲

創作者 / 演唱者

聽眾

聽眾

聽眾

素人DJ

直接互動

直接互動

歌迷互動

Page 15: KSDG meet-up #1

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

Page 16: KSDG meet-up #1

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

Page 17: KSDG meet-up #1

Summary

·• node.JS 已經足夠成熟

·• event driven 帶來許多 server-side 開發優勢 – 雷也不少 – 但瑕不掩瑜

©2012. KKBOX Inc. All Rights Reserved

Page 18: KSDG meet-up #1

大家來寫 Javascript 吧~

©2012. KKBOX Inc. All Rights Reserved

Page 19: KSDG meet-up #1

Thanks

©2012. KKBOX Inc. All Rights Reserved

[email protected]