Non è stato ciò che causa problemi di scalabilità, ma stare al passo con lo stato .
Non so se devi progettare un'interfaccia REST, che è su trasferimento di stato , non statelesness . Statelesness significherebbe che fare la stessa azione due volte ha lo stesso risultato.
Questo non vale nemmeno per HTTP. Se esegui due volte una richiesta DELETE, il secondo è praticamente destinato a fallire.
Se stai sviluppando un gioco basato su HTML, niente ti impedisce di mantenere lo stato sul client in JavaScript.
Nei server, il problema con lo stato è solitamente la sua mutabilità:
-
ottenere i dati modificati a metà (ad esempio, se un cavaliere degli scacchi si muove, cambiano entrambe le coordinate: se una parte del sistema ottiene i dati con solo una delle coordinate modificate, ci sarebbero potenziali problemi)
-
cambio di dati tra il trasferimento : supponiamo A chiamate B, ed entrambi usano C. A presuppone che C abbia un certo stato, e si aspetta che B si comporti di conseguenza. Eppure nel frattempo, C è cambiato, e B si comporta diversamente. Si verificano errori.
Inoltre, c'è un problema con concorrenza :
- i componenti paralleli che ottengono uno stato diverso e pensano il loro è giusto: questo è chiamato conflitto . Un esempio potrebbe essere, quando in una partita in tempo reale, colpisci un avversario, anche un avversario ti colpisce, ed entrambi i colpi sono fatali. Ognuno di loro penserebbe che l'altro sia morto e hanno vinto
E infine, c'è un problema con archiviazione e recupero e fallimento :
-
componenti morenti : supponiamo che ci sia un negozio online e che l'utente abbia un cestino. Se il paniere è gestito da un singolo compoennt, potrebbe morire se ci sono troppi clienti. Se è gestito da 10 componenti, ognuno dei quali gestisce un sottoinsieme di clienti, cosa succede se muore il componente che gestiva lo stato dell'utente corrente?
Quindi, lo stato è normale. Fa parte della vita. I computer riguardano le interazioni: un computer non interattivo si chiama libro o giornale, o piuttosto un poster (come un libro ha sia stati aperti che chiusi). Interazione cambia stato . Mentre cerchiamo di ridurre al minimo il mantenimento dello stato, non possiamo evitarlo per natura.