Skalerbare websocket-tjenester         med Node.js
Prosjekt: Dagbladet Livestudio
Websockets•   F5 -> Ajax -> Websockets•   Websockets: Holder forbindelsen åpen•   Ajax: Ringer opp på nytt•   Kan gi oppda...
Eksempler• Eksempel på websocket-tjenester:  – Facebook, Twitter  – Forex Trading: http://demo.kaazing.com/forex/  – Space...
Andre applikasjoner som kan dra      nytte av websockets• Applikasjoner som trenger oppdateringer i  sanntid• Responsivt d...
Utvikler-verktøyene• Node.js   – Webserver/nettverksapplikasjon   – Brukes av blant annet Yahoo, Ebay, Linkedin, Microsoft...
Hvordan bruker man verktøyene?• Første forsøk  – Oppretter en node-applikasjon (webserver)    som gjør alle oppgavene    •...
Server 1           node app.js
Bryter opp i flere node-apper• En node-app tar seg av websocket-  tilkoblinger vha Socket.io• En node-app tar seg av front...
Server 1           node frontend.js           node sockets.js
Server 1               node frontend.js               node sockets.js             Problemet:Får fortsatt bare 10000 tilkob...
Server 1           node frontend.js           node sockets.js           node sockets.js           node sockets.js         ...
Server 1                              Socket-server 1           node frontend.js                              Socket-serve...
Server 1                                    Socket-server 1           node frontend.js                                    ...
Server 1                                    Socket-server 1           node frontend.js                                    ...
Server 1    node frontend.js    node sockets.js    node sockets.js                       node redis.js    node sockets.js ...
Server 1    node frontend.js    node sockets.js    node sockets.js                                       node redis.js    ...
Server                  frontend x 8                         redisServer                           Server   socket x 8    ...
redis  socketx8 socketx8 socketx8 socketx8             browsereCa 320 000 websocket-tilkoblinger
redis                                                            redis          redis                                     ...
Hovedpoenget• Websockets gir enorme muligheter for hva  man kan lage• Node.js gjør det enkelt for utviklere å  bygge webso...
“Hvordan levere live-oppdateringer til mange brukere samtidig med Node.js?”, Dagbladets Gunnar Fornes på NONA12
Upcoming SlideShare
Loading in …5
×

“Hvordan levere live-oppdateringer til mange brukere samtidig med Node.js?”, Dagbladets Gunnar Fornes på NONA12

1,933 views
1,892 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,933
On SlideShare
0
From Embeds
0
Number of Embeds
1,221
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

“Hvordan levere live-oppdateringer til mange brukere samtidig med Node.js?”, Dagbladets Gunnar Fornes på NONA12

  1. 1. Skalerbare websocket-tjenester med Node.js
  2. 2. Prosjekt: Dagbladet Livestudio
  3. 3. Websockets• F5 -> Ajax -> Websockets• Websockets: Holder forbindelsen åpen• Ajax: Ringer opp på nytt• Kan gi oppdateringer i sanntid• Holde samtalen / ringe opp på nytt – En annen måte å se på det: • Å konstant holde F5-knappen nede
  4. 4. Eksempler• Eksempel på websocket-tjenester: – Facebook, Twitter – Forex Trading: http://demo.kaazing.com/forex/ – Spaceships: https://developer.mozilla.org/media/uploads/demos/o/n/ond – Browserquest: http://browserquest.mozilla.org/
  5. 5. Andre applikasjoner som kan dra nytte av websockets• Applikasjoner som trenger oppdateringer i sanntid• Responsivt debattforum• Google Docs-lignende applikasjoner – For eks for felles forside-redigering• Live børs-oversikt• Twitter-lignende applikasjoner• Interaktive multiplayer-spill for web
  6. 6. Utvikler-verktøyene• Node.js – Webserver/nettverksapplikasjon – Brukes av blant annet Yahoo, Ebay, Linkedin, Microsoft Azure, Cloud9, Klout, Mockingbird• Socket.io – Populær node-modul for å jobbe med websocket-tilkoblinger• Redis – Gir skaleringsmuligheter – Brukes av blant annet Twitter, Digg, Disqus, Guardian, Stackoverflow, Flickr, Yahoo, Craigslist
  7. 7. Hvordan bruker man verktøyene?• Første forsøk – Oppretter en node-applikasjon (webserver) som gjør alle oppgavene • Håndterer alle forespørsler • Håndterer alle websocket-tilkoblinger • Gjør alle lagringer/hentinger fra database
  8. 8. Server 1 node app.js
  9. 9. Bryter opp i flere node-apper• En node-app tar seg av websocket- tilkoblinger vha Socket.io• En node-app tar seg av frontend forespørsler – Bilder, html, javascript, css, osv, osv
  10. 10. Server 1 node frontend.js node sockets.js
  11. 11. Server 1 node frontend.js node sockets.js Problemet:Får fortsatt bare 10000 tilkoblinger på EN socket-server app
  12. 12. Server 1 node frontend.js node sockets.js node sockets.js node sockets.js node sockets.js
  13. 13. Server 1 Socket-server 1 node frontend.js Socket-server 2 node sockets.js node sockets.js node sockets.js node sockets.js
  14. 14. Server 1 Socket-server 1 node frontend.js Socket-server 2 node sockets.js node sockets.js Problemet: node sockets.js Brukere som er tilkoblet til server 1 får ikke meldingene fra server 2,3 node sockets.js eller 4
  15. 15. Server 1 Socket-server 1 node frontend.js Socket-server 2 node sockets.js node sockets.js node sockets.js Problemet: Hvordan får brukere koblet til Socket-server 1 meldinger fra node sockets.js Socket-server 2 ? Redis
  16. 16. Server 1 node frontend.js node sockets.js node sockets.js node redis.js node sockets.js node sockets.js
  17. 17. Server 1 node frontend.js node sockets.js node sockets.js node redis.js node sockets.js node sockets.js Ca 40 000 websocket-tilkoblinger
  18. 18. Server frontend x 8 redisServer Server socket x 8 socket x 8 Ca 160 000 websocket-tilkoblinger
  19. 19. redis socketx8 socketx8 socketx8 socketx8 browsereCa 320 000 websocket-tilkoblinger
  20. 20. redis redis redis redis sockets sockets socketssockets sockets sockets sockets sockets sockets sockets sockets sockets Ca 1 000 000 websocket-tilkoblinger
  21. 21. Hovedpoenget• Websockets gir enorme muligheter for hva man kan lage• Node.js gjør det enkelt for utviklere å bygge websocket-tjenester som skalerer

×