Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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

2,015 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

“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

×