ActiveMQ常见的高可用架构模式及使用LevelDB、ZooKeeper进行高可用消息架构
来源:互联网 发布:假身份证骗网络贷款 编辑:程序博客网 时间:2024/06/05 15:19
ActiveMQ进行高可用架构可以采用主从方式(Master-Slave)或负载均衡(集群)方式。
1. 主从模式
Master-Slave方式中,只能是Master提供服务,Slave是实时地备份Master的数据,以保证消息的可靠性。当Master失效时,Slave会自动升级为Master,客户端会自动连接到Slave上工作。主从模式,可以使用如下方式实现:
1.1. 基于共享文件(Shared File System Master Slave)
这种方式Slave的个数没有限制,哪个ActiveMQ实例先获取共享文件的锁,那个实例就是Master,其它的ActiveMQ实例就是Slave,当当前的Master失效,其它的Slave就会去竞争共享文件锁,谁竞争到了谁就是Master。此模式结构图如下:
1.2. 基于数据库(JDBC Master Slave)
JDBC Master Slave模式和Shared File Sysytem Master Slave模式的原理是一样的,只是把共享文件系统换成了共享数据库。
1.3. 基于zookeeper
此种模式通过zookeeper做为服务选取器来选择activemq作为master,稍后会进行具体介绍。
2. Broker集群模式
此种配置是一个消费者连接到多个broker集群的中的一个broker,当该broker出问题时,消费者自动连接到其他一个正常的broker。消费者使用 failover:// 协议来连接broker。broker之间的通过静态发现(static discovery)和动态发现(dynamic discovery)来维持彼此发现,下面来介绍静态发现和动态发现的机制。
2.1. Static Discovery集群
静态发现通过配置固定的broker uri来发现彼此,配置语法如下:
static:(uri1,uri2,uri3,...)?options
例如:
static:(tcp://localhost:61616,tcp://remotehost:61617?trace=false,vm://localbroker)?initialReconnectDelay=100
2.2. Dynamic Discovery集群
动态发现机制是在各个broker启动时通过Fanout transport来发现彼此。在配置ActiveMQ实例时,不需要知道所有其它实例的URI地址,只需在所有实例的${ACTIVEMQ_HOME}/conf/activemq.xml文件中添加以下内容:
<networkConnectors>
<networkConnector uri="multicast://default" />
</networkConnectors>
同时在<transportConnectors>节点中添加以下部分内容:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616" discoveryUri="multicast://default" />
</transportConnectors>
3. 网络连接(Network Connectors)模式集群
多个broker组成集群,当其中一个broker的消费者出问题导致消息堆积无法消费掉时,通过ActiveMQ支持的Network of Broker方案可将该broker堆积的消息转发到其他有消费者的broker。该方案主要有以下两种配置方式:
3.1. 基于固定地址
3.1. 基于组播发现
4. 基于ZooKeeper的高可用详解
整体的系统结构如下图所示:
ActiveMQ提供了队列、本地持久化的功能,ZooKeeper提供了主从选举的功能,通过zookeeper选取activemq leader的形式实现当某个activemq节点出问题时,保证系统的可用性。
4.1. ZooKeeper部署
配置zoo.cfg文件,修改dataDir地址和集群服务地址
在dataDir路径下创建myid文件,注意与server.x中的x保持一致。
4.2. ActiveMQ配置
修改persistenceAdapter标签,使用LevelDB,并配置与zookeeper连接信息,其中hostname为本机地址。
4.3. 验证测试
在浏览器地址栏分别输入:
http://192.168.1.104:8161/admin/queues.jsp
http://192.168.1.106:8161/admin/queues.jsp
http://192.168.1.108:8161/admin/queues.jsp
因为使用zookeeper做负载均衡,三台只有一台是master,其他两台处于等待状态,所以只有其中一台提供服务,但一旦这台服务器宕机以后,会有另外一台顶替上来,所以其他几个ip地址是打不开的,只有一台能打开。在客户端使用的时候,使用 failover进行配置的,如下:
mq.broker.url=failover:(tcp://192.168.1.104:61616,tcp://192.168.1.106:61616,tcp://192.168.1.108:61616)?initialReconnectDelay=1000
(关注微信公众号,获取更多内容)
- ActiveMQ常见的高可用架构模式及使用LevelDB、ZooKeeper进行高可用消息架构
- ActiveMQ高可用架构(zookeeper+levelDB)
- 分布式架构学习之:028--ActiveMQ高可用集群(zookeeper+leveldb)安装、配置、高可用测试
- 分布式架构学习之:ActiveMQ高可用集群(zookeeper+leveldb)安装、配置、高可用测试
- ActiveMQ基于LevelDB的Zookeeper高可用集群
- activemq的高可用(zookeeper+leveldb)主从集群
- 分布式架构高可用架构篇_02_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试
- zookeeper+activeMQ 高可用
- zookeeper+activemq实现高可用消息队列
- ActiveMQ 高可用集群(ZooKeeper + LevelDB + Static discovery)
- JMS之——ActiveMQ高可用集群安装、配置(基于ZooKeeper + LevelDB的伪集群)
- JMS之——ActiveMQ高可用集群安装、配置(基于ZooKeeper + LevelDB的伪集群)
- 网站的高可用架构
- 互联网架构的高可用
- 网站的高可用架构
- 公开课发布《MySQL体系结构及常见高可用架构》
- Mongodb高可用架构
- Redis高可用架构
- Ngnix 配置介绍 (配置,启动,重启)
- android Camera 设置概述
- 第五篇.android的调试工具的相关
- Mysql学习总结(1)——常用sql语句汇总
- 心若在梦就在,二次择业,青鸟助我成功
- ActiveMQ常见的高可用架构模式及使用LevelDB、ZooKeeper进行高可用消息架构
- Gabor滤波器的特征提取C++实现
- (POJ3308)Paratroopers 最大流最小割,建图,模板题
- Silex:security(一)
- shell编程
- UVALive 7146 Defeat the Enemy
- 树莓派 Learning 002 装机后的必要操作 --- 02 解决中文问题
- linux c/c++ 中使用shell命令
- GIT与SVN协同工作—— 作为客户端的 Git