In che modo è tollerante ai guasti o può aiutare a tale riguardo?In che modo è tollerante agli errori di erlang o è utile in proposito?
risposta
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.
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.
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. –
Penso di aver coperto parte della risposta in this reply to another thread.
La tua risposta nell'altra discussione è abbastanza completa. Tutti quelli che sono interessati dovrebbero assolutamente dare un'occhiata. –
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.
- 1. In che modo il tag canvas è utile in HTML5?
- 2. È orientato agli oggetti di Erlang?
- 3. Cos'è il Mago e in che modo è utile?
- 4. In che modo l'accesso a erlang è una risorsa condivisa?
- 5. In che modo Ruby è completamente orientato agli oggetti?
- 6. È stato sempre utile?
- 7. Qual è il modo corretto di rientrare in Erlang?
- 8. L'interscambio oggetti è mai utile?
- 9. Qual è il proposito di variabili TARGET_ARCH in Makefiles
- 10. Perché è utile avere un tipo di atomo (come in elixir, erlang)?
- 11. RExcel è utile? o dovrei cercare alternative
- 12. Stabilire in modo efficiente se un'azienda è aperta o meno in base agli orari di apertura
- 13. Che cosa è utile per TTL 0 in CloudFront?
- 14. Che cosa è std :: ref utile in questa funzione?
- 15. In che modo Sentry aggrega gli errori?
- 16. È "lungo" ancora utile in C?
- 17. PyWinAuto è ancora utile?
- 18. è jquery. È sempre utile?
- 19. `del x` è mai utile in Python?
- 20. Errori di Erlang - Dining Philosophers
- 21. In che modo è possibile testare gli errori deviati e deviati senza errori?
- 22. MVVM è davvero utile?
- 23. Perché match.call è utile?
- 24. Come scrivi un divertimento che è ricorsivo in Erlang?
- 25. Quando l'oggetto() built-in è utile?
- 26. Quando è utile __proto__?
- 27. È utile il guadagno?
- 28. Quando File.join è utile?
- 29. -Wextra quanto è veramente utile?
- 30. Posso provocare un'eccezione di proposito in python?
Vorrei che le persone spiegassero i downvotes, per qualcuno che non ha familiarità con l'argomento potrebbe fornire almeno alcune informazioni interessanti. –
beh la pagina principale dice che è tollerante ai guasti, era curioso di sapere come funziona? – Blankman