ActiveMQ笔记:一个高稳定,可扩展的的部署方案

本文介绍一个笔者在实际工作中的实施的基于ActiveMQ的一个高稳定,可扩展的异步消息系统。

ActiveMQ是一个成熟的基于Java语言的开源消息系统,在实际应用中被大量使用。ActiveMQ在系统稳定性,系统的容错和扩展等方面都有很多成熟的方案,也有很多开源的管理工具,是部署异步消息系统的一个很好的选择。

ActiveMQ工作机制

ActiveMQ有两种消息使用方式:

l  Queue模式:Producer发出到Queue里的消息,只能由一个Consumer来使用。

l  Topic模式:Producer发送到Topic里的消息,会传送到Subscribe这个Topic的每一个Consumer。

Producer发出的消息有两种Delivery模式。

l  Persistent:Broker需要保存消息,然后把消息发送到Consumer。如果Broker崩溃后,重新启动后保存的消息可以重新发送给Consumer。

l  NonPersistent:Broker不需要保存消息,直接把消息发送到Consumer。

ActiveMQ可以通过Networks of Brokers方式将多个Broker组成一个Cluster。Producer和Consumer可以任意的连接到该Cluster中的任意一个Broker。Producer发送的消息可以通过Cluser传送到需要的Consumer。

ActiveMQ提供了Master Slave机制实现Broker的HA,有以下几种方式:

l  JDBC Master Slave

l  Shared File System Master Slave

l  KahaDB Replication(ZooKeeper experimental)

同一个Broker,只能有一个Master来传送消息。当Master崩溃后,其他的一个Slave可以作为Master。采用HA的模式,会增加系统的复杂性,也会影响系统的性能。

方案

实际部署中,ActiveMQ采用Queue的消息使用模式。Producer发送的消息使用Persistent的Delivery模式。

在两个node上部署ActiveMQ的Broker,通过ActiveMQ的Networks of Brokers方式来组成Cluster。

系统里的消息应用Instance通过ActiveMQ提供的client类库采用failover TCP的方式随机的接入到ActiveMQ的cluster中。正常情况下,消息应用Instance可以通过ActiveMQ的cluster机制正常通信。如果某个ActiveMQ的node崩溃后,client会自动检测到该情况,切换到另一个ActiveMQ的node。

由于本系统只采用Queue的消息工作方式,而且消息的传送采用persistent的模式。如果一个node崩溃后,重新启动后,保存的消息还可以重新发送到Consumer。对Broker,就不采用Master/Slave的HA模式,避免增加系统的复杂性和降低系统的性能。

配置

ActiveMQ的Broker的配置如下。

#Broker 1:

<!-- The transport connectors ActiveMQ will listen to -->

<transportConnectors>

<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>

</transportConnectors>

<!--

The store and forward broker networks ActiveMQ will listen to.

We‘ll leave it empty as duplex network will be configured by another broker.

-->

<networkConnectors>

</networkConnectors>

#Broker 2:

<!-- The transport connectors ActiveMQ will listen to -->

<transportConnectors>

<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>

</transportConnectors>

<!--

The store and forward broker networks ActiveMQ will listen to

Create a duplex connector to the first broker

-->

<networkConnectors>

<networkConnector uri="static:(tcp://{Broker1Ip}:61616)" duplex="true"/>

</networkConnectors>

原文地址:https://www.cnblogs.com/freebird2018/p/8907266.html

时间: 2024-10-13 06:06:06

ActiveMQ笔记:一个高稳定,可扩展的的部署方案的相关文章

Haproxy+keepalived高可用、负载均衡安装部署方案

1     环境说明 前端两台haproxy+keepalived互为主从,提供高可用:另外基于不同域名访问不同的虚拟ip实现负载均衡 1.1     环境描述 服务器A(主.从):eth0:10.241.51.245   eth1:192.168.1.9 服务器B(从.主):eth2:10.241.51.246   eth1:192.168.1.10 服务器C(web01):eth0:10.241.51.247 服务器D(web02):eth0:10.241.51.248 VIP1:10.24

ActiveMQ笔记(3):基于Networks of Brokers的HA方案

上一篇介绍了基于ZK的ActiveMQ HA方案,虽然理解起来比较容易,但是有二个不足: 1)  占用的节点数过多,1个zk集群至少3个节点,1个activemq集群也至少得3个节点,但其实正常运行时,只有一个master节点在对外响应,换句话说,花6个节点的成本只为了保证1个activemq master节点的高可用,太浪费资源了. 2)  性能下降太明显,比起单节点的activemq,性能下降了近1个数量级. 这一篇将介绍基于networks of brokers的HA方案,不需要借助zk等

如何打造一个高逼格的云运维平台?

导读 在标准化实施完以后,由于数目的增加,或者是一些运维场景的增多,我们会逐步的进行一些工具化和自动化,这个阶段我们的运维的效率得到提升.但是众多的工具以及自动化脚本,会让我们的管理过程中比较困难,随着人员的变动或者是一些工具维护过程中的差错,我们的自动化运维工具的受众群体不太稳定. 前言 大家做运维普遍经历这样的过程: 首先我们会把操作做一个标准化,这个阶段是运维质量的提升的阶段. 在标准化实施完以后,由于数目的增加,或者是一些运维场景的增多,我们会逐步的进行一些工具化和自动化,这个阶段我们的

ActiveMQ实现负载均衡+高可用部署方案

一.架构和技术介绍 1.简介 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现 2.activemq的特性 1. 多种语言和协议编写客户端.语言: Java, C, C++, C#, Ruby, Perl, Python, PHP.应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP 2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息

ActiveMQ实现负载均衡+高可用部署方案(转)

本文转自:http://www.open-open.com/lib/view/open1400126457817.html%20 一.架构和技术介绍 1.简介 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现 2.activemq的特性 1. 多种语言和协议编写客户端.语言: Java, C, C++, C#, Ruby, Perl, Python, PHP.应用协议: OpenWire,Stomp

开源jms服务ActiveMQ的负载均衡+高可用部署方案探索

一个文件(或目录)拥有若干个属性,包括(r/w/x)等基本属性,以及是否为目录(d)与文件(-)或连接文件(l)等属性.此外,Linux还可以设置其他系统安全属性,使用chattr来设置,以lsattr来查看,最重要的是可以设置其不可修改的特性,即便是文件的拥有者都不能进行修改.这个属性相当重要,尤其是在安全机制方面(security). 文件默认权限:umask 当建立一个新的文件或目录时,它的默认属性是与umask有关的.通常,umask就是指定当前用户在建立文件或目录时的属性默认值.那么,

【转载】linux内核笔记之高端内存映射

原文:linux内核笔记之高端内存映射 在32位的系统上,内核使用第3GB~第4GB的线性地址空间,共1GB大小.内核将其中的前896MB与物理内存的0~896MB进行直接映射,即线性映射,将剩余的128M线性地址空间作为访问高于896M的内存的一个窗口. 引入高端内存映射这样一个概念的主要原因就是我们所安装的内存大于1G时,内核的1G线性地址空间无法建立一个完全的直接映射来触及整个物理内存空间,而对于80x86开启PAE的情况下,允许的最大物理内存可达到64G,因此内核将自己的最后128M的线

【原创】一个普适于各种情况易于操作的高可用服务器部署方案

一个大型的互联网系统,采用负载均衡原理实现高可用是最基本的要求,几年前,要想做到这点,得是大公司,找牛逼的技术员才行,现在,阿里云出来之后,门槛极大降低,让运营方可以全心去做运营,不用再为技术方面考虑太多,下图是一个比较典型的利用阿里云提供的各项服务,搭建的一个可水平扩展的部署方案. 这个方案有以下特点: 1.技术难度不高 一般来说,只需要对session和文件保存这两块的代码稍作修改,实现集中存取即可 2.成本费用低 充分利用阿里云的可灵活升级策略,根据系统负载,逐步升级配置 3.达成高可用

[转载]ActiveMQ实现负载均衡+高可用部署方案

转载于 http://www.open-open.com/lib/view/open1400126457817.html 一.架构和技术介绍 1.简介 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现 2.activemq的特性 1. 多种语言和协议编写客户端.语言: Java, C, C++, C#, Ruby, Perl, Python, PHP.应用协议: OpenWire,Stomp RES