原文地址: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

转载于:https://www.cnblogs.com/davidwang456/p/4475445.html

分布式ActiveMQ集群--转载相关推荐

  1. 使用jmeter对ActiveMQ集群性能方案进行评估--转载

    原文地址:http://www.51testing.com/html/78/23978-143163.html 1.测试概要 1.1 关于 这篇文档中涉及的基于JMS的消息系统能为应用程序提供可靠的, ...

  2. 分布式?集群?负载均衡?(此博客非原创,转载自微信公众号,为避免文章链接消失,copy过来的,如有问题请私信我删除,谢谢)

    分布式?集群?负载均衡? 我曾经面试过一家企业,当时描述完我在老东家完成的微服务架构后,面试官问了我一个问题: 面试官:您有做过分布式系统吗? 我:有,刚刚我描述的微服务架构就是分布式的-- 面试官: ...

  3. ActiveMQ — 集群 — 安装与配置

    2019独角兽企业重金招聘Python工程师标准>>> 1. 服务器配置 推荐集群的数量为基数,并且在这些机器上安装JDK,配置环境变量. 2. 集群方式 常用的集群方式有三种: 基 ...

  4. 分布式 WebSocket 集群解决方案

    作者 | weixin_34194702 来源 | blog.csdn.net/weixin_34194702/article/details/88701309 问题起因 最近做项目时遇到了需要多用户 ...

  5. ActiveMQ集群

    1.ActiveMQ集群介绍 1.为什么要集群? 实现高可用,以排除单点故障引起的服务中断 实现负载均衡,以提升效率为更多客户提供服务 2.集群方式 客户端集群:让多个消费者消费同一个队列 Broke ...

  6. 分布式服务器集群架构方案思考

    分布式服务器集群架构方案思考 http://homeway.me/2014/12/10/think-about-distributed-clusters/ 转载于:https://blog.51cto ...

  7. 使用Docker Swarm搭建分布式爬虫集群

    转载自  使用Docker Swarm搭建分布式爬虫集群 在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况.此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运 ...

  8. [架构] 分布式和集群的区别

    一次在群里面看到群友们在讨论这个的区别,看了他们发表的言论,觉得很有道理,很通俗易懂,就当做学习的笔记记录在这里: 用两个例子看清楚分布式和集群的区别: 例子1: 如果一个任务由10个子任务组成,每个 ...

  9. 分布式、集群的概念、区别

    分布式.集群的概念.区别: 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 =================================== 集群:不 ...

最新文章

  1. [学习]GridView 学习集合 -- GridView中使用超链接的技巧
  2. php vue jwt 实战,Vue路由之JWT身份认证的实现方法
  3. 如何确认与服务器偏差_货架如何正确验收
  4. 搭建基础架构-ResultMsg
  5. python def函数调用内容_基本的python,def函数和文本菜单的调用
  6. 实验1 java程序基础_《Java程序设计》实验1
  7. Webpack 基础使用
  8. [python][统计学入门]scipy.stats.norm函数探究
  9. ucloud的弹性计算
  10. 微博mysql连接错误_新浪微博错误代码详解
  11. springboot整合webservice接口以及碰到的问题
  12. SpringBoot集成微信支付(二维码支付)
  13. 林瑞c语言代码规范,林瑞庆
  14. 精益看板方法从理论到实战 (5)—— 控制在制品数量(上)
  15. html怎么给视频加遮罩,详解基于canvas的视频遮罩插件
  16. 《魂斗罗:归来》子弹中没中,没你想得那么简单!
  17. 前端提高篇(五十四)练习7:animation动画练习
  18. 【文末有惊喜!】iOS日历攻略:提醒调休并过滤法定节假日
  19. win10蓝牙功能不见了_Win10 2004更新了什么?新功能新特性汇总
  20. 手机直播系统 服务器,手机直播系统平台搭建部署开发

热门文章

  1. python构造和析构_python魔法方法 构造和析构实例讲解
  2. python读取单元格的值csv,比较单元格值的csv文件python
  3. java icomparer_集合数据处理(C#、JavaScript 和 Java)
  4. java js 截取字符串,js截取字符串的三种方法
  5. 四年级计算机考试反思,考试后的反思四年级作文
  6. 下c语言按q退出_Linux vim编辑器怎么退出?第一次用都会问的问题
  7. oracle的all函数,oracle函数 MIN([distinct|all]x)
  8. c++ 类中静态变量 static
  9. sql case 语句
  10. gatewayproperties 是空_一个空手套白狼的商业模式