¿Cómo es erlang fault tolerant, o ayuda al respecto?¿Cómo es erlang fault tolerant, o ayuda en ese sentido?
Respuesta
Erlang hace que sea más fácil crear muchos procesos pequeños y supervisar esos procesos. Cuando uno de esos procesos falla, es posible reiniciar esa parte del sistema sin necesidad de deshacer todo.
Es posible que haya visto algo como esto en las versiones modernas de Windows: el sistema puede reiniciar el controlador de gráficos si se bloquea; no mata a todo el sistema
Para facilitar la escritura de aplicaciones tolerantes a errores, Erlang proporciona el concepto de procesos de supervisor. Estos procesos monitorean varios procesos secundarios y saben cómo responder si un niño muere. Puede crear un árbol de supervisión completo, de modo que tenga un control preciso sobre el comportamiento de las diferentes partes de la aplicación. Puede leer más in the Erlang documentation.
Advertencia: Soy un novato de Erlang.
@ La respuesta de Daniel es esencialmente correcta. Le sugiero encarecidamente que se tome el tiempo para leer el creador de Erlang, Joe Armstrong, thesis (Creación de sistemas distribuidos confiables en presencia de errores de software). La tesis proporciona una buena explicación de la necesidad y el desarrollo de sistemas distribuidos robustos. Creo que el periódico responderá a su pregunta de manera satisfactoria.
Hehe, también soy un novato de Erlang, pero dije lo que dije porque es la forma en que un sistema idiomático de Erlang es fundamentalmente diferente de un sistema en prácticamente cualquier otro entorno. O más bien, otros sistemas parecen no proporcionar ningún consejo sobre cómo manejar estos problemas, mientras que Erlang sí lo hace. –
Creo que cubrí parte de la respuesta en this reply to another thread.
Su respuesta en el otro hilo es bastante completa. Todos los que estén interesados definitivamente deberían echar un vistazo. –
Erlang es tolerante a fallos con las siguientes cosas en mente:
Erlang sabe que los errores va a pasar, y las cosas van a romper, por lo que en lugar de la protección contra errores, Erlang le permite disponer de herramientas fuertes para minimizar el impacto de errores y recuperarse de ellos a medida que ocurren.
Erlang lo alienta a programar para casos de éxito y fallar si algo sale mal sin tratar de recuperar datos parcialmente dañados. La idea detrás de esto es que los datos parcialmente incorrectos pueden propagarse aún más en su sistema y pueden escribirse en la base de datos, y por lo tanto presentan riesgos para su sistema. Es mejor deshacerse de él temprano y solo mantener datos completamente correctos.
El aislamiento de procesos en Erlang ayuda a minimizar el impacto de los datos parcialmente incorrectos cuando aparece y luego conduce a un bloqueo del proceso. El sistema limpia el código bloqueado y su memoria, pero sigue funcionando como un todo.
Las estrategias de supervisión y reinicio ayudan a mantener su sistema completamente funcional si parte de él se bloquea reiniciando partes vitales de su sistema y poniéndolo nuevamente en servicio. Si algo sale mal y los reinicios suceden demasiado, el sistema se considera roto sin posibilidad de reparación y se cierra.
- 1. Fault (radiation) tolerant soft core?
- 2. Erlang: RPC a un nodo con salida en ese nodo
- 3. Erlang Programming: ¿Aprenderá la ayuda de Prolog?
- 4. Java JNIEnv Segmentation Fault
- 5. WCF Callback channel fault
- 6. Qshow Segmentation Fault
- 7. Creación de un sistema comercial: Pure Erlang o Erlang/OTP?
- 8. Rasgos de sintaxis o por qué es ese pitón válido
- 9. WCF catching Fault Exceptions de tipo T o Base type
- 10. Convertir términos de erlang a cadena o decodificar erlang binario
- 11. Erlang: átomos o números enteros
- 12. Debugging Pitthon ctypes segmentation fault
- 13. Cómo rotar una imagen en sentido horario o antihorario, ¿cuál de las dos es más corta?
- 14. ¿Cómo es que mi IO funciona tan lentamente en Erlang?
- 15. Error de segmentación: "... no existe ese archivo o directorio"
- 16. Erlang corba tutorial o ejemplo?
- 17. ¿Cómo se hace el módulo o el resto en Erlang?
- 18. Función libVLC media_player_new() throws Segmentation Fault
- 19. Ayuda con notación O grande
- 20. Cómo lidiar con "intrin.h: ¿No existe ese archivo o directorio"?
- 21. 'Segmentation Fault' durante la recodificación de memset
- 22. longitud de objeto negativo posible en JavaScript o underscore.js? ¿sentido?
- 23. Erlang HTTP Client: inets o ibrowse or ...?
- 24. Erlang: gen_server o mi propio servidor personalizado?
- 25. Cómo cambiar un elemento en una lista en erlang
- 26. ¿Cuál es el sentido de ArrayList final?
- 27. ¿Cómo se distribuye Erlang?
- 28. CoreData error "datos: <fault>"
- 29. Erlang - C y Erlang
- 30. Intercambio de código en caliente en Erlang
Deseo que las personas expliquen los votos abajo, para alguien que no esté familiarizado con el tema, podría proporcionar al menos alguna información interesante. –
Bueno, la página principal dice que es tolerante a fallas, era curioso cómo lo proporciona? – Blankman