rabbitmq與gearman有什麼不同之處?
最後更新:2016-06-06
來源:互聯網
上載者:User
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,不僅僅是作為訊息模型,還可以改善系統架構設計。