ActiveMQ的持久化与集群

ActiveMQ存储消息可以采用多种持久化方案,每种方案都有自己特有的集群方案。

1. 文件型持久化方案

文件型持久化方案包含三种存储方式:AMQ Message store, KahaDB,LevelDB Store。

AMQ Message store是ActiveMQ 5默认的存储。
KahaDB是ActiveMQ5.4的默认存储,是AMQ Message store的继任者。
LevelDB Store是也是基于文件的持久化数据库。

这3种持久化存储方式由于都是基于文件的,ActiveMQ broker集群方式可以采用Shared File System Master Slave方式,就是将数据文件保存在共享的文件系统里。Broker master 和 Broker slave共享数据文件,master挂掉之后,slave可以直接接管master的工作。

2. 基于JDBC持久化方案

这种方案是将消息通过JDBC保存在数据库中,ActiveMQ的JDBC方案支持多种数据库,Apache Derby,Axion,DB2,HSQL,Informix,MaxDB,MySQL,Oracle,Postgresql,SQLServer,Sybase。

在JDBC持久化方案中,ActiveMQ broker集群方式可以采用JDBC Master Slave方式。Broker master和Broker slave使用相同的数据库,但在同一时刻,只有master可以操作数据库,当master挂掉之后,slave可以直接接管master的工作。

在上面描述的集群方案中,broker已经是master-slave集群了,但是共享的数据库并不是集群,仍然存在单点故障的风险。一般采用2中方式来去除单点:
1. 采用支持集群的数据库,很多数据库都支持集群部署,比如mysql和oracle。
2. 采用例如C-JDBC这样的数据库集群中间件,将数据复制到多个独立的数据库中来避免单点。

3. Replicated LevelDB Store

在第3种方案中,也用到了LevelDB,但是它和我们之前提到的基于文件的持久方案完全不同。
Replicated LevelDB Store采用zookeeper从一组broker中选出一个master,master接受客户端的连接,然后其他broker则是slave,他们连接到master,并且不接受客户端的连接。所有的持久化操作都会复制(replicated)到连接的slave。

所有的消息都会等待一个法定人数(quorum)个slave更新完成。法定人数(quorum)表示2n+1。类似zookeeper中法定人数的概念。所以理论上,这种方案的数据可靠性类似于zookeeper。

时间: 2025-01-24 01:08:35

ActiveMQ的持久化与集群的相关文章

activemq集群-activemq 使用network broker集群后,怎样提高AMQ相互之间的通信速度???

问题描述 activemq 使用network broker集群后,怎样提高AMQ相互之间的通信速度??? activemq使用network broker集群之后,消息的处理速度会被拉下来,每秒只有几百个,反复修改配置文件都没有提高上去,我认为主要修改两个地方一个是networkConnectors,另一个是policyEntry,大家都是怎么配置的,配置分布式之后同步传输速度就慢了,可是我感觉两台服务之间使用的是同步传输的:Network connection between vm://13

从单机到集群会话的管理之集群模式二(更大的集群)

<从单机到集群会话的管理之集群模式一>中讲到的全节点复制的网络流量随节点数量增加呈平方趋势增长,也正是因为这个因素导致无法构建较大规模的集群,为了使集群节点能更加大,首要解决的就是数据复制时流量增长的问题,下面将介绍另外一种会话管理方式,每个会话只会有一个备份,它使会话备份的网络流量随节点数量的增加呈线性趋势增长,大大减少了网络流量和逻辑操作,可构建较大的集群. 下面看看这种方式具体的工作机制,集群一般是通过负载均衡对外提供整体服务,所有节点被隐藏在后端组成一个整体.前面各种模式的实现都无需负

activemq使用kahadb持久化搭建分布式集群后发下消息处理速度明显不如单台机器的性能,为什么会下降呢

问题描述 activemq使用kahadb持久化搭建分布式集群后发下消息处理速度明显不如单台机器的性能,为什么会下降呢 最近在linux下测试ActiveMQ5.11 ,使用两台电脑进行分布式布控,测试处理消息性能时,发现对消息的处理速度远不如一台机器工作处理速度,搭建分布式集群后哪里会影响其速度吗? 解决方案 先做性能瓶颈分析,比如网络I/O. CPU, 内存等都有可能是瓶颈.需要先找到瓶颈的地方

activemq 集群-activemq使用kahadb持久化搭建分布式集群后发下消息处理速度明显不如一台机器的性能

问题描述 activemq使用kahadb持久化搭建分布式集群后发下消息处理速度明显不如一台机器的性能 最近在linux下测试ActiveMQ5.11 ,使用两台电脑进行分布式布控,测试处理消息性能时,发现对消息的处理速度远不如一台机器工作处理速度,搭建分布式集群后哪里会影响其速度吗? 解决方案 有谁使用过的?教教怎么配置会提高些消息处理速度 解决方案二: MySQL Master Slave 数据同步,集群mysql master slave projectActiveMq master/sl

ActiveMQ私有云、公有云以及Docker环境高可用集群方案汇总

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1749983 ActiveMQ软件概述 ActiveMQ提供消息队列服务. ActiveMQ高可用原理 ActiveMQ高可用由三部分组成. 1.ActiveMQ的master-slave 两个运行的ActiveMQ instance如果同时使用一套持久化存储,那么这两个ActiveMQ instance就会构成ma

Apache ActiveMQ实战(2)-集群

ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这些问题--集群的两种方式: Master slave  Broker clusters ActiveMQ的集群有两种方式: MASTER/SLAVE模式 Cluster模式 Pure Master Slave Pure master slave的工作方式: 当master broker失效的时候.Slave broker 做出了两种不同的相应方式 启动network connectors和transport conne

activemq的集群负载均衡

问题描述 activemq的集群负载均衡 ZooKeeper + LevelDB + Static discovery 做activemq的集群负载均衡 在activemq.xml中已经添加了如下的配置 集群a: <networkConnectors> <networkConnector uri="static:(tcp://10.1.60.32:53531,tcp://10.1.60.32:53532,tcp://10.1.60.32:53533)" duplex=

activemq分布式集群是怎样实现负载均衡的?仅仅是针对消息的负载均衡吗?

问题描述 activemq分布式集群是怎样实现负载均衡的?仅仅是针对消息的负载均衡吗? 请问大家activemq是怎样实现负载均衡的呢?只是failover()吗?还是针对于消息平均发送给消费者呢?比如说两台机器搭建分布式集群后,100个消费者连上后怎么平均分配?还有一台重启了之后怎样实现它上面的客户端再连回去呢?activemq负载均衡是什么原理? 解决方案 参考下http://blog.csdn.net/jason5186/article/details/18702523http://www

ActiveMQ笔记(4):搭建Broker集群(cluster)

上一篇介绍了基于Networks of Borkers的2节点HA方案,这一篇继续来折腾Networks of Brokers,当应用规模日渐增长时,2节点的broker可能仍然抗不住访问压力,这时候就需要多加一些broker,弄一个更大规模的Broker集群,但是怎么合理设置broker之间的网络桥接,却是有讲究的,先来看一种不太好的设计:   这个架构看上去没瑕疵,没毛病,3个broker之间两两互通,整体可用性极高,但是从消息的路由角度来看,却不是一个好的设计,当producer向brok