2010-02-17 3 views
63

직장에서 전자 메일 보내기, PDF 작성, 데이터 정리 등의 작업 서버를 구축해야합니다. 분명히 일반적인 대기열 체계. 저는 Gearman에 익숙합니다. 그리고 이것은 해결하려고하는 정확한 문제입니다. 작업자들이 작업을 기다리는 대기열에 두는 것입니다. 그러나 Rabbitmq에 대해 많은 언급을하고 있으며이 시나리오에서 어떻게 사용되는지 불분명합니다.Rabbitmq 또는 Gearman - 작업 큐 선택

Rabbitmq는 분산 작업 시스템을 구축하기위한 훌륭한 프레임 워크입니까?

+4

계속 다음과 같이 나는 훌륭한 당근/셀러리 패키지와 함께 RabbitMQ를 선택하고 내 선택에 매우 만족합니다. Celery는 시스템을 구성하거나 구성하는 방법을 파악한 후 매우 놀랍고 놀라 울 정도로 단순합니다. AMQP는 처음에는 조금 마음이 편할 수 있지만 Celery는 깊은 곳에서 다이빙 할 준비가 될 때까지 많은 복잡한 것을 추상화하는 훌륭한 작업을 수행합니다. – brianz

+1

@alexis pdf 처리 링크가 끊어졌습니다. 고칠 수 있겠 니? – ihsan

+1

Sean Crubbs의 기사에서 [기사의 재 게시] (http://seancribbs.com/tech/2009/12/23/generating-thousands-of-pdfs-on-ec2-with-ruby/) 자신의 페이지. –

답변

68

저는 Gearman이 "작업"을 대기 행렬에 사용하는 것이 더 좋으며 RabbitMQ는 "데이터"를 대기 행렬에 넣는 것이 더 좋다고 말합니다. 물론 그들은 둘 다 똑같습니다. 그러나 그것이 나를 위해 일하는 방식은 작업을 "팬 아웃"하고 작업자가 독립적으로 작업 할 수 있다면 Gearman이 더 좋은 방법입니다 . 그러나 많은 소스에서 적은 데이터 소비자로 데이터를 공급하려는 경우 RabbitMQ가 더 나은 솔루션입니다.

RabbitMQ의 역사는 트위터에 엄청난 양의 메시지를 가져 와서 단 하나의 연결을 유지할 수있는 낡은 SMS 게이트웨이에 피드를 전송할 수있는 속도가 제한되어 있었으며 재 시도가 필요하지 않습니다. RabbitMQ가 해결하는 데 좋은 종류의 문제.

30

모두가 당신이 폭로하고자하는 의미에 달려 있습니다. Gearman이 RabbitMQ에 대해 수행하는 작업은 정말 쉽습니다. RabbitMQ는 독립 작업자에게 확실히 메시지를 전달할 수 있습니다.

그러나 Gearman은 목적으로 제작되었습니다. IIUC, Gearman은 작업을 처리하기위한 프레임 워크이며 메시징 시스템은 아닙니다. Celery와 같은 다른 프레임 워크에서 RabbitMQ를 사용하고 있습니다. 다음은 읽을만한 가치가있는 article about Celery입니다.

+7

Celery Python 전용이지만 우리는 실제로 Django 프레임 워크 전체가 종속되어 있습니다. 내 경험에 비추어 볼 때 저자는 자신의 환경에 맞게 구체적으로 작성하여 자신의 구체적인 필요를 채우는 것처럼 느낍니다. 반드시 나쁜 것은 아니지만 Gearman이나 RabbitMQ 자체와 공정한 비교는 아닙니다. 둘 다 매우 유연합니다. – jamieb

+16

원한을 쥐고 있습니까? :) 셀러리는 Python 전용이 아니며 HTTP를 통해 작동 할 수 있습니다. IMHO는 여러 언어 지원 (지원하려는 언어로 작업자 구현)에 사용되는 gearman보다 나은 모델입니다. 샐러리는 실제로 메시지 프로토콜이기 때문에 셀러 리 작업자를 다른 언어로 구현하는 것도 쉽습니다. 셀러 리가 단지 파이썬 구현 일뿐입니다. Celery와 Gearman을 비교하는 것이 공정하지 않다는 생각이 들지는 모르겠지만 FAQ (특히 http://bit.ly/cSh6Ys + http://bit.ly/cANwUg)를 읽고이를 제공해야합니다. 새로운 인수가있는 우리에게 – asksol

+1

"정말"더 좋은 모델에 관한 것이라면 우리는 모두 Gopher를 사용할 것입니다 ... HTTP가 아닙니다 : – Vangel