activemq集群的三种方式

来源:转载

如果你在用zk集群或者使用zk到生产环境,我个人觉得一定要使用稳定版本,现在官方的稳定版本是5.15,重要的话就不要说三遍了,不然你会被坑死的,我保证,下面介绍zk的几种集群方式,zk的集群方式或者说高可用方式有很多种,大家可以根据需要去看官方文档:http://activemq.apache.org/features.html


1.JDBC Master Slave


jdbc master slave算是高可用的一种方式,他的原理是利用数据库的select **** for update 这种悲观锁的方式,谁先获得锁,谁就是master, 而slave一直重试获得锁,只有master是对外提供服务的,当master挂掉后,slave就获得到了锁,jdbc msater slave就是通过这种方式实现了高可用的,官方文档http://activemq.apache.org/jdbc-master-slave.html


配置文件




xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">



file:${activemq.conf}/credentials.properties



lazy-init="false" scope="singleton"
init-method="start" destroy-method="stop">



























这里面注意的地方有两个地方


1.useDatabaseLock="true" ,这里如果不设置为true配置的activemq就不是主从的,再并发的情况下会出现问题


2.createTablesOnStartup="false"


这个地方在第一次启动的时候设置为true,以后就改成false不然每次都启动都创建表会把数据删掉(危险)




2.KahaDB Replication (Experimental)


这种集群方式是基于zk的,zk也需要实现高可用,这里就不介绍了,我就用一台zk做实验,配置文件如下




xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">



file:${activemq.conf}/credentials.properties



lazy-init="false" scope="singleton"
init-method="start" destroy-method="stop">




















directory="activemq-data"
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="127.0.0.1:2181"
zkSessionTimeout="2s"
zkPath="/activemq/leveldb-stores"/>






























这个里面的坑是:brokerName="zkmq" 集群的这个名字配置成一样的





3.Networks of Brokers


因为基于zk的集群方式比较需要服务器资源,一般需要3个zk节点和3个mq节点,一共6台机器,目的就是为了保证mq master的高可用,基于networks brokers的这种方案就只需要2个节点,他的实现原理:activemq-1与activemq-2这二个broker就互为主备,发给你的消息会同步到我,发给我的消息也会同步到你,实现了HA,示意图如下:



配置文件如下:




xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">



file:${activemq.conf}/credentials.properties



lazy-init="false" scope="singleton"
init-method="start" destroy-method="stop">






















































这里需要在每个集群里面配置,如果duplex="true"就只需要在一个节点里配置就可以了



分享给朋友:
您可能感兴趣的文章:
随机阅读: