>  기사  >  백엔드 개발  >  rabbitmq与gearman有什么不同之处?

rabbitmq与gearman有什么不同之处?

WBOY
WBOY원래의
2016-06-06 16:45:112553검색

rabbitmq与gearman都是做消息队列的,那么两者之间有什么区别,或者说优点与缺点的比较各在哪里?

回复内容:

Gearman是分布式任务分发系统,重点是job
RabbitMQ是分布式消息队列,重在message/data

Gearman要实现Message的priority、order、filter、persistence..都比较麻烦(或者说不够直接),而这些都是典型的MQ系统要考虑的。 正如楼上回复的一样,Gearman 偏重任务分发(也有调度),基本工作模式,是由 Client (多个)向 Server 去注册一些函数,当然 Server 接受到任务后,分发到这些函数上。

RabbitMQ 则是很多消息模型的实现,比如简单的生产者消费者、发布订阅、广播,甚至可以模拟 RPC 等等,Gearman 的功能,简单的生产者消费者模型就可以实现,只是思路上稍微换一下,需要消费消息来实现,官方也有类似参考例子:RabbitMQ - RabbitMQ tutorial - Work queues

建议看下 RabbitMQ 官方这个例子教程 RabbitMQ - Getting started with RabbitMQ ,里面包含了几种模型的实例,很容易结合我们现实中场景。

至于优缺点,仁者见仁。

大概三年前吧,我给一家某行业内比较知名公司优化过 Gearman 到 RabbitMQ 的方案,高峰时候一小时消息量在 x 千万以上,优化前 Gearman Server 负载较重,包括 Client(Worker)也会经常挂掉,很多消息会丢失,后来迁移到 RabbitMQ 上面,Server 只有一台(备份一台基本从来就没用过),Client 采用 ACK 确认消息成功消费掉,后来就没有然后了。。。这里故事不在描述。

推荐使用 RabbitMQ,不仅仅是作为消息模型,还可以改善系统架构设计。
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.