Domanda

Sto cercando una soluzione gratuita, ad alta disponibilità e ad alte prestazioni per la memorizzazione nella cache o l'archiviazione dei dati della sessione .net (per un sito Web ad alto traffico). Non voglio usare un db (db è il collo di bottiglia sull'aumento del traffico).

Ci sono alcuni archivi chiave / valore, ma per quanto ne so non supportano oggetti .net. E ci sono alcune soluzioni di cache distribuite o replicate che supportano l'alta disponibilità.

Ma qual è il modo migliore per archiviare i dati di sessione (meglio se funziona su mono)?

MODIFICA: per l'alta disponibilità, devo replicare i dati della sessione utente su più macchine. Posso scrivere un serializzatore se è necessario per ottenere il metodo migliore. Le sessioni utente contengono oggetti standard necessari per un sito di e-commerce.

Saluti, Sirmak

È stato utile?

Soluzione

Bene, puoi usare il Session State Server che funziona come un servizio Windows, ma per farlo funzionare in uno scenario di web farm dovrai avere uno dei server web che eseguono il servizio Session State e gli altri server web si coordinerà con quel singolo server web. Questo ovviamente è un problema se il tuo server web si spegne e sta eseguendo il servizio.

Un'altra opzione sarebbe quella di utilizzare memcachd che è un server di stato della sessione di memoria distribuito. Questo è gratuito e esiste già un provider per .NET per questo framework. È abbastanza maturo ed è in circolazione da un po '.

Se hai soldi da spendere, il ridimensionamento del server potrebbe essere un'opzione. Mi è stato detto, tuttavia, che su siti Web su larga scala è necessario riciclare periodicamente la tecnologia di ridimensionamento.

In arrivo da Microsoft c'è Velocity, che è l'equivalente di .NET in memcached. Questo non è ancora stato rilasciato e non è una tecnologia matura.

Dovrai scegliere la soluzione adatta alle tue esigenze tecniche e finanziarie.

Altri suggerimenti

Se parli in modo libero, MySQL è in grado di gestione del traffico ad alto volume (ovviamente sull'hardware giusto)

Bene, prima devi determinare cosa stai memorizzando nella sessione. Ci sono alcune cose che non possono essere serializzate. Tuttavia, è possibile implementare le proprie routine di serializzazione per gli oggetti pertinenti e archiviarle in un modo che si crea. Ad esempio, è possibile internamente a una BinarySerialisation, quindi scrivere l'oggetto come stringa codificata base64 in uno strumento di memorizzazione nella cache (memcached o altro) e recuperarlo.

Ma anche che tipo di scalabilità sceglierai qui? Stai scambiando utenti tra server per richiesta? In tal caso, sarà necessario almeno un sistema di cache centrale, o almeno il mirroring.

Se manterrai un utente sullo stesso server, ma potresti averne molti, quindi non importa, puoi utilizzare un processo esterno sullo stesso computer per memorizzare nella cache.

Penso che dovrai fornire un po 'più di informazioni. Non ho familiarità con le cose in esecuzione su mono, (quindi consiglierei solo il servizio di stato asp.net) ma la mia ipotesi è che un processo di memorizzazione nella cache di terze parti, come memcached, potrebbe essere buono.

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