Distribuzione di un'applicazione in 2 o più server

1

Questa è probabilmente una domanda comune e ho letto molto su questo argomento, ma non riesco a trovare una soluzione.

Supponiamo di avere un'applicazione enterprise in un server glassfish situato a New York.

Quindi, la mia applicazione cresce molto velocemente e ho bisogno di un altro server con loadbalancer.

Ora la mia applicazione è in esecuzione su due server diversi collegati a un servizio di bilanciamento del carico.

Il problema, penso che sia un problema molto comune, è che agisce come due applicazioni completamente diverse eseguite su server diversi, anche se hanno lo stesso codice. Entrambi i server agiscono in modo completamente diverso.

Questo porta a un problema di concorrenza nel mio database, poiché entrambi i server puntano allo stesso db.

Ad esempio, entrambi i server allo stesso tempo (supponiamo), prova ad aggiornare lo stesso registro nel database, il primo server aggiornerà un campo (come "balance = 10 + 1") e l'altro server lo farà lo stesso, il risultato sarà il saldo = 11 invece 12 perché entrambi hanno ottenuto il valore originale allo stesso tempo.

Che cosa consiglia per questo problema ?, stiamo usando un'istanza del server Payara e apparentemente payara ha un'integrazione di nocciola che può essere un indizio.

    
posta Rafihna 28.06.2016 - 20:55
fonte

1 risposta

1

Gli stessi problemi esistono anche con un singolo server. Cosa succede se due utenti connessi allo stesso server aggiornano lo stesso saldo allo stesso tempo? Cosa succede se lo stesso utente apre due schede nel browser o due diversi browser o semplicemente si connette da due dispositivi come un PC e uno smartphone contemporaneamente?

Cosa succede più spesso che l'applicazione esegua operazioni di business complesse all'interno di una transazione, ma deve anche conservare le informazioni attraverso le operazioni (nella cache locale, nelle variabili di sessione, nelle variabili globali statiche, qualunque cosa). Questo è quando si verifica effettivamente un problema in cui un'applicazione che funziona perfettamente su un singolo server non funziona su un cluster di server, poiché un server non sa necessariamente quali dati memorizzati localmente sono stati invalidati da altri server. In questi casi, le applicazioni devono essere riprogettate per utilizzare la cache distribuita e i server proxy inversi possono essere configurati per utilizzare sessioni persistenti.

    
risposta data 28.06.2016 - 23:34
fonte

Leggi altre domande sui tag