2010-09-21 5 views
10

¿Cómo es erlang fault tolerant, o ayuda al respecto?¿Cómo es erlang fault tolerant, o ayuda en ese sentido?

+3

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. –

+6

Bueno, la página principal dice que es tolerante a fallas, era curioso cómo lo proporciona? – Blankman

Respuesta

1

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.

2

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.

+0

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. –

4

Creo que cubrí parte de la respuesta en this reply to another thread.

+1

Su respuesta en el otro hilo es bastante completa. Todos los que estén interesados ​​definitivamente deberían echar un vistazo. –

3

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.

Cuestiones relacionadas