鱼与熊掌兼得法-完美解决方案
我们知道:
- master/slave模式下,消息会被逐个复制
- 而cluster模式下,请求会被自动派发
那么可不可以把两者集成起来呢?答案是有的,网上所谓的独创。。。统统是错的!!对,因为我全试验过了我敢这么説,写得都是些个啥呀。。。一个个还COPY不走样,全错了而且。
我这个才叫独创,来看原理。
MASTER SLAVE+BROKER CLUSTER的搭建
- 我们使用ZK搭建MASTER SLAVE
- 我们使用BROKER CLUSTER把两个“组”合并在一起
先来看下面的集群规划
MASTER SLAVE+BROKER CLUSTER的搭建-Group1的配置
由于这涉及到两个组6个ActiveMQ的实例配置,如果把6个配置全写出来是完全没有必要的,因此我就把配置分成两组来写吧。每个组的配置对于其组内各个节点都为一致的,除去那些个端口号。Group1的配置(保持6个实例中brokerName全部为一致)
- <networkConnectors>
- <networkConnector uri="static:(tcp://ymklinux:61619,tcp://ymklinux:61620,tcp://ymklinux:61621)" duplex=“false"/>
- </networkConnectors>
<networkConnectors>
<networkConnector uri="static:(tcp://ymklinux:61619,tcp://ymklinux:61620,tcp://ymklinux:61621)" duplex=“false"/>
</networkConnectors>
可以看到这边的broker cluster的配置是用来确保每一台都可以和Group2中的各个节点保持同步
- <persistenceAdapter>
- <replicatedLevelDB
- directory="${activemq.data}/leveldb"
- replicas="3"
- bind="tcp://0.0.0.0:0"
- zkAddress="192.168.0.101:2181"
- zkPassword=""
- hostname="ymklinux"
- sync="local_disk"
- zkPath="/activemq/leveldb-stores/group1"
- />
- </persistenceAdapter>
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind=&