Node.js w dużej skaliDreamLab Onet.plKraków, 25 marca 2012
Plan • Onet.Cloud • Metody skalowania • Specyficzne aspekty działania w dużej skali • Uruchomienie SG
NodeJS
Dynamiczna rzeczywistość (Cloud)
NodeJS SDK
Skalowaniehttp://www.visualphotos.com/
Skalowanie – Wątki vs Procesy                                http://www.michaeljohngrist.com/2009/02/ryogoku-sumo/
Procesy - Cluster
Procesy - Cluster
Procesy - Cluster
Isolate          http://www.flickr.com/photos/pepemczolz/5314122337/
Wątki - node-threads-a-gogofunction fibo (n) {   return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1;}function cb (err, data) {  ...
A my robimy to tak
A my robimy to tak                     Storage
A my robimy to tak                     Storage
A my robimy to tak       LB            Storage
Problem 1. Ograniczenia                          http://hdw.eweb4.com/out/126191.html
Problem 2. Pule połączeń        NodeJS App                                        Storage           Business        Connec...
Problem 2. Pule połączeń        NodeJS App                                        Storage           Business        Connec...
Problem 2. Pule połączeń        NodeJS App                                        Storage           Business        Connec...
Problem 2. Pule połączeń        NodeJS App                                        Storage           Business        Connec...
Problem 2. Pule połączeń        NodeJS App                                        Storage           Business        Connec...
Problem 2. Pule połączeń        NodeJS App                                        Storage           Business        Connec...
Problem 2. Pule połączeń        NodeJS App                                        Storage           Business        Connec...
Problem 2. Pule połączeń        NodeJS App                                        Storage           Business        Connec...
Problem 2. Pule połączeń        NodeJS App                                        Storage           Business        Connec...
Problem 2. Pule połączeńexport.request = function(options, cb) { if (options.agent === undefined) {   options.agent = getA...
Problem 3. Zarządzanie konfiguracją                                      http://www.wheatandtares.org/2010/11/29/change-wi...
Problem 3. Zarządzanie konfiguracją                                      http://svn.apache.org/repos/asf/zookeeper/logo/
Problem 4. Operacje blokujące • Buffer.toString() • JSON.parse • Gzip
NodeJS + moduły w C = NodeJS++                          http://www.tecnologiadiaria.com/2010/12/configurar-tiempo-expiraci...
Uriparser 3 razy szybszy niż url.parse Tak robią wszyscy: var handler = function(req, res) {     var http = require(http);...
CPU affinity               http://www.ksl.com/?nid=148&sid=12793814
Kilkaset tyś req/min                       http://www.onet.pl/
Uptime > 99.9%                 http://www.onet.pl/
Wiele razy wycofane testy                            http://9gag.com/
Charakterystyka ruchu        Noc. Nuuuda.
Charakterystyka ruchu    Ludzie przyszli do pracy    i wchodzą na Onet ;)
Charakterystyka ruchu        100% ruchu        z chmury!!
Charakterystyka ruchu                        Koniec testów.                        Otwieramy kolejnego szampana
Charakterystyka ruchu                        Użytkownicy przeczytali już                        cały Onet i idą spać
Dziękuję za uwagęBlog http://it-onet.blogujacy.pl/Github https://github.com/DreamLab
Upcoming SlideShare
Loading in...5
×

Node.js w dużej skali

1,044
-1

Published on

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

No Downloads
Views
Total Views
1,044
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Node.js w dużej skali

  1. 1. Node.js w dużej skaliDreamLab Onet.plKraków, 25 marca 2012
  2. 2. Plan • Onet.Cloud • Metody skalowania • Specyficzne aspekty działania w dużej skali • Uruchomienie SG
  3. 3. NodeJS
  4. 4. Dynamiczna rzeczywistość (Cloud)
  5. 5. NodeJS SDK
  6. 6. Skalowaniehttp://www.visualphotos.com/
  7. 7. Skalowanie – Wątki vs Procesy http://www.michaeljohngrist.com/2009/02/ryogoku-sumo/
  8. 8. Procesy - Cluster
  9. 9. Procesy - Cluster
  10. 10. Procesy - Cluster
  11. 11. Isolate http://www.flickr.com/photos/pepemczolz/5314122337/
  12. 12. Wątki - node-threads-a-gogofunction fibo (n) { return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1;}function cb (err, data) { process.stdout.write(data); this.eval(fibo(35), cb);}var thread= require(threads_a_gogo).create();thread.eval(fibo).eval(fibo(35), cb); https://github.com/xk/node-threads-a-gogo
  13. 13. A my robimy to tak
  14. 14. A my robimy to tak Storage
  15. 15. A my robimy to tak Storage
  16. 16. A my robimy to tak LB Storage
  17. 17. Problem 1. Ograniczenia http://hdw.eweb4.com/out/126191.html
  18. 18. Problem 2. Pule połączeń NodeJS App Storage Business Connection Logic Pool
  19. 19. Problem 2. Pule połączeń NodeJS App Storage Business Connection Logic Pool
  20. 20. Problem 2. Pule połączeń NodeJS App Storage Business Connection Logic Pool
  21. 21. Problem 2. Pule połączeń NodeJS App Storage Business Connection Logic Pool
  22. 22. Problem 2. Pule połączeń NodeJS App Storage Business Connection Logic Pool
  23. 23. Problem 2. Pule połączeń NodeJS App Storage Business Connection Logic Pool
  24. 24. Problem 2. Pule połączeń NodeJS App Storage Business Connection Logic Pool
  25. 25. Problem 2. Pule połączeń NodeJS App Storage Business Connection Logic Pool
  26. 26. Problem 2. Pule połączeń NodeJS App Storage Business Connection Logic Pool
  27. 27. Problem 2. Pule połączeńexport.request = function(options, cb) { if (options.agent === undefined) { options.agent = getAgent(options.host, options.port); } else if (options.agent === false) { options.agent = new Agent(options); } return exports._requestFromAgent(options, cb);};
  28. 28. Problem 3. Zarządzanie konfiguracją http://www.wheatandtares.org/2010/11/29/change-without-change/
  29. 29. Problem 3. Zarządzanie konfiguracją http://svn.apache.org/repos/asf/zookeeper/logo/
  30. 30. Problem 4. Operacje blokujące • Buffer.toString() • JSON.parse • Gzip
  31. 31. NodeJS + moduły w C = NodeJS++ http://www.tecnologiadiaria.com/2010/12/configurar-tiempo-expiracion-cache.html
  32. 32. Uriparser 3 razy szybszy niż url.parse Tak robią wszyscy: var handler = function(req, res) { var http = require(http); var u = http.parse(req.url); } Tak robimy my: var handler = function(req, res) { var uriparser = require(uriparser); var u = uriparser.parse(http://www.onet.pl/); } https://github.com/DreamLab/node-uriparser
  33. 33. CPU affinity http://www.ksl.com/?nid=148&sid=12793814
  34. 34. Kilkaset tyś req/min http://www.onet.pl/
  35. 35. Uptime > 99.9% http://www.onet.pl/
  36. 36. Wiele razy wycofane testy http://9gag.com/
  37. 37. Charakterystyka ruchu Noc. Nuuuda.
  38. 38. Charakterystyka ruchu Ludzie przyszli do pracy i wchodzą na Onet ;)
  39. 39. Charakterystyka ruchu 100% ruchu z chmury!!
  40. 40. Charakterystyka ruchu Koniec testów. Otwieramy kolejnego szampana
  41. 41. Charakterystyka ruchu Użytkownicy przeczytali już cały Onet i idą spać
  42. 42. Dziękuję za uwagęBlog http://it-onet.blogujacy.pl/Github https://github.com/DreamLab

×