2010-08-27 9 views
5

Tengo una instancia de CouchDB ejecutándose en una máquina y, por lo tanto, con su propio proceso Erlang VM. Si tengo otra aplicación Erlang separada que se ejecute también en esa máquina, ¿es mejor compartir la misma máquina virtual entre CouchDB y mi aplicación, o se recomienda iniciar un nuevo nodo Erlang?¿Deberían las aplicaciones de Erlang separar compartir la misma VM en la misma máquina?

+1

http://stackoverflow.com/questions/2194997/running-multiple-erlang-applications-one -o-many-vms – Jonas

+0

Encuentro que la mayoría de las respuestas en el enlace anterior están equivocadas. Erlang VM puede alojar aplicaciones independientes y administrarlas de manera tolerante a fallas, de hecho puede incluso aumentar la confiabilidad si se siguen los patrones de diseño OTP. – user425720

Respuesta

3

No hay problema con ejecutar varias máquinas virtuales en la misma máquina (al menos las últimas versiones de OTP), sin embargo, es bastante útil si tiene todas sus aplicaciones en un nodo de Erlang. Comunicación más fácil, administración de dependencias, supervisión, tolerancia a fallas: en este caso, se obtiene de forma gratuita, sin mencionar el mantenimiento de un solo 'nodo' en el sistema de control de origen.

El problema comienza con CouchDB. No tiene un sistema de compilación decente que le permita usarlo como una de las aplicaciones independientes de nodo Erlang. Por lo tanto, en este caso necesita tener al menos 2 máquinas virtuales (una actúa como demonio de Couch, la otra aloja su aplicación)

4

Mientras que muchos recomendarían decoupling estos subsistemas tomaría el enfoque opuesto. Erlang tiene una estrategia integrada para ejecutar muchos applications en el mismo release. Si sus aplicaciones se comunican entre sí directamente, podría tener sentido agruparlas en un lanzamiento. Esto hará que las llamadas entre las aplicaciones sean más rápidas. Algunos argumentarán que todas sus aplicaciones ahora comparten el mismo destino si necesita desmontar el sistema para una actualización que solo una de las aplicaciones necesita. Este es un punto discutible con Erlang en el que está distribuyendo sus aplicaciones a través de muchos nodos. También la mayoría de las actualizaciones se pueden hacer con hot code loading.

+0

Estoy de acuerdo con user425720. El enlace en el comentario de Jonas es completamente erróneo y equivocado. Publiqué mi respuesta allí también. –

Cuestiones relacionadas