springboot负载均衡mysql_springboot整合ActiveMQ 2(主备模式,负载均衡)

本文介绍了如何在ActiveMQ中配置主从备份,通过JDBC数据源实现故障转移,并探讨了如何通过静态路由实现负载均衡。通过实例演示了如何搭建并测试主从备份和负载均衡的MQ集群,确保服务连续性及数据扩展性。
摘要由CSDN通过智能技术生成

单个 MQ 节点老是不可靠的,一旦该节点出现故障,MQ 服务就不可用了,势必会产生较大的损失。这里记录 activeMQ 如何开启主从备份,一旦 master(主节点故障),slave(从节点)当即提供服务,实现原理是运行多个 MQ 使用同一个持久化数据源,这里以 jdbc 数据源为例。同一时间只有一个节点(节点 A)可以抢到数据库的表锁,其余节点进入阻塞状态,一旦 A 发生错误崩溃,其余节点就会从新获取表锁,获取到锁的节点成为 master,其余节点为 slave,若是节点 A 从新启动,也将成为 slave。java

主从备份解决了单节点故障的问题,可是同一时间提供服务的只有一个 master,显然是不能面对数据量的增加,因此还须要一种横向拓展的集群方式来解决面临的问题。mysql

1、activeMQ 设置

一、平台版本说明:

平台:windows

activeMQ 版本:5.9.1,下载地址

jdk 版本:1.8

二、下载 jdbc 依赖

下载下面三个依赖包,放到 activeMQ 安装目录下的 lib 文件夹中。web

###2、主从备份apache

####一、修改 jetttywindows

首先修改 conf->jetty.xml,这里是修改 activemq 的 web 管理端口,管理界面帐号密码默认为 admin/adminspringboot

复制代码

####二、修改 activemq.xml负载均衡

而后修改 conf->activemq.xml

设置链接方式

默认是下面五种链接方式都打开,这里咱们只要 tcp,把其余的都注释掉,而后在这里设置 activemq 的服务端口,能够看到每种链接方式都对应一个端口。

复制代码

设置 jdbc 数据库

mysql 数据库中建立 activemq 库,在broker标签的下面也就是根标签beans的下一级建立一个 bean 节点,内容以下:

复制代码

设置数据源

首先修改 broker 节点,设置 name 和 persistent(默认为 true),也可不作修改,修改后以下:

复制代码

而后设置持久化方式,使用到咱们以前设置的 mysql-qs

复制代码

三、启动

设置完毕后启动 activemq(双击 bin 中的 acitveMQ.jar),启动完成后能够看到以下日志信息:

INFO | Using a separate dataSource for locking: org.apache.commons.dbcp2.BasicDataSource@179ece50

INFO | Attempting to acquire the exclusive lock to become the Master broker

INFO | Becoming the master on dataSource: org.apache.commons.dbcp2.BasicDataSource@179ece50

复制代码

​ 接着咱们修改一下 tcp 服务端口,改成 61617,而后从新启动,日志信息以下:

INFO | Using a separate dataSource for locking: org.apache.commons.dbcp2.BasicDataSource@179ece50

INFO | Attempting to acquire the exclusive lock to become the Master broker

INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before trying again...

INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before trying again...

INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before trying again...

INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before trying again...

复制代码

能够看到从节点一直在尝试获取表锁成为主节点,这样一旦主节点失效,从节点可以马上取代主节点提供服务。这样咱们便实现了主从备份。

3、负载均衡

activemq 能够实现多个 mq 之间进行路由,假设有两个 mq,分别为 brokerA 和 brokerB,当一条消息发送到 brokerA 的队列 test 中,有一个消费者连上了 brokerB,而且想要获取 test 队列,brokerA 中的 test 队列就会路由到 brokerB 上。

开启负载均衡须要设置networkConnectors节点,静态路由配置以下:

复制代码

brokerA 和 brokerB 都要设置该配置,以连上对方。

4、测试

####一、创建 mq

组建两组 broker,每组作主从配置。

brokerA:

主:设置 web 管理端口 8761,设置 mq 名称mq,设置数据库地址为 activemq,设置 tcp 服务端口 61616,设置负载均衡静态路由static:failover://(tcp://localhost:61618,tcp://localhost:61619),而后启动

从:上面的基础上修改 tcp 服务端口为 61617,而后启动

brokerB:

主:设置 web 管理端口 8762,设置 mq 名称mq1,设置数据库地址 activemq1,设置 tcp 服务端口 61618,设置负载均衡静态路由static:failover://(tcp://localhost:61616,tcp://localhost:61617),而后启动

从:上面的基础上修改 tcp 服务端口为 61619,而后启动

二、springboot 测试

沿用上一篇的项目,修改配置文件的 broker-url 为failover:(tcp://localhost:61616,tcp://localhost:61617,tcp://localhost:61618,tcp://localhost:61619),而后启动项目访问会在控制台看到以下日志:

2018-07-31 15:09:25.076 INFO 12780 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://localhost:61618

1I'm from queue1:hello

2018-07-31 15:09:26.599 INFO 12780 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://localhost:61618

2I'm from queue1:hello

2018-07-31 15:09:29.002 INFO 12780 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://localhost:61616

1I'm from queue1:hello

2018-07-31 15:09:34.931 INFO 12780 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://localhost:61618

2I'm from queue1:hello

复制代码

证实负载均衡成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值