为什么要对消息中间件集群?
- 实现高可用,以排除单点故障引起的服务中断。
- 实现负载均衡,以提升效率为更多的客户提供服务。
ActiveMQ集群的基础知识
集群方式
- 客户端集群:让多个消费者消费同一个队列
- Broker Clusters:多个broker之间同步消息
- Master Slave:实现高可用
客户端配置
ActiveMQ失效转移(failover)
允许当其中一台消息服务器宕机时,客户端在传输层上重新连接其他消息服务器。
语法:failover:(uri1,...,uriN)?transportOptions
uri
: 消息服务器的地址
transportOptions
参数说明:
* randomize
默认为 true
,表示在URI列表中选择URL连接时是否采用随机策略。
* initialReconnectDelay
默认为10,单位为毫秒,表示一次尝试重连之间等待的时间。
* maxReconnectDelay
默认 30000,单位毫秒,最长重连的时间间隔。
Broker Clusters集群配置
原理
NetworkConnection (网络连接器)
网络连接器主要用于配置ActiveMQ服务器与服务器之间的网络通讯方式,用于服务器透传信息。
网络连接器分为静态连接器和动态连接器。
* 静态连接器
<networkConnections>
<networkConnection uri="static:(tcp://127.0.0.1:61617,tcp://127.0.0.1:61618)"/>
</networkConnection>
- 动态连接器
<!-- 网络连接器 -->
<networkConnections>
<networkConnection uri="multicast://default"/>
</networkConnection>
<!-- 传输连接器 -->
<transprotConnectors>
<transprotConnector uri="tcp://localhost:0" discoveryUri="multicast://default" />
</transprotConnectors>
静态连接器过于局限,动态连接器可随意扩展服务器连接。
Master/Slave 集群配置
ActiveMQ Master Slave 集群方案
- Share nothing storage master/slave (已过时 5.8+后移除)
- Share storage master/slave 共享存储
- Replicated LevelDB Store 基于复制的 LevelDB Store
关于它们之间的区别和特点:ActiveMQ与HA架构(master/slave)
有没有集群方式既能做到高可用,又能负载均衡呢?