Pregunta

En una de las respuestas a Difusión como UDP con la Confiabilidad de TCP, un usuario menciona la Propagación la API de mensajería.También he ejecutado a través de una llamada ØMQ.También tengo cierta familiaridad con MPI.

Por lo tanto, mi pregunta principal es:¿por qué debería elegir uno sobre el otro?Más específicamente, ¿por qué habría de elegir el uso de Propagación o ØMQ cuando no están maduras las implementaciones de MPI que se tenía?

¿Fue útil?

Solución

MPI fue diseńados muy acoplada clústeres, rápido y fiable de las redes.Difundir y ØMQ están diseñados para grandes sistemas distribuidos.Si estás diseñando una aplicación científica paralela, ir con MPI, pero si usted está diseñando un persistente sistema distribuido que se necesita para ser resistente a los fallos y la inestabilidad de la red, utilice uno de los otros.

MPI tiene muy limitado de instalaciones para la tolerancia a fallos;el manejo de errores por defecto de comportamiento en la mayoría de las implementaciones es la de todo el sistema falla.También, la semántica de MPI requieren que todos los mensajes enviados finalmente se consume.Esto hace un montón de sentido para las simulaciones en un clúster, pero no para una aplicación distribuida.

Otros consejos

No he usado ninguna de estas bibliotecas, pero que puede ser capaz de darle algunos consejos.

  1. MPI es un protocolo de comunicación, mientras que la Propagación y ØMQ son de aplicación real.
  2. MPI viene de "paralelo" de la programación, mientras que la Propagación de la "distribución" de la programación.

Por lo tanto, realmente depende de si usted está tratando de construir un sistema paralelo o sistema distribuido.Están relacionados el uno al otro, pero la implícitas connotaciones/objetivos son diferentes.La programación paralela ofertas con el aumento de la potencia de cálculo mediante el uso de varios equipos a la vez.Programación distribuida ofertas fiable (constante, tolerante a fallos y alta disponibilidad) grupo de equipos.

El concepto de "confiabilidad" es ligeramente diferente de la de TCP.La fiabilidad de TCP es "dar este paquete para el final del programa, no importa qué." La programación distribuida de la fiabilidad es "incluso si algunas máquinas de morir, el sistema como un todo continúa trabajando en forma consistente." Para realmente garantizar que todos los participantes recibieron el mensaje, se necesita algo como 2 phase commit o uno de los de más rápido alternativas.

Usted está hablando muy diferentes APIs aquí, con diferentes nociones acerca de la clase de los servicios prestados y de infraestructura de cada uno de ellos.No sé lo suficiente acerca de MPI y se Extendió a responder por ellos, pero puedo ayudar un poco más con ZeroMQ.

ZeroMQ es una simple comunicación de mensajería de la biblioteca.No hace nada más que enviar un mensaje a diferentes compañeros (incluyendo a los locales), basado en un conjunto restringido de mensajería común patrones (PUSH/PULL, SOLICITUD/RESPUESTA, PUB/SUB, etc.).Se encarga de conexión de cliente, la recuperación de la básica y de la congestión basado estrictamente en esos patrones y tienes que hacer el resto a ti mismo.

Aunque aparece muy restringido, este comportamiento simple es sobre todo lo que usted necesita para la capa de comunicación de su aplicación.Se le permite escalar muy rápido a partir de un simple prototipo, todos en la memoria, hasta las más complejas aplicaciones distribuidas en diferentes ambientes, el uso de proxies simples y puertas de enlace entre los nodos.Sin embargo, no esperes que hacer nodo de implementación, el descubrimiento de red o servidor de monitoreo;Usted tendrá que hacerlo usted mismo.

Brevemente, el uso de zeromq si usted tiene una aplicación que se desea escala a partir de la simple multithread proceso distribuido y variable de entorno, o que desea experimentar y prototipos de forma rápida y que no hay soluciones parece encajar con su modelo.Esperar sin embargo a tener que poner un poco de esfuerzo en la implementación y el monitoreo de su red si desea escalar a un gran clúster.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top