2010-02-17 12 views
63

En el trabajo, necesitamos crear un servidor de trabajos para cosas como enviar correos electrónicos, construir archivos PDF, procesar datos, etc. Obviamente, nos gustaría basarnos en una especie de cola genérica sistema. Estoy familiarizado con Gearman, y este es un problema exacto que trata de resolver: poner trabajos en una fila donde los trabajadores vienen a buscarlos. Sin embargo, estoy viendo muchas menciones de Rabbitmq y no estoy seguro de cómo se usa en este escenario.Rabbitmq o Gearman: elegir una cola de trabajos

¿Es Rabbitmq un buen marco para construir un sistema de trabajos distribuidos además?

+4

Como seguimiento de esto, terminé eligiendo RabbitMQ junto con los excelentes paquetes de zanahoria/apio y estoy muy contento con mi elección. El apio es bastante sorprendente y notablemente simple una vez que descubres cómo necesitas o quieres configurar tu sistema. AMQP puede ser un poco alucinante al principio, pero Aplery hace un buen trabajo al abstraer muchas de las complejidades hasta que esté listo para sumergirse en profundidad. – brianz

+1

@alexis El enlace para el procesamiento de PDF está roto. ¿Podrías por favor arreglar eso? – ihsan

+1

Parece haber un [reenvío del artículo] (http://seancribbs.com/tech/2009/12/23/generating-thousands-of-pdfs-on-ec2-with-ruby/) en Sean Crubbs ' página propia. –

Respuesta

68

Diría que Gearman es mejor para poner en cola "trabajos" y RabbitMQ es mejor para poner en cola "datos". Por supuesto, ambos son realmente lo mismo, pero la forma en que funciona para mí es que si estás tratando de "desplegar" el trabajo por hacer, y los trabajadores pueden trabajar de forma independiente, Gearman es la mejor manera de hacerlo . Pero si intenta alimentar datos de muchas fuentes a menos consumidores de datos, RabbitMQ es la mejor solución.

La historia de RabbitMQ, como algo que permitía a Twitter tomar muchísimos mensajes y alimentarlos en crujientes pasarelas SMS que podían mantener solo una conexión abierta, era de tarifa limitada y no tenía reintentos, es ilustrativo del tipo de problemas que RabbitMQ es bueno para resolver.

30

Todo depende de la semántica que desee exponer. Es realmente fácil hacer lo que Gearman hace además de RabbitMQ, que sin duda puede 'desplegar' mensajes a los trabajadores independientes.

Pero Gearman está diseñado para su propósito. IIUC, Gearman es un marco para procesar trabajos y no un sistema de mensajes como tal. Hay otros marcos tales como Apio que usan RabbitMQ bajo el capó para eso. Aquí hay un article about Celery que vale la pena leer.

+7

No solo nosotros apio solo Python, pero en realidad tiene todo el framework Django como una dependencia. En mi experiencia, parece que el autor lo escribió específicamente para su entorno para satisfacer sus necesidades específicas. Lo cual no es necesariamente algo malo, pero no es una comparación justa ni con Gearman ni con RabbitMQ, ambos son muy flexibles. – jamieb

+16

¿Tiene rencor? :) Apio no es solo de Python, puede funcionar a través de HTTP, que en mi humilde opinión es un mejor modelo de lo que Gearman utiliza para el soporte de múltiples idiomas (implemente a los trabajadores en los idiomas que desea admitir). También sería fácil implementar a los trabajadores del apio en otros idiomas, ya que el apio es realmente un protocolo de mensajes, donde la implementación de Python es la apología. No sé de dónde sacas la idea de que no es justo comparar Apio con Gearman, pero debes leer las preguntas frecuentes, especialmente http://bit.ly/cSh6Ys + http://bit.ly/cANwUg, y el suministro. con algunos nuevos argumentos – asksol

+1

Si fuera "realmente" sobre mejores modelos, todos estaríamos usando Gopher ... no HTTP :) – Vangel

Cuestiones relacionadas