2011-09-28 13 views
8

In che modo ASP.Net gestisce i dati di sessione in un ambiente con bilanciamento del carico? Diciamo che un utente fa più richieste mentre naviga attraverso un paio di pagine? Tutte le richieste passano allo stesso server nel servizio di bilanciamento del carico?ASP.Net - Gestione dei dati di sessione in un ambiente con bilanciamento del carico?

Cosa posso fare se non puntano tutti allo stesso server? come faccio a gestire i miei dati di sessione?

risposta

4

È necessario assicurarsi che il NLB abbia la possibilità di abilitare le sessioni "Appiccicose".

Se questo non è un'opzione, allora avete bisogno di guardare con il ASP.Net Session Modes per configurare un server di sessione, o qualche archivio di backup come SQL Server.

1

Nella maggior parte dei bilanciatori di carico generale cercare di avere connessioni persistenti, ma per i vostri scopi non si può garantirlo. È preferibile utilizzare qualcosa come un back-end SQL per mantenere lo stato o creare una classe separata per gestire i dati della sessione. In entrambi i casi, è possibile ricostruire i dati della sessione se risulta nullo quando si prevede che sia diverso. Tendo ad usare i getter per controllare la null e ricostruire quando necessario. In pratica, non ho fatto alcuna metrica per vedere quanto spesso è stata ricostruita, ma immagino non molto spesso. Meglio essere sicuri che dispiaciuti, come si suol dire.

1

I bilanciatori del carico di solito possono essere configurati con qualcosa che i tipi di infrastrutture chiamano sticky session o sticky bit. Su questo tipo di ambiente, una volta che una richiesta è stata assegnata a un server; rimane con quel server per tutta la sessione.

Quando Load Balancer non è configurato in modo tale, ASP.NET offre diversi provider di stato sessione. Uno molto popolare è il SQL Server State Provider, che consente di memorizzare le informazioni di sessione in un database. Affinché questo funzioni, tutti gli oggetti posizionati nell'oggetto Session devono essere serializzabili in modo che possano essere memorizzati in una tabella.

Come ho già detto, ci sono molte altre alternative; ad esempio, alcune persone preferiscono utilizzare un approccio diverso come memcached o prodotti simili.

1

È possibile utilizzare NLB da Windows o altri prodotti come BIG-IP F5, HA Proxy, ci sono tantissime opzioni.

Utilizzare Out-of-Proc (server di stato) e assicurarsi che le impostazioni della macchinakey siano uguali su tutti i server. Assicurati inoltre di eseguire l'IO su un'unità disco condivisa come un NAS.

Ecco un link con alcuni ulteriori suggerimenti: Load Balancing and ASP.NET

Problemi correlati