RocketMQ原理解析-Setup

1. 下载
    https://github.com/alibaba/RocketMQ.git
    下载后,运行install.sh或install.bat会在target目录下产生alibaba-rocketmq-broker.tar.gz(如果编译过程出现checkstyle不通过,注释掉pom文件的checkstyle plugin),然后解压复制到相应目录。

2. 启动
    到MQ的bin/目录:
  • namesrv:nohup sh mqnamesrv >> /opt/ns.log &
  • broker:nohup sh mqbroker -c ../conf/2m-noslave/broker-X.properties >> /opt/mq.log 2>&1 &


3. 停止
    到MQ的bin/目录:
   
  • 关闭broker: sh mqshutdown broker 或先执行sh mqadmin wipeWritePerm -b brokerName -n namesrvAddr再sh mqshutdown broker。
  • 关闭namesrv: sh mqshutdown namesrv.

4. 物理部署
    可参考以下部署图,将MQ部署为MM,MS等结构:


5. 物理部署解释
  • namesrv无状态,可集群部署,节点之间无任何信息同步。
  • broker分为master和slave。一个master可以对应多个slave,但一个slave只能对应一个master。master和slave的对应关系通过指定相同的brokerName不同的brokerId进行区分。master可以部署多个。每个broker与namesrv集群中的所有节点建立长连接,定时注册topic信息到namesrv。
  • slave broker从master broker拷贝消息及订阅关系。
  • producer与namesrv集群中的一个节点(随机选择)建立长连接,定期从namesrv获取topic路由信息,并与提供topic服务的master broker建立长连接,也就是说消息只会发送到master broker上,且定时向master broker发送心跳。producer无状态,可集群部署。
  • consumer与namesrv集群中的一个节点(随机选择)建立长连接,定期从namesrv获取topic路由信息,并与提供topic服务的master,slave broker建立长连接,且定时向master,slave发送心跳。consumer即可从master订阅消息,也可从slave订阅。

猜你喜欢

转载自technoboy.iteye.com/blog/2368078