cos'è "graceful degradation"?

10

Ho sentito parlare molto di questo termine "Grazioso degrado".

Ad esempio,

 "An application server should gracefully degrage when it is under heavy load "

  "Graceful degradation of user interfaces.... "

Il termine sembra una cosa astratta per me. Qualche esempio concreto di cosa significa?

    
posta Vinoth Kumar C M 27.09.2011 - 07:53
fonte

6 risposte

9

Ecco alcuni esempi:

  • Se si esauriscono alcune risorse (handle, socket, memoria, spazio su disco), non si arresta in modo anomalo, ma si continua a servire il maggior numero di utenti possibile con le risorse disponibili. Qualcosa che non degrada gradevolmente può semplicemente smettere di funzionare quando viene portato fuori dalla busta del design.
  • In caso di carichi più pesanti di quelli progettati per gli utenti, la risposta sarà più lenta di quanto hai progettato. Senza un degrado graduale che il sistema smetta di funzionare una volta superati i requisiti può essere accettabile.
  • Condizioni di errore, come guasto dell'unità disco, errore nel core della CPU, errore nella memoria. Un sistema progettato per degradare con grazia può continuare a funzionare in alcune modalità ridotte (ad esempio senza poter accedere ai dati nell'unità guasta ma ancora consegnando dati dall'unità che non ha avuto esito negativo) mentre un'altra semplicemente si blocca.
risposta data 27.09.2011 - 08:21
fonte
5

Le applicazioni che hanno una modalità "degradata" generalmente offrono l'accesso a un insieme limitato di funzioni a causa di un problema interno o esterno. Ad esempio, immagina che l'applicazione si connetta a due diverse origini dati. Se uno di questi fallisce potrebbe comunque essere possibile continuare a farlo funzionare, ma disabilitare tutte le funzionalità visive (o / e backend) relative alla risorsa non disponibile.

Esempio concreto: l'applicazione ha due origini dati, in una di queste si memorizzano le persone, nell'altra si memorizzano gli account. Anche se il database degli account fallisce, se l'applicazione ha una modalità degradata, dovresti comunque essere in grado di creare nuove persone, anche se non interagire con i loro account.

Per quanto riguarda l'interfaccia utente, in genere ciò significa che all'utente viene chiaramente indicato che alcune funzioni sono disabilitate e visualizza alcuni messaggi di avviso in modo che non venga lasciato fuori al buio per sapere perché qualcosa non è disponibile.

Inoltre, vi è una voce di Wikipedia relativa ai sistemi fault-tolerant .

    
risposta data 27.09.2011 - 08:04
fonte
2

Con l'avanzamento della tecnologia, abbiamo sempre delle modifiche che si trasformano in un'applicazione che in ogni momento potrebbe non essere supportata da tutti i destinatari. In tali scenari, ci imbattiamo in Degrado gradevole che emula quello che creiamo per il meglio disponibile, ma abbiamo anche un sistema sicuro per quelli che non sono stati aggiornati o il loro sistema potrebbe non supportare.

Un esempio importante è il tag <img> che ha l'attributo alt che è utile per i casi in cui le immagini sono bloccate o disattivate, ora queste forniscono un contesto significativo per le immagini (ovviamente solo se specificiamo) .

Bene, un altro esempio a cui riesco a pensare sono i fogli di stile in caso di errore o indisponibilità, il browser fornisce una versione generica per mostrare / visualizzare la pagina.

Ora che hai menzionato un carico pesante devi sborsare attentamente un piano come ciò che deve essere fatto se i tuoi colpi superano la soglia, disabiliti certe funzionalità o sospendi alcuni servizi che non sono critici e ti danno una pausa. Tutto ciò ti aiuterà a impostare un degrado aggraziato in modo che l'utente sappia a causa delle x cose che il server potrebbe impiegare del tempo per rispondere o il servizio x non sarebbe disponibile per un'ora o così

    
risposta data 27.09.2011 - 08:19
fonte
1

Significa che quando gli input e lo stato superano i limiti di progettazione, le uscite rimangono il più possibile ragionevoli e affidabili.

Se si tratta di un server progettato per gestire 100 connessioni simultanee, non si arresta in modo anomalo o inizia a restituire risultati pazzeschi a 101 o addirittura 150 connessioni: rallenta o forse riduce alcune connessioni, ma continua a funzionare principalmente. Se si tratta di un database progettato per gestire 1 miliardo di record, non rallenta improvvisamente in uno stato inutilizzabile a 1,01 miliardi.

    
risposta data 27.09.2011 - 08:30
fonte
1

Se non hai un sistema grafico (come nessun server X11 in esecuzione), il tuo programma dovrebbe fornire almeno una CLI, come ncurses.

vi ha una modalità stupida in cui si comporta come ex, se il terminale ha troppo poche funzionalità.

    
risposta data 27.09.2011 - 08:37
fonte
1

Quando si creano applicazioni web, la degradazione graduale entra in gioco quando il tuo sito si basa su JavaScript o Flash o su tecniche simili che l'utente non ha o disabilita.

Quindi dovresti comunque fornire alcune funzionalità di base con solo HTML o almeno un messaggio per cui il sito non funziona come previsto.

    
risposta data 27.09.2011 - 13:11
fonte

Leggi altre domande sui tag