springboot负载均衡mysql_springboot整合ActiveMQ2(主备
模。。。
单个 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
mysql的jar包下载⾸先修改 conf-&l,这⾥是修改 activemq 的 web 管理端⼝,管理界⾯帐号密码默认为 admin/adminspringboot
复制代码
####⼆、修改 l负载均衡
⽽后修改 conf-&l
设置链接⽅式
默认是下⾯五种链接⽅式都打开,这⾥咱们只要 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.apachemons.dbcp2.BasicDataSource@179ece50
INFO | Attempting to acquire the exclusive lock to become the Master broker
INFO | Becoming the master on dataSource: org.apachemons.dbcp2.BasicDataSource@179ece50
复制代码
接着咱们修改⼀下 tcp 服务端⼝,改成 61617,⽽后从新启动,⽇志信息以下:
INFO | Using a separate dataSource for locking: org.apachemons.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
INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before
INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before
INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before
复制代码
能够看到从节点⼀直在尝试获取表锁成为主节点,这样⼀旦主节点失效,从节点可以马上取代主节点提供服务。这样咱们便实现了主从备份。
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.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.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.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.failover.FailoverTransport : Successfully connected to tcp://localhost:61618
2I'm from queue1:hello
复制代码
证实负载均衡成功。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论