Qual è il vantaggio chiave (per quanto riguarda la scalabilità) del meccanismo di cookie + cache in Play 2.0 rispetto a Java ee httpSession?

StackOverflow https://stackoverflow.com/questions/9427486

  •  12-11-2019
  •  | 
  •  

Domanda

Capisco che non ci piace mantenere lo stato di sessione sul server per motivi di scalabilità in generale, ma non vedo perché si dice che l'approccio adottato da Play 2.0 sia migliore della vecchia scuola HttpSession.

Una grande differenza che vedo è il fatto che l'implementazione di HTTPSession è fornita dal contenitore, e quindi le capacità di ridimensionamento con HTTPSession dipendono da esso.

È stato utile?

Soluzione

Ci sono una serie di vantaggi con questo. In sostanza, il modello di sessione in gioco promuove una condivisione di nulla architettura. Ciò significa che ogni azione eseguita, che se segui il modello come promuove Play, è una richiesta riposante, l'esecuzione dell'azione è del tutto autonomamente contenuta. Ciò significa che ogni richiesta può essere testata singolarmente e l'applicazione si è sviluppata come una serie di funzioni discrete.

Il principio qui è che meno accoppiamento tra ogni azione e lo stato meno conversazionale che viene gestito da una sessione di grassi, il tuo codice più pulito e più robusto diventa.

Come effetto collaterale, hai anche il facile ridimensionamento aggiungendo più nodi orizzontalmente, che di solito è più economico del ridimensionamento verticale e meno complesso e rischioso delle sessioni appiccicose.

Altri suggerimenti

Utilizzando una sessione gestita da contenitore (e il suo stato incapsulato) significa quando si desidera ridimensionare in orizzontale, i sistemi coinvolti dovranno anche assicurarsi che replicano questo stato perché l'applicazione non funzionerà senza di essa. Un client che utilizza l'applicazione è effettivamente associato a particolare Node a cui l'utente sia indirizzato.

In contrasto; Quando l'applicazione non mantiene uno stato di sessione reale in qualsiasi momento (come dovrebbe essere l'applicazione di gioco), è molto facile ridimensionare in orizzontale: basta aggiungere più nodi che eseguono l'applicazione e assicurati che il server HTTP front-end conosca i nuovi nodi. Nessun algoritmi fantasiosi e "piattaforme aziendali" per replicare e mantenere sessioni in tutti i nodi.

No, in realtà è un po 'più complicato di così. Play in realtà spinge a apolide Architettura per applicazioni. Significa che non stai archiviando dati nella sessione. Niente, tranne che le credenziali potrebbero essere archiviate.

Prima regola : L'archiviazione della sessione viene espulsa nel database. Invece di recuperare i dati dalla sessione, ottenerli dal database. La scalabilità è molto più semplice per i database rispetto alle applicazioni JVM.

Seconda regola : Nulla è memorizzato altro che le credenziali. Significa che dovrai trasmettere informazioni altrimenti per gli stati di conversazione. Ci sono due modi di rete per farlo. Usando i campi nascosti, che a mio avviso non è il modo migliore. In secondo luogo, utilizzare URL assoluti. Creare un URL contenente ID, ricerche e altri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top