Sharing

2012年6月16日 星期六

RabbitMQ & ZeroMQ 筆記



http://wiki.python.org/moin/ParallelProcessing

ZMQ
http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/index.html
http://zeromq.github.com/pyzmq/index.html
http://zguide.zeromq.org/
http://www.slideshare.net/fcrippa/europycon2011-implementing-distributed-application-using-zeromq
http://blog.garambrogne.net/post/2010/10/23/simple-python-work-queue-with-zeromq

ZMQ & Openstack
http://eric.windisch.us/2012/04/18/openstack-nova-distributed-rpc-with-zeromq/

RabbitMQ
http://www.rabbitmq.com/tutorials/tutorial-one-python.html
http://nathanborror.com/posts/2009/may/20/working-django-and-rabbitmq/
http://blog.springsource.org/2010/08/19/building-rabbitmq-apps-using-python/
http://www.laurentluce.com/posts/distributed-messaging-using-rabbitmq-and-python/


compare

http://stackoverflow.com/questions/731233/activemq-or-rabbitmq-or-zeromq-or
http://bhavin.directi.com/selecting-a-message-queue-amqp-or-zeromq/
http://www.maartendamen.com/2011/10/byebye-rabbitmq-hello-0mq/
http://mikehadlow.blogspot.tw/2011/04/message-queue-shootout.html
http://lists.openamq.org/pipermail/openamq-dev/2010-March/001598.html

Kombu
http://packages.python.org/kombu/introduction.html


Clery
http://celery.readthedocs.org/en/latest/index.html
http://digitheadslabnotebook.blogspot.tw/2010/10/message-queues-with-python.html


兩個都看完後, 覺得 ZeroMQ 取錯了名字, 而且這兩個不應該放在一起比較

RabbitMQ 是完整的 Message Queue, 有 Broker, 如果你希望你的 Message 有個中控中心, 以確保即使當你沒空時, 所有的訊息都還是能夠保留起來, 那就可以應該考慮使用 RabbitMQ/ActiveMQ/Qpid, 所以當你使用 AMQP 架構下的產品時, 你一定會有個收發中心, 必須煩惱這個收發中心該放在那邊, 會不會死掉之類的問題.

但 ZeroMQ 他只是高級的 Socket Library, 他沒有實作收發中心, 如果你的訊息是屬於丟掉也沒什麼關係, 而且可能會很大量的狀況下 (ex: log) , 就應該考慮 ZeroMQ, 因為他是點對點的通訊, network latency 會降到最低.  所以其實網路上也有人把 RabbitMQ 內部的溝通改寫成使用 ZeroMQ 來做, 兩個實作的 scope 是不一樣的! 拿來一起比較的確會怪怪的, 但只能怪 ZeroMQ 的作者太想要挑戰 AMQP , 故意把名字取的很類似, 硬是要大家拿來比較.

RabbitMQ 主要是用 Erlang 實作, Kombu 則是架在這之上的 Python Message Framework, 底下除了可以接 RabbitMQ 之外, 也可以直接把回傳的結果寫到 Database, 而 Clery 則又是架在 Kombu 之上的 Python RPC

ZeroMQ 方面, pyzmq 是他的 python binding 不過還很新, 功能沒有像 kombu 這麼齊全, 所以也還稱不上是 Message Framework. 如果真的很中意 ZeroMQ 這樣輕量級的設計的人, 可能還要再等等, 目前 RabbitMQ 的發展還是比較齊全


2 則留言:

andre 提到...

RabbitMQ不是Erlang嗎?

Pjack Chen 提到...

對, 是 Erlang, 謝謝更正