分布式ActiveMQ集群--转载
原文地址:http://shensy.iteye.com/blog/1752529
回顾总结前一段时间学习的ActiveMQ分布式集群相关的知识,分享出来希望对看到的人有所帮助。
一、分布式ActiveMQ集群的部署配置细节:
官方资料:http://activemq.apache.org/clustering.html
基本上看这个就足够了,本文就不具体分析配置文件了。
1、Queue consumer clusters:
同一个queue,如果一个consumer失效,那么未被确认的消息都会被发送到这个queue的其它consumer上。
如果某个consumer处理消息比较快,那么它将处理更多的消息。
(Queue consumer clusters 不需要特殊的配置。)
2、Master-Slave高可用性:
主要目的是实现AMQ的高可用性和容错,如果某broker挂了,需要等待它重启才能继续处理消息。而如果消息被复制到slave上,在当master挂了时,可以直接切换到slave导致消息不会丢失。分为3种形式:
(1)pure master-slave。
该方式已经逐渐被淘汰:http://activemq.apache.org/pure-master-slave.html
(2)Shared File System Master Slave。
官方资料:http://activemq.apache.org/masterslave.html
利用共享文件系统:当多台机器上都部署了AMQ时,指定这些机器的一个共享的文件路径作为存储。
存储默认是基于AMQ的kahaDB(底层是文件系统)实现。
当一个AMQ实例获得了共享文件的锁,这个实例就成为了Master,其它实例即为Slave。如果这时Master挂了,其它AMQ实例会竞争共享文件的锁,获得锁的就成为Master,其它实例还是Slave。部署时Slave没有限制数,而且自动切换Master不需要人工干预。(官方资料有详细的过程图片介绍)
(3)JDBC Master Slave。
官方资料:http://activemq.apache.org/masterslave.html
其实与Shared File System一样,只是把共享文件系统换成数据库作为存储。方便实用,但要保证数据库的高可用性。
3、Broker Cluster中的静态与动态发现:
如何让一个broker知道网络上的其它多个broker呢?主要分为静态发现和动态发现两种类型:
(1)The Static Transport(静态发现,包括failover协议)。
官网资料:http://activemq.apache.org/static-transport-reference.html
所谓静态发现:就是将所有已知的broker uri连接时手工进行配置,对client端uri地址做相应修改。
关于failover:
当一个client连接到某个broker,而这个broker挂了,客户端就需要自动连接到网络上其它已知的broker上。
AMQ使用failover协议实现该功能,但需要在client连接时将所有broker以硬编码的形式进行配置。
AMQ的failover协议官方资料:http://activemq.apache.org/failover-transport-reference.html
(2)The Discovery Transport(动态发现)。
官网资料:http://activemq.apache.org/static-transport-reference.html
所谓动态发现,就是部署前不需要知道所有AMQ实例的uri地址,只要进行相关配置,启动后让AMQ自己检测。
需要修改AMQ配置文件,同时client端连接uri地址也要相应修改。
4、Network of Broker:
主要目的是实现负载均衡,提高消息处理能力。
一个client1连接broker1发送消息,另一个client2连接broker2消费消息,这时就需要将broker1上的消息路由到broker2上。而当broker2上的consumer挂了,也需要将消息转发到其它的有consumer的broker上,避免消息大量堆积无法处理,目前的解决方案是Network of Broker。
官方资料:http://activemq.apache.org/networks-of-brokers.html
本文主要对ActiveMQ分布式集群相关知识进行整理总结,具体配置过程见上文中的官方资料,很详细的。
网上一些不错的参考资料:
http://www.doc88.com/p-086413647667.html
http://wenku.baidu.com/view/d0cd7757ad02de80d4d8408a.html
http://bh-keven.iteye.com/blog/1617788
分布式ActiveMQ集群--转载的更多相关文章
- 分布式ActiveMQ集群
分布式ActiveMQ集群的部署配置细节: 官方资料:http://activemq.apache.org/clustering.html 基本上看这个就足够了,本文就不具体分析配置文件了. 1.Qu ...
- 基于zookeeper+leveldb搭建activemq集群--转载
原地址:http://www.open-open.com/lib/view/open1410569018211.html 自从activemq5.9.0开始,activemq的集群实现方式取消了传统的 ...
- [转载]关于ActiveMQ集群
转载于 http://blog.csdn.net/nimmy/article/details/6247289 近日因工作关系,在研究JMS,使用ActiveMQ作为提供者,考虑到消息的重要,拟采用Ac ...
- 使用jmeter对ActiveMQ集群性能方案进行评估--转载
原文地址:http://www.51testing.com/html/78/23978-143163.html 1.测试概要1.1 关于这篇文档中涉及的基于JMS的消息系统能为应用程序提供可靠的,高性 ...
- ActiveMQ集群应用
ActiveMQ集群 ActiveMQ具有强大和灵活的集群功能,但在使用的过程中会发现很多的缺点,ActiveMQ的集群方式主要由两种:Master-Slave和Broker Cluster. 1.M ...
- 分布式MySQL集群方案的探索与思考
转载:http://www.infoq.com/cn/articles/exploration-of-distributed-mysql-cluster-scheme?utm_campaign=rig ...
- ActiveMQ集群(2)
ActiveMQ具有强大和灵活的集群功能,但在使用的过程中会发现很多的缺点,ActiveMQ的集群方式主要有两种:Master-Slave和Broker Cluster. 1.Master-Slave ...
- ActiveMQ集群方案
集群方案主要为了解决系统架构中的两个关键问题:高可用和高性能.ActiveMQ服务的高可用性是指,在ActiveMQ服务性能不变.数据不丢失的前提下,确保当系统灾难出现时ActiveMQ能够持续提供消 ...
- ActiveMQ集群整体认识
出自:https://segmentfault.com/a/1190000014592517 前言 最终需要掌握 Replicated LevelDB Store部署方式,这种部署方式是基于ZooKe ...
随机推荐
- htmlcss笔记--标签默认值样式重置css reset
1.<a>标签 有默认文字修饰:下划线, 去除:text-decoration:none; text-decoration属性值: none 默认.定义标准的文本. underline 定 ...
- Educational Codeforces Round 14
A - Fashion in Berland 水 // #pragma comment(linker, "/STACK:102c000000,102c000000") #inclu ...
- SQL游标遍历数据表
DECLARE @资产编号 VARCHAR(50) ,@gsid VARCHAR(50) DECLARE test_Cursor CURSOR LOCAL FOR SELECT 资产编号,gsid F ...
- 百度,你家云管家能靠谱点不?替你脸红!Shame on you!
此文已提交百度云问题反馈, 坐等答复. 笔者最近下载某24+G分卷压缩文件, 24+G啊, 足足要下将近7个小时.满心欢喜的下载完却尼玛发现解压出错, 有6个文件无法解压?wrong password ...
- 2016-3-25突然推送大量消息的问题及查找 -- Sangit
起因:2016年3月25日 18:30 左右,突然接到客户投诉,说APP收到大量的任务推送消息,而且点击进去都是一些过期任务,我们将对此展开追踪,查找问题原因. 过程: 1.当时的第一反应是先查看re ...
- 实现 Web 后端和客户端之间的分布式和认证通讯
stack.io 是一个用于实现 Web 后端和客户端之间的分布式和认证通讯. 服务器端进程之间的通讯是非常高效的,因为没有中间的代理.而来自客户端的请求通过 socket.io 进入 Node.js ...
- Spark RDD概念学习系列之细谈RDD的弹性(十六)
细谈RDD的弹性 所谓,弹性,是指在内存不够时可以与磁盘进行交换. 弹性之一:自动的进行内存和磁盘数据存储的切换 弹性之二:基于Lineage(血缘)的高效容错 弹性之三:Task如果失败会 ...
- JavaFx版本植物大战僵尸
http://www.cnblogs.com/lslvxy/archive/2013/04/17/3026711.html —————————————————————————————————————— ...
- HDU 4791 Alice's Print Service (2013长沙现场赛,二分)
Alice's Print Service Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- [iOS微博项目 - 1.1] - 设置导航栏主题(统一样式)
A.导航栏两侧文字按钮 1.需求: 所有导航栏两侧的文字式按钮统一样式 普通样式:橙色 高亮样式:红色 不可用样式:亮灰 阴影:不使用 字体大小:15 github: https://github ...