1. 程式人生 > >幾種MQ訊息佇列對比與訊息佇列之間的通訊問題

幾種MQ訊息佇列對比與訊息佇列之間的通訊問題

關於訊息佇列之間的通訊問題,可以通過採用ActiveMQ的Broker Cluster叢集方式實現,ActiveMQ的叢集方式主要由兩種:Master Slave和Broker Cluster。

1、Master Slave叢集方式:Master提供服務,Slave實時備份Master的資料,以保證訊息的可靠性。當Master失效時,Slave自動升級為Master,客戶端自動連線到Slave;

2、Broker Cluster叢集方式:在多個ActiveMQ例項之間進行訊息的路由。如:生產者應用連線一個ActiveMQ例項,稱為MQ1,所有訊息都由該例項提供。兩個消費者應用分別連線另外兩個ActiveMQ例項,分別為MQ2和MQ3,兩個訊息消費者需要消費MQ1上的訊息,但它們連線的都不是MQ1,可以通過該叢集方式方式把MQ1上的訊息路由到MQ2和MQ3。

Broker Cluster的叢集分為Static Discovery和Dynamic Discovery兩種。

(1)Static Discovery 方式:通過硬編碼的方式使用所有已知ActiveMQ例項節點的URI地址。為了保證消費者不因某個節點的失效而導致不能消費訊息,在消費者應用中需要配置所有節點的URI。這種靜態路由存在的原因可能是因為靜態處理的方式使路由速度更快。

(2)Dynamic Discover 方式:在配置ActiveMQ例項時,不需要知道所有其它例項的URI地址,只需在所有例項的配置檔案中進行相應設定,就可以實現訊息在所有ActiveMQ例項之間進行路由。

Master Slave模式不支援負載均衡,但可以通過訊息的實時備份或共享,保證訊息服務的可靠性;Broker Cluster模式支援負載均衡,可以提高訊息的消費能力,但不能保證訊息的可靠性。

所以為了支援負載均衡,同時又保證訊息的可靠性,可以採用Msater Slave與Broker Cluster相結合的模式。

關於不同MQ的效能對比,請參考以下這篇文章:

http://blog.x-aeon.com/2013/04/10/a-quick-message-queue-benchmark-activemq-rabbitmq-hornetq-qpid-apollo/