图一

    图一说明:
   1、集群一包含3个队列:Amq1、Amq2、Amq3;集群二包含2个队列:Bmq1、Bmq2
   2、生产者一生产的消息可以同时发送到群集1、集群2,生产者二也一样
   3、消费者一可以同时从集群1、集群2消费消息,消费者二也一样
   4、某一个集群挂了,生产者和消费者可以不间断使用其它集群发送,消费消息
 
一、本文目的
        本介绍多个集群的搭建和使用,并通过负载均衡方式使用同一生产者往多个集群发送消息或使用同一消费者从多个集群消费消息。
         
二、概念说明
         1、多个集群
                图一中,集群1包含三个activemq,集群2包含2个activemq,两个集群间数据可以共用
          2、负载均衡
                图一中,生产者1发送的消息可根据集群的负载分别发送到集群1或集群2,当其中一个集群挂掉时,生产者1仍然会向集群2发送消息
                图一中,消费者1,消费者2都可以从集群1,集群2中消费消息,当其中一个集群挂掉时,消费者仍然能从另外一个集群消息消息
          3、集群间的通讯:使用networkConnector配置
 
 
三、Activemq集群的搭建
      1、单个集群的搭建参考:http://www.cnblogs.com/gossip/p/5977489.html
            注意:集群1和集群2中broker的name不能一样,zkPath不能一样
      2、本文中主要搭建2个集群,集群1包含3个activemq、集群2包含2个activemq
IP:192.168.146.129
集群A 控制台 服务接口 集群通讯接口
Amq1 8161 51511 61601

Amq2

8162 51512 61602

Amq3

8163 51513 61603
 
 
四、Activemq集群之间通讯
     Activemq集群搭建有多个方法,本文主要是通过配置networkConnectors实现,该配置放在<broker>节点下,原理为集群1配置连接集群2的所有activemq,反之亦然。配置如下:

1、集群1的每个activemq配置如下:(集群1的url包含集群2所有的队列信息,端口为队列的服务端口)

<networkConnectors>

<networkConnector uri="static:(tcp://192.168.146.130:51511,tcp://192.168.1.101:51512)"/>

</networkConnectors>

   

2、集群2的每个activemq配置如下:(集群2的url包含集群1所有的队列信息,端口为队列的服务端口)

<networkConnectors>
<networkConnector uri="static:(tcp://192.168.146.129:51511,tcp://192.168.146.129:51512,tcp://192.168.146.129:51513)"/>

</networkConnectors>

五、消息生产者向多个集群发送消息

本例使用的是点对点消息队列的demo,使用方法请参考:

http://www.cnblogs.com/gossip/p/5970090.html

需要注意的几点:
1、各个集群只有Master节点的控制台才能使用
2、ActiveMQConnectionFactory的brokerURL必须包含所有集群队列节点的url,包括集群1和集群2,之前以为只需要包含某一个集群的ur,搞了半天发现没效果

测试集群的高可用性:

1、集群1和集群2都注册到了ZooKeeper,都有各自的Master节点

 

2、两个集群中都只有Master节点的管控台才可用(下图为集群中Master队列收到的消息)

 

3、消息随机送到不同集群的Master队列中

4、手动停止集群2的Master队列,生产者卡顿了一下后继续往集群1发送消息,中间的消息并没有中断

5、重新启动集群2的Master队列后,生产者又重新向集群2的Master队列发送消息

 

六、消费者从多个集群消费消息

1、只有1个消费者时,随机从两个集群中消费消息

2、启动两个不同的消费者,他们都同时从集群1、集群2的消费消息。停止其中一个消费者后不影响另外一个消费者

3、关闭集群2的一个队列后(集群2只有两个队列,关闭其中1个后,整个集群都失效了),两个消费者都只从集群1消费消息

七、总结
      上文中主要介绍了单个Activemq集群的高可用,一般应用已经足够。本文更进一步,作为高性能和扩展性的应用,通过多个集群的方式扩展队列,使得消息可以同时发送到多个队列,也可以通过多个消费者消费同一队列的消息。
 
八、参考资料
 
 
 
 
 
 
 

 

 
 

 
 
 

ActiveMQ(八)_多集群的负载均衡的更多相关文章

  1. 注意这几点,轻轻松松配置 Nginx + Tomcat 的集群和负载均衡

    Tomcat 集群是当单台服务器达到性能瓶颈,通过横向扩展的方式提高整体系统性能的有效手段.Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,可以通过简单的配置实现 Tomcat 集群 ...

  2. 在Linux上使用Nginx为Solr集群做负载均衡

    在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...

  3. 结合Apache和Tomcat实现集群和负载均衡 JK 方式 2 (转)

    本文Apache+Tomcat集群配置       基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apa ...

  4. 结合Apache和Tomcat实现集群和负载均衡 JK 方式

    本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵. 因原文中有较多的 ...

  5. 结合Apache和Tomcat实现集群和负载均衡

    http://fableking.iteye.com/blog/360870 TomcatApacheJSP应用服务器Web  本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实 ...

  6. 使用Apache + mod_jk + tomcat来实现tomcat集群的负载均衡出现的无法加载mod_jk.conf文件的问题

    用Apache + mod_jk + tomcat来实现tomcat集群的负载均衡的 如果出现了问题,可以用cmd  cd到Apache安装文件的bin下,运行httpd文件,错误信息就会打印出来. ...

  7. motan负载均衡/zookeeper集群/zookeeper负载均衡的关系

    motan/dubbo支持负载均衡.zookeeper有集群的概念.zookeeper似乎也能做负载均衡,这3者是什么关系呢? 3个概念:motan/dubbo负载均衡.zookeeper集群.zoo ...

  8. tomcat集群与负载均衡

    参考文章http://kalogen.iteye.com/blog/784908,加上了自己调试过程中遇到的问题. 注1:实现此集群的方法参考了网上的很多文章,但由于很多文章都表明是原创的,故无法知道 ...

  9. signalR的集群与负载均衡

    signalR是相当不错的websocket应用,最近要做集群和负载均衡 主要用到了redis进行集群,signalR的backplane集成redis. 细节,订阅redis之后注意database ...

随机推荐

  1. notepad++编译并运行java (自定义包)

    最近用Notepad++写汇编,感觉用起来挺顺手,于是想能不能也在这个优秀的编辑器下编写java并编译运行呢,因为每次启动eclipse都要挺长时间,而且eclipse实在太占内存了... 于是各种百 ...

  2. dotNet开发游戏微端

    需求分析 功能要求 当玩家使用不支持 unity webplayer 的浏览器进入游戏时,让玩家通过微端玩游戏. 确保微端的功能和页游戏功能一致. 大体功能就是为unity web game开发微端, ...

  3. 代码覆盖率工具 EMMA

    使用 EMMA 获得功能测试覆盖率 测试覆盖率是评价测试完整性的重要的度量标准之一. EMMA 是一个面向 Java 代码的测试覆盖率收集工具.在测试过程中,使用 EMMA 能使收集和报告测试覆盖率的 ...

  4. Android应用更换package name以及ui refactoring error问题的有效解决

    package name是Android系统中为每一个应用程序分配的一个标识,每个应用的标识都必须是不同的.在应用开发过程中,有时候可能需要对package name进行修改,这里主要总结修改pack ...

  5. HTML 学习笔记(URL)

    URL也被称为网址 URL可以由单词组成,比如"www.baidu.com" 或者是因特网协议IP地址:192.168.1.253.大多数人在网上冲浪时,会键入网址的域名,因为名称 ...

  6. HTML DOM Document 对象

    HTML DOM Document 对象 HTML DOM 节点 在 HTML DOM (Document Object Model) 中 , 每一个元素都是 节点: 文档是一个文档. 所有的HTML ...

  7. Distribute numbers to two “containers” and minimize their difference of sum

    it can be solved by Dynamical Programming.Here are some useful link: Tutorial and Code: http://www.c ...

  8. 在Mac mini上安装 ESXi 5.5

    Mac mini 是 mid 2011 版本的, 安装原版ESXi 5.5 update 1 非常顺利, 没遇到任何问题. 提示: 1. 安装会初始化整个硬盘, 有数据要先备份 2. ESXi只使用有 ...

  9. FSL - DualRegression

    Source:http://fsl.fmrib.ox.ac.uk/fsl/fslwiki/DualRegression Research Overview A common need for anal ...

  10. 傅盛:如何快慢“炼”金山?(转)

    原文地址:http://www.huxiu.com/article/16052/1.html 一直以来,金山都不是一家"大公司",从前不是,现在也不是. 能够掰着指头数完腾讯六大事 ...