2009-02-05 11 views
12

Erlang se está ganando la reputación de ser intocable al manejar un gran volumen de mensajes y solicitudes. No he tenido tiempo de descargar e intentar entrar en la comprensión del Sr. Erlang de cambiar de teoría ... así que me pregunto si alguien puede enseñarme (o señalar a un buen sitio de instrucción)¿Cuál es el secreto de Erlang para la escalabilidad?

Decir como experimento mental Quise adaptar el ejabberd de Erlang a una combinación de Python y C, de una manera que me diera la misma velocidad y escalabilidad. ¿Qué estructuras o patrones tendré que entender e implementar? (Twisted es lo hace Python ya hacen esto?)

Respuesta

13

How/why do functional languages (specifically Erlang) scale well? (para la discusión de por qué)

http://erlang.org/course/course.html (para una cadena tutorial)

En cuanto a la migración a otros idiomas, un sistema de paso de mensajes sería fácil hacer en la mayoría de los idiomas modernos. Obtener el estilo funcional se puede hacer en Python con la suficiente facilidad, aunque no obtendría las funciones internas de envío de Erlang "gratis". Stackless Python puede replicar muchas de las funciones de simultaneidad de Erlang, aunque no puedo hablar con los detalles ya que no los he usado demasiado. Si parece ser mucho más "explícito" (en el sentido de que se requiere definir la concurrencia en el código en lugares que el diseño de Erlang permitirá que ocurra la concurrencia internamente).

+0

¡Vaya! ¡Gracias! Eso es una gran ayuda. Me sorprende que el comprobador de preguntas duplicado de SO no me haya llevado a eso. –

4

Erlang se trata sólo de escalabilidad, pero sobre todo de

  • fiabilidad
  • características suaves en tiempo real (habilitado por CG en tiempo real blando, que es posible gracias a la inmutabilidad [sin ciclos] y compartir nada y por lo)
  • rendimiento en tareas simultáneas (cambio de tarea barata, creación de proceso barato, modelo de actores, ...)
  • escalabilidad - discutible en el estado actual, pero en rápida evolución (aproximadamente 32 núcleos, es mejor que la mayoría de los competidores pero debería ser mejor en ne ar futuro).
+1

Sí, pero esta es la definición de "escalabilidad bien hecha". Escalabilidad sin fiabilidad, rendimiento o capacidad en tiempo real no son tan útiles;) – daitangio

2

Otra de las características de erlang que tienen un impacto en la escalabilidad es el proceso económico ligero. Como los procesos tienen tan poca sobrecarga, erlang puede engendrar muchos más que la mayoría de los otros lenguajes. Obtienes más por tu dinero con los procesos erlang que muchos otros idiomas te dan.

1

Creo que la mejor opción para Erlang son las aplicaciones en red: hace que la comunicación sea mucho más simple entre los nodos y cosas como la supervisión del latido, el reinicio automático usando el supervisor están integrados en OTP.

Cuestiones relacionadas