activeMQ主要的几类集群部署方式

官方主从实现的文档: http://activemq.apache.org/masterslave.html
 
1、activeMQ主要的几类部署方式比较
一、默认的单机部署(kahadb)
activeMQ的默认存储的单机方式,以本地kahadb文件的方式存储,因此性能指标彻底依赖本地磁盘IO,不能提供高可用。
 
二、基于zookeeper的主从(levelDB Master/Slave
5.9.0新推出的主从实现,基于zookeeper来选举出一个master,其余节点自动做为slave实时同步消息。
由于有实时同步数据的slave的存在,master不用担忧数据丢失,因此leveldb会优先采用内存存储消息,异步同步到磁盘。因此该方式的activeMQ读写性能都最好,特别是写性能可以媲美非持久化消息。
优势:
实现高可用和数据安全
性能较好
缺点:
由于选举机制要超过半数,因此最少须要3台节点,才能实现高可用。
 
三、基于共享数据库的主从(Shared JDBC Master/Slave)
能够基于postgres、mysql、oracle等经常使用数据库。
每一个节点启动都会争抢数据库锁,从而保证master的惟一性,其余节点做为备份,一直等待数据库锁的释放。
由于全部消息读写,其实都是数据库操做,activeMQ节点自己压力很小,性能彻底取决于数据库性能。
优势:
实现高可用和数据安全
简单灵活,2台节点就能够实现高可用
缺点:
稳定性依赖数据库
性能依赖数据库
 
2、性能测试:
用同一台测试机做为master。测试代码为java,使用activemq-client-5.11.1提供的client,每一个线程用一个链接反复写/读,全部线程完毕后,汇总测试结果。
每秒写/读吞吐量测试结果以下(测试机性能较差,测试结果仅仅用来作3种部署方式的横向比较):
150/500表示每秒写入150条,读取500条消息。
 
单线程
10线程
20线程
40线程
单机(kahadb)
150/500
350/2000
500/2000
480/2000
基于zk的主从(leveldb)
180/3000
600/5500
1400/6000
3200/4500
基于共享数据库的主从
160/300
250/1050
250/1150
250/1200
 
3、灾备方案(两种方式都已经测试经过)
一、leveldb方式
须要3台节点,2台在主机房,1台在备机房,主机房的节点权重设的比备机房节点高。
当master节点故障:
由于权重的关系,主机房另外一个节点会自动被选举为新的master。
当主机房故障:
须要启动备用机房时,先更改备机房节点配置,把集群规模从3改为1,这样1个节点能够临时提供服务(此时再也不保证高可用)。
 
二、共享数据库方式
3台节点便可,2台在主机房,1台在备机房,备机房节点指向灾备activeMQ数据库,平时要关闭。
当master节点故障:
主机房的另外一个节点会自动取得数据库锁,成为新的master。
当主机房故障:
须要启动备用机房时,先完成activeMQ数据库的切换,而后启动灾备activeMQ节点便可临时外提供服务(此时再也不保证高可用)。
相关文章
相关标签/搜索