2009-03-05 11 views
16

Estoy considerando Erlang como potencial para mi próximo proyecto. Necesito un servidor web "Altamente escalable, altamente confiable" (duh, what project does not?) Para aceptar solicitudes HTTP, pero realmente no sirve HTML. Tenemos miles de clientes distribuidos (otros sistemas, no usuarios) que enviarán datos binarios al clúster central de servidores para el procesamiento fuera de línea. Las respuestas serían muy cortas, éxito, falla, código de error, datos mínimos. Queremos usar HTTP ya que es nuestra mejor oportunidad de atravesar firewalls.¿Qué debilidades se pueden encontrar al usar Erlang?

Dada esta información limitada sobre el proyecto, ¿puede proporcionar alguna debilidad que pueda surgir utilizando una tecnología como Erlang? Por ejemplo, entiendo que las capacidades de procesamiento de texto de Erlang podrían dejar algo que desear.

Sus comentarios son apreciados. Gracias.

+1

sería bueno aceptar una respuesta .... – jldupont

Respuesta

10

Esto suena como un candidato perfecto para un lenguaje como Erlang. Las propiedades de escalado del idioma son muy buenas, pero si le preocupan las capacidades de procesamiento de datos, no debería estarlo. Es un lenguaje muy poderoso, con muchas bibliotecas disponibles para desarrolladores. Es un lenguaje antiguo, y ha sido muy usado/probado en el pasado, por lo que todo lo que desea hacer probablemente ya se haya realizado hasta cierto punto.

5

¡Asegúrese de utilizar la versión erlang R11B5 o posterior! Las versiones anteriores de erlang no proporcionaban la capacidad de caducar los envíos de tcp. Esto da como resultado clientes estancados o maliciosos que pueden ejecutar un ataque DoS en su aplicación al negarse a recuperar los datos que les envía, bloqueando así el proceso de envío.

Consulte el problema OTP-6684 en R11B5's release notes.

3

entiendo procesamiento de texto de Erlang capacidades podrían dejar algo que desear .

El proyecto starling ya proporciona soporte básico de Unicode y hay una EEP (Erlang Mejora de texto), actualmente en proyecto, pero va a ponerla en la corriente principal de apoyo Erlang/OTP.

+1

El enlace lleva a una página 'no encontrada'; una versión de starling en el código de google también parece estar muerta, sin embargo, hay una versión más activa aquí: https://github.com/hypernumbers/starling –

+0

Sí, Hasan lo escribió cuando trabajó en Hypernumbers y desde que se fue lo traje de vuelta a nuestro entorno github. La versión Hypernumbers es la versión 'oficial' ahora. –

5

Con Erlang, la escalabilidad y la confiabilidad están ahí, pero a partir de la definición de su proyecto no se describe el tipo de procesamiento de texto que necesitará.

Creo que la principal limitación de Erlang podría ser encontrar desarrolladores con experiencia en su área. Investiga un poco sobre la disponibilidad de los arquitectos y codificadores de Erlang.

Si va a enseñar a sí mismo o sus desarrolladores lo aprenden en el trabajo, tenga en cuenta que es una forma muy diferente de codificación y que, aunque la documentación básica es buena, mucha gente desearía que hubiera más ejemplos . Por supuesto, la comunidad muy activa lo compensa fácilmente.

+0

2017 y esto sigue siendo bastante acertado.Erlang es una excelente opción para el tipo de proyecto descrito en la pregunta del OP, pero la disponibilidad de programadores primarios de Erlang * que no están ya empleados * es el verdadero factor limitante. – zxq9

1

Tuve algunos problemas con el rendimiento de lectura Redis de Erlang. Aquí está my question. Tiendo a pensar que la razón es un módulo escrito por Erlang, que tiene problemas al procesar toneladas de cadenas durante la comunicación con Redis.

+1

Logré mejorar el rendimiento de lectura utilizando otro controlador. Los controladores escritos en C y sus envoltorios son aún más rápidos, pero puedo lidiar con el rendimiento que ofrece Erlang. –

Cuestiones relacionadas