1、默认单机版部署(kahadb)
acitvemq单机存储方式,以本地的kahadb文件的方式存储,所以性能完全依赖于本地的磁盘IO,so不能提供高可用。
2、基于zookeeper的activemq集群(levelDB Master/Slave)
mq5.9新推出的主从实现。选举出一个Master,其他节点自动作为Slave实时同步消息。
因为存在slave进行实时同步消息,因此Master不用担心数据的丢失,所以levelDB会优先采用内存来存储数据,异步同步到磁盘。所以上该方式的mq读写性能特别好,特别是写的性能能够媲美非持久化的消息。
优点:
高可用性,数据安全,性能好。
缺点:
借助于zookeeper,因此至少需要(replicas/2)+1个activemq服务存活才能保证集群的正常运行,浪费资源。
3、基于共享数据库的主从(Shard JDBC Master/Slave)
可以基于postgres、mysql、oracle等常用数据库。
特点:
每个节点启动都会争抢数据库锁,从而保证Master的唯一性,其他节点作为备份,一直在等待数据库锁的释放。
因为所有的消息的读写,其实都是数据库操作。所以它的性能完全取决于数据库的性能。mq本身的压力很小。
优点:
高可用性,数据安全。
简单灵活,两台节点就可以实现高可用。
缺点:
稳定性依赖数据库,性能依赖数据库。
4、基于共享磁盘主从(同上)