Cours 2/3 - Architecture Web

2,698 views

Published on

Cours donné à l'HETIC aux H4. Architecture Web.
Ce cours traite des serveurs web, bases de données, application et scripts ainsi que des CDN.

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

No Downloads
Views
Total views
2,698
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
206
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Cours 2/3 - Architecture Web

  1. 1. Architecture web Cours
  2. 2. La saison 2013n aura pas lieu.
  3. 3. Reconversion deAlain Afflelou
  4. 4. Des bonnes etmauvaisesarchitectures
  5. 5. Caches et leur importance
  6. 6. Principes ducloud
  7. 7. Load balancers et proxys
  8. 8. Battle Plan pour aujourd huiServeurs Web Applications Bases de données CDN
  9. 9. Serveurs Web
  10. 10. et le serveurLe client
  11. 11. 1989 CERN WWW HTTPTim Berners-Lee HTML (aka TimBL)
  12. 12. protocole://user:pass@f.q.d.n:port/chemin! URI URL URN
  13. 13. WWW > Nexus
  14. 14. Récupérer les Ecouter sur le fichiers sur le port 80 disqueExécuter des Analyser les scripts / connexions H applications Gérer plusieurs Envoyer le connexions contenu simultanées demandé
  15. 15. Requête 2 Requête 3Requête 1 Requête 4 Requête 5 Requête 7 Requête 6
  16. 16. Requête 1 Requête 6 Requête 10 Requête 2 Requête 5 Requête 9 Requête 3 Requête 7 Requête 4 Requête 81 2 3 4 5 6 7 8 9 10
  17. 17. Requête 1 Requête 6 Requête 10 Requête 2 Requête 5 Requête 9 Requête 3 Requête 7 R eq Requête 4 Requête 8 uê te1 2 3 4 5 6 7 8 9 10 8
  18. 18. Apache
  19. 19. Evenements Threads
  20. 20. Contenus 32 Threads 41 En ligne
  21. 21. 1 2 3 4 5 4 2Evenements 3 5 1
  22. 22. Combien deserveurs web connaissez vous ?
  23. 23. Apache
  24. 24. rambler.ru500 Millions de page vues par jour
  25. 25. C10K2002 30% TOP Igor Sysoev 1000
  26. 26. V8 Google Javascript Engine Serveur Web Evenementiel Push & Long Pollingvar http = require(http);! !http.createServer(! function (request, response) {! response.writeHead(200, {Content-Type: text/plain});! response.end(Hello Worldn);! }!).listen(8000);! !console.log(Server running at http://localhost:8000/);!
  27. 27. C est quoi lelong polling ?
  28. 28. Client JS Serveur λ getNewEvents(); 1 “null” getNewEvents(); 2 Hello World Event “null” getNewEvents(); 3 “{ "Message": "Hello World!" }”
  29. 29. Client JS Node.js getNewEvents();Looooong HTTP Hello World Event “{ "Message": "Hello World!" }”
  30. 30. Applications
  31. 31. 1993 Ken CoarNCSACGI1997RFC-3875
  32. 32. Common Gateway Interface Serveur Web http http Client stdout CGI stdin1 requête = 1 process Application
  33. 33. 1996FastCGI
  34. 34. PHP-FPM PHP-FPM PHP-FPM Drupal Drupal Drupal
  35. 35. Bases de données
  36. 36. 1964Ansi/SparcPrix Turing1970SQLIBM Charles Bachman
  37. 37. Base de données hiérarchiqueBase dedonnées réseauBase de donnéesrelationnelleBase de données orientéeobjetBase de données orientéedocumentsBase de données XMLBasede données orientée composant
  38. 38. Base de données relationnelle
  39. 39. Normalisation
  40. 40. 1995 David Axmark
  41. 41. MyISAM InnoDB Pas de ACIDtransactions Lock de Lock de tables lignes
  42. 42. C est quoi le acid ?
  43. 43. AtomicitéCohérenceIsolationDurabilité
  44. 44. Atomicité
  45. 45. Cohérence
  46. 46. Isolation
  47. 47. Durabilité
  48. 48. SELECT nomFROM personnesWHERE id = 2
  49. 49. for (i=0; i<5000000; i++) {if personne[i].id == 2 break;}
  50. 50. Indexes
  51. 51. SELECT! DISTINCT(node.nid) AS nid,! node_data_field_contenu_1.field_contenu_1_nid ASnode_data_field_contenu_1_field_contenu_1_nid,! node.TYPE AS node_type,! node.vid AS node_vid,! node_data_field_contenu_1.field_contenu_2_nid ASnode_data_field_contenu_1_field_contenu_2_nid,! node_data_field_contenu_1.field_contenu_3_nid ASnode_data_field_contenu_1_field_contenu_3_nid,! node_data_field_contenu_1.field_contenu_4_nid ASnode_data_field_contenu_1_field_contenu_4_nid,! node_data_field_contenu_1.field_contenu_5_nid ASnode_data_field_contenu_1_field_contenu_5_nid,! node_data_field_contenu_1.field_contenu_6_nid ASnode_data_field_contenu_1_field_contenu_6_nid,! node_data_field_date.field_date_value AS node_data_field_date_field_date_value!FROM node node!LEFT JOIN content_field_date node_data_field_date ON node.vid = node_data_field_date.vid!LEFT JOIN content_type_une node_data_field_contenu_1 ON node.vid =node_data_field_contenu_1.vid!WHERE! ((node.TYPE IN (tagazok)) AND (node.STATUS <> 0))! AND (DATE_FORMAT(STR_TO_DATE(node_data_field_date.field_date_value, %Y-%m-%dT%T), %Y-%m-%dT%H:%i:%s)<= 2009-06-30T00:55:00)!ORDER BY node_data_field_date_field_date_value DESC!LIMIT 0,1!
  52. 52. Théorème CAP
  53. 53. Consistency Availability2 Partition Tolerance
  54. 54. NoSQL1998 Carlo Strozzi
  55. 55. MongoDB Big Table CouchDBVoldemort CassandraHyperTable
  56. 56. use mydb! j = { name3:}! k = { x : "mongo" }! db.things.insert( j )! db.things.insert( k )!
  57. 57. Collections
  58. 58. db.inventory.find( !{ type: food, ! price: { ! $lt: 9.95 } !} )!
  59. 59. Sharding
  60. 60. CDN
  61. 61. Akamai =Intélligent
  62. 62. TelCoCDN
  63. 63. @mtopolovmtopolov@adyax.com

×