2010-09-21 11 views

risposta

1

Erlang semplifica la creazione di molti piccoli processi e il monitoraggio di tali processi. Quando uno di questi processi si blocca, potrebbe essere possibile riavviare quella parte del sistema senza la necessità di riportare tutto in basso.

Si può aver visto qualcosa di simile nelle moderne versioni di Windows: il sistema può riavviare il driver grafico in caso di arresto anomalo; non uccide l'intero sistema.

Per semplificare la scrittura di applicazioni fault-tolerant, Erlang fornisce il concetto di processi supervisore. Questi processi monitorano un numero di processi figlio e sanno come rispondere se un bambino muore. È possibile creare un intero albero di supervisione, in modo da avere un controllo preciso su come si comportano le diverse parti dell'applicazione. Puoi leggere di più in the Erlang documentation.

2

Avvertenza: Sono un Erlang noob.

@ La risposta di Daniel è sostanzialmente corretta. Consiglio vivamente di dedicare del tempo a leggere il creatore di Erlang Joe Armstrong thesis (Realizzare sistemi distribuiti affidabili in presenza di errori software). La tesi fornisce una buona spiegazione della necessità e della soluzione per lo sviluppo di sistemi distribuiti robusti. Credo che la carta risponderà alla tua domanda in modo soddisfacente.

+0

Hehe, sono anche un Erlang noob, ma ho detto quello che ho detto perché è il modo in cui un sistema di Erlang idiomatico è fondamentalmente diverso da un sistema praticamente in ogni altro ambiente. O meglio, altri sistemi sembrano non fornire alcun consiglio su come gestire questi problemi, mentre Erlang lo fa. –

4

Penso di aver coperto parte della risposta in this reply to another thread.

+1

La tua risposta nell'altra discussione è abbastanza completa. Tutti quelli che sono interessati dovrebbero assolutamente dare un'occhiata. –

3

Erlang è tolleranza di errore con le seguenti cose in mente:

  • Erlang sa che gli errori accadrà, e le cose si romperà, così invece di guardia contro gli errori, Erlang permette di avere forti strumenti per ridurre al minimo l'impatto di errori e recuperare da loro mentre accadono.

  • Erlang ti incoraggia a programmare per caso di successo, e si blocca se qualcosa va storto senza provare a recuperare i dati parzialmente danneggiati. L'idea alla base di questo è che dati parzialmente errati possono propagarsi ulteriormente nel tuo sistema e possono essere scritti nel database, e quindi presentano rischi per il tuo sistema. È meglio sbarazzarsene presto e mantenere solo dati completamente corretti.

  • L'isolamento del processo in Erlang aiuta a ridurre al minimo l'impatto di dati parzialmente errati quando appare e quindi porta al crash del processo. Il sistema pulisce il codice in crash e la sua memoria, ma continua a funzionare nel suo complesso.

  • Le strategie di supervisione e riavvio aiutano a mantenere il sistema perfettamente funzionante in caso di arresto anomalo di parti riavviando parti vitali del sistema e riportandole in servizio. Se qualcosa va molto male, in modo che il riavvio avvenga troppo, il sistema viene considerato irrecuperabile e quindi chiuso.