Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Distribuzione delle sessioni in PHP<br />di<br />Gianluca GIMIGLIANO<br />gimigliano@tin.it<br />
Perché le sessioni?<br />Perché il protocollo HTTP è statelessness, ossia non è in grado di veicolare informazioni su even...
Utilizzo tipico delle sessioni<br />Tenere memoria dell’avvenuta autenticazione in un’area riservata<br />Mantenere la tra...
Come PHP gestisce le sessioni<br />Quando un client si connette per la prima volta,<br /> il motore delle sessioni del PHP...
Funzionamento della sessione<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />a1b2c3...
Scalare un sito su più server<br />All’aumentare delle richieste un solo server (virtuale o fisico che sia) può non essere...
Generalmente una macchina bilanciata<br />Non è tenuta a sapere di esserlo<br />E’ configurata esattamente come tutte le a...
Il problema delle sessioni con bilanciamento<br />Poiché il cookie viene generato da una delle macchine bilanciate ed il f...
Problema del bilanciatore<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />GET index...
Possibile soluzione 1<br />Bilanciamento mirato<br />Il bilanciatore entra nel merito del protocollo, riconosce la presenz...
Problema del bilanciatore<br />A<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />sc...
Vantaggi<br />Non necessita di modifiche sia negli applicativi che nelle configurazioni dei server<br />Veloce, la tabella...
Svantaggi<br />Occorre programmare il bilanciatore<br />Applicazioni diverse potrebbero usare cookie di sessione con nome ...
Possibile soluzione 2<br />Concentrazione dei dati<br />I dati di sessione vengono accentrati in un unico storage condivis...
Esempio di sessioni accentrate<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />GET ...
Vantaggi e svantaggi<br />Dipendono dal tipo di storage<br />
File sharing<br />Vantaggi<br />Di facile utilizzazione, basta cambiare la direttiva session.save_path del PHP.ini imposta...
DB<br />Vantaggi<br />Permette di monitorare in tempo reale lo stato delle varie sessioni tramite SQL<br />Prestazioni ele...
Memcache<br />Vantaggi<br />Decisamente più veloce di tutti in quanto è un servizio di RAM condivisa<br />Non occorre intr...
Allora, abbiamo una soluzione?<br />Teoricamente Si, ma in realtà tutte le soluzioni proposte hanno una debolezza architet...
Possibile soluzione 3<br />Innanzitutto cambiamo un pochino le classiche caratteristiche di una macchina bilanciata:<br />...
I presupposti<br />Installare una memcache su ogni macchina che fungerà da storage per le sessioni di quel singolo server<...
L’idea<br />Quando un server riceve una richiesta per la prima volta genera una sessione nella memcache locale facendo ini...
Esempio sessioni distribuite<br />A<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br /...
Vantaggi<br />Robustezza, tra i server si genera una connettività a “maglia”, in questo modo se un server cade tutti gli a...
Svantaggi<br />Occorre introdurre codice PHP per la gestione della sessione, ma come detto, con la direttiva auto_prepend ...
Ulteriori migliorie<br />Fare in modo che il dialogo tra i server avvenga su una rete diversa rispetto a quella sulla qual...
Batteria di webserver e memcache server<br />A<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…sc...
Come costruire un gestore di sessioni<br />Attraverso la funzione session_set_save_handlerè possibile sostituire le operaz...
Una generica classe astratta di gestione sessioni<br />
L’implementazione I° parte<br />
L’implementazione II° parte<br />
Un esempio pratico<br />
Próxima SlideShare
Cargando en…5
×

Distribuzione delle sessioni in PHP in caso di load balancing su più server

2.899 visualizaciones

Publicado el

La distribuzione delle sessioni è un problema che riguarda la scalabilità dei siti web su più server, in particolare per PHP che di norma salva le sessioni su file system del singolo server.
In questo talk vedremo alcune strategie di risoluzione del problema (load balancing mirato, accentramento delle sessioni) e ci soffermeremo su una personale soluzione che prevede delle sessioni distribuite su più macchine contemporaneamente creando un’architettura a maglia attraverso l’uso di memcache

Publicado en: Tecnología
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

Distribuzione delle sessioni in PHP in caso di load balancing su più server

  1. 1. Distribuzione delle sessioni in PHP<br />di<br />Gianluca GIMIGLIANO<br />gimigliano@tin.it<br />
  2. 2. Perché le sessioni?<br />Perché il protocollo HTTP è statelessness, ossia non è in grado di veicolare informazioni su eventuali scelte pregresse quindi:<br />Ogni richiesta del client fa storia a sé e non ha memoria del passato<br />Non è possibile associare delle variabili di stato ad un determinato client<br />
  3. 3. Utilizzo tipico delle sessioni<br />Tenere memoria dell’avvenuta autenticazione in un’area riservata<br />Mantenere la traccia di scelte effettuate dal navigatore in pagine diverse del sito (es. carrelli)<br />
  4. 4. Come PHP gestisce le sessioni<br />Quando un client si connette per la prima volta,<br /> il motore delle sessioni del PHP genera un id univoco e crea un file nel quale verranno salvate le “variabili di sessione” e che ha per nome quello stesso id. Insieme alla risposta al al client viene inviato un “cookie di sessione” che ha per valore quell’id.<br />In questo modo, ogni volta che un client presenterà una richiesta con quel cookie, il PHP saprà in quale file sono contenute la variabili relative a quella sessione ripristinandole<br />
  5. 5. Funzionamento della sessione<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />a1b2c3d…scelta=x<br />scelta2=y<br />GET index.php?scelta=x HTTP/1.1<br />………<br />GET index.php?scelta2=y HTTP/1.1<br />Cookie: SESSID=a1b2c3d..<br />………<br />
  6. 6. Scalare un sito su più server<br />All’aumentare delle richieste un solo server (virtuale o fisico che sia) può non essere più sufficiente e nasce quindi la necessità di mettere più macchine in batteria.<br />La scelta di quale macchina risponderà ad una determinata richiesta viene fatta da un’apposita apparecchiatura di rete: il “bilanciatore” che garantisce la distribuzione delle richieste secondo politiche definite dall’utente (es. equa distribuzione del carico su tutte le macchine).<br />
  7. 7. Generalmente una macchina bilanciata<br />Non è tenuta a sapere di esserlo<br />E’ configurata esattamente come tutte le altre<br />Produce risposte che, sia nel protocollo che nel contenuto, sono indistinguibili dalle risposte generate da un’altra macchina bilanciata<br />
  8. 8. Il problema delle sessioni con bilanciamento<br />Poiché il cookie viene generato da una delle macchine bilanciate ed il file con le variabili si trova su di essa, quando il bilanciatore andrà a instradare una richiesta con il cookie di sessione su un’altra macchina questa non avrà a disposizione memoria del passato della sessione.<br />Tale memoria tornerà “misteriosamente” disponibile quando le richieste torneranno sulla macchina che ha generato inizialmente la sessione.<br />
  9. 9. Problema del bilanciatore<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />GET index.php?scelta=x HTTP/1.1<br />………<br />GET index.php?scelta2=y HTTP/1.1<br />Cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta2=y<br />
  10. 10. Possibile soluzione 1<br />Bilanciamento mirato<br />Il bilanciatore entra nel merito del protocollo, riconosce la presenza del cookie di sessione nella risposta del server, e da quel momento tutte le richieste con quel cookie verranno assegnate a quel server<br />
  11. 11. Problema del bilanciatore<br />A<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />scelta2=y<br />GET index.php?scelta=x HTTP/1.1<br />………<br />GET index.php?scelta2=y HTTP/1.1<br />Cookie: SESSID=a1b2c3d..<br />………<br />B<br />A) “SESSID=a1b2c3d..”<br />
  12. 12. Vantaggi<br />Non necessita di modifiche sia negli applicativi che nelle configurazioni dei server<br />Veloce, la tabella con le assegnazioni dei cookie ai server è gestita in RAM dal bilanciatore con SW integrato nel firmware<br />
  13. 13. Svantaggi<br />Occorre programmare il bilanciatore<br />Applicazioni diverse potrebbero usare cookie di sessione con nome diverso ed il bilanciatore deve tenerne conto<br />Il bilanciatore non può sapere il peso ed il numero di transazioni che genererà un client a cui assegna una macchina quindi il carico potrebbe risultare paradossalmente sbilanciato (specie se l’algoritmo di distribuzione è pesato per difformità nelle prestazioni delle macchine)<br />
  14. 14. Possibile soluzione 2<br />Concentrazione dei dati<br />I dati di sessione vengono accentrati in un unico storage condiviso che può essere file sharing, DB, memcache<br />
  15. 15. Esempio di sessioni accentrate<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />GET index.php?scelta=x HTTP/1.1<br />………<br />GET index.php?scelta2=y HTTP/1.1<br />Cookie: SESSID=a1b2c3d..<br />………<br />scelta2=y<br />
  16. 16. Vantaggi e svantaggi<br />Dipendono dal tipo di storage<br />
  17. 17. File sharing<br />Vantaggi<br />Di facile utilizzazione, basta cambiare la direttiva session.save_path del PHP.ini impostando il percorso della cartella condivisa<br />Non prevede nessuna modifica al codice degli script<br />Svantaggi<br />Sicuramente dal punto di vista prestazionale non garantisce risultati eccellenti a meno di investire in apparecchiature dedicate (e costose)<br />
  18. 18. DB<br />Vantaggi<br />Permette di monitorare in tempo reale lo stato delle varie sessioni tramite SQL<br />Prestazioni elevate<br />Svantaggi<br />Occorre introdurre codice PHP per la gestione della sessione (vedremo poi come) che eventualmente si può includere in modo trasparente impostando il parametro auto_prepend_file del PHP.ini<br />Se il DB è lo stesso usato per i dati delle applicazioni occorre però verificarne la capacità sopportare entrambi i carichi di lavoro<br />
  19. 19. Memcache<br />Vantaggi<br />Decisamente più veloce di tutti in quanto è un servizio di RAM condivisa<br />Non occorre introdurre codice PHP, basta modificare i parametri del PHP.inies:[Session]session.save_handler = memcachesession.save_path= "tcp://storage:11211"<br />Svantaggi<br />Le sessioni non hanno un lock di scrittura … <br />….ma non è detto che sia uno svantaggio<br />
  20. 20. Allora, abbiamo una soluzione?<br />Teoricamente Si, ma in realtà tutte le soluzioni proposte hanno una debolezza architetturale:<br />Se lo storage smette di funzionare nessuna sessione funziona più e quindi niente più login o carrelli<br />
  21. 21. Possibile soluzione 3<br />Innanzitutto cambiamo un pochino le classiche caratteristiche di una macchina bilanciata:<br />Non è tenuta a sapere di esserlo<br />Sa di esserlo e conosce gli IP di tutte le altre macchine bilanciate<br />Produce risposte che, sia nel protocollo che nel contenuto, sono indistinguibili dalle risposte generate da un’altra macchina bilanciata<br />Il valore del cookie di sessione è in grado di veicolare informazioni sulla macchina che ha generato la sessione<br />E’ configurata esattamente come tutte le altre<br /><br />
  22. 22. I presupposti<br />Installare una memcache su ogni macchina che fungerà da storage per le sessioni di quel singolo server<br />Ad ogni server è assegnata una lettera <br />Ogni macchina conosce le lettere di tutte le altre ed è in grado di ricavare l’IP da una data lettera<br />L’Id di sessione generato da ogni server inizia sempre con la lettera associata a quella macchina<br />
  23. 23. L’idea<br />Quando un server riceve una richiesta per la prima volta genera una sessione nella memcache locale facendo iniziare il cookie di sessione con la propria lettera<br /> Ogni volta che un server riceve una richiesta con cookie di sessione estrae la prima lettera e, se è la propria usa la sessione locale, altrimenti si connetterà alla memcache del server che ha generato quella sessione<br />
  24. 24. Esempio sessioni distribuite<br />A<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />scelta2=y<br />GET index.php?scelta=x HTTP/1.1<br />………<br />GET index.php?scelta2=y HTTP/1.1<br />Cookie: SESSID=a1b2c3d..<br />………<br />B<br />
  25. 25. Vantaggi<br />Robustezza, tra i server si genera una connettività a “maglia”, in questo modo se un server cade tutti gli altre continuano ad operare salvo il ripristino delle sessioni dei client ”orfani” <br />Velocità, derivante dall’uso di memcache<br />
  26. 26. Svantaggi<br />Occorre introdurre codice PHP per la gestione della sessione, ma come detto, con la direttiva auto_prepend si può fare in modo trasparente<br />
  27. 27. Ulteriori migliorie<br />Fare in modo che il dialogo tra i server avvenga su una rete diversa rispetto a quella sulla quale viaggia il traffico web (ma questa è una regola d’oro per tutte le soluzioni proposte)<br />Mettere le memcache su server diversi da quelli che fanno da webserver, in questo modo la lettera si riferirà ad una batteria di server memcache<br />
  28. 28. Batteria di webserver e memcache server<br />A<br />HTTP 200 OK<br />Set-cookie: SESSID=a1b2c3d..<br />………<br />a1b2c3d…scelta=x<br />scelta2=y<br />GET index.php?scelta=x HTTP/1.1<br />………<br />GET index.php?scelta2=y HTTP/1.1<br />Cookie: SESSID=a1b2c3d..<br />………<br />B<br />
  29. 29. Come costruire un gestore di sessioni<br />Attraverso la funzione session_set_save_handlerè possibile sostituire le operazioni native con quelle personalizzate che vengono generate sugli eventi:<br />Open: Apertura sella sessione (prima fase di session_start)<br />Read: Lettura dei dati di sessione dallo storage (seconda fase di session_start)<br />Write: Scrittura dei dati nello storage (prima fase di session_write_closeo termine dello script)<br />Close: Chiusura della sessione (seconda fase di session_write_closeo termine dello script)<br />Destroy: Distruzione dei dati della sessione (session_destroy)<br />GC: Pulizia delle sessioni scadute eventualmente invocata durante il session_start<br />
  30. 30. Una generica classe astratta di gestione sessioni<br />
  31. 31. L’implementazione I° parte<br />
  32. 32. L’implementazione II° parte<br />
  33. 33. Un esempio pratico<br />

×