一. MQ介紹html
MQ是應用程序對應用程序的通訊方法,它能夠做爲程序中間媒介,經過消息(用戶的各類類型的數據文件,某個應用向其它應用發出的處理請求等均可以做爲消息)的方式解耦rpc。
二. MQ適用場景node
爲完成某一無需即時返回且耗時的業務,將該操做提取出來,進行了異步處理,節省了服務器的請求響應時間,從而提升了系統的吞吐量,如:城市停車場中的業務場景、電商中的訂單物流倉儲服務、不一樣平臺間對接都離不開MQ
三. 以ActiveMQ爲例,集羣安裝、配置、負載均衡web
在MQ選型時,不少人都會疑惑,到底選哪一種?RabbitMq、ActiveMq、ZeroMq、kafka,我到是以爲這個和業務是分不開的,例如只是普通的系統對接或是未關鍵業務數據處理,沒有必要糾結,直接用ActiveMq就行,若是對數據的處理性能、吞吐、容錯性要求較高,仍是須要本身測試下各個MQ的優缺點,下面這個是網絡數據,我也沒測試過,給你們一個參考: [RabbitMq、ActiveMq、ZeroMq、kafka之間的比較,資料彙總](http://blog.csdn.net/linsongbin1/article/details/47781187) 下面開始集羣安裝、配置 主機 集羣端口 消息端口 管控臺端口 節點安裝目錄 192.168.1.81 62621 51511 8161 ${MQ_HOME}/node-01 192.168.1.82 62622 51512 8162 ${MQ_HOME}/node-02 192.168.1.83 62623 51513 8163 ${MQ_HOME}/node-03 1. 咱們使用ZooKeeper和LevelDB搭建ActiveMQ集羣,使用ZooKeeper(集羣)註冊全部的ActiveMQ Broker。只有其中的一個 Broker 能夠提供服務,被視爲Master,其餘的Broker處於待機狀態,被視爲 Slave。若是 Master 因故障而不能提供服務,ZooKeeper會從Slave 中選舉出一個 Broker 充當 Master。 [ZooKeeper集羣的安裝、配置](http://my.oschina.net/lbnan/blog/615153) 2. 下載ActiveMq,tar -zxvf 解壓,名爲爲node-0x 3. 在iptables中開放端口 4. 修改${MQ_HOME}/conf/jetty.xml中的管理端口,以下: <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start"> <!-- the default port number for the web console --> <property name="host" value="0.0.0.0"/> <property name="port" value="8161"/> </bean> 5. 配置 conf/activemq.xml 中的持久化適配器。修改其中 bind、zkAddress、
hostname 和 zkPath,每一個 ActiveMQ 的 BrokerName 必須相同,不然不能加入集羣,以下:apache
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="myBroker" dataDirectory="${activemq.data}"> <persistenceAdapter> <!-- kahaDB directory="${activemq.data}/kahadb"/ --> <replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" bind="tcp://0.0.0.0:62621" zkAddress="192.168.1.81:2181,192.168.1.82:2182,192.168.1.83:2183" hostname="zk-01" zkPath="/activemq/leveldb-stores"/> </persistenceAdapter> </broker> 6. 配置各節點的消息端口,以下: <transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:51511?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> </transportConnectors>服務器
7. 接下來咱們使用static Broker-Cluster方式進行負載均衡 還有其餘方式,找了一篇不錯的博客[Apache ActiveMQ 負載均衡](http://www.tuicool.com/articles/r6FfY3) 使用以上一樣的方式再部署一個集羣,集羣名稱爲myBroker2,在conf/activemq.xml中配置: <networkConnectors> <networkConnector uri="static:(tcp://192.168.1.101:53531,tcp://192.168.1.102:53532,tcp://192.168.1.103:53533)" duplex="false"/> </networkConnectors> </networkConnectors> 8. 啓動3個MQ並監聽: ${MQ_HOME}/bin/activemq start tail -f ${MQ_HOME}/data/activemq.log
Activemq下載地址:http://activemq.apache.org/download.html網絡
Activemq的介紹、場景、集羣安裝就到這裏,歡迎提問!負載均衡