springboot整合mysql集群_【总结+转载】SpringBoot+JPA +MySQL Cluster集群 读写分离/负载均衡...

本文介绍了如何使用SpringBoot和JPA整合MySQL Cluster搭建读写分离的高可用架构。通过配置AbstractRoutingDataSource进行动态数据源切换,实现写入操作到主节点,读取操作到从节点,确保系统的高效运行。
摘要由CSDN通过智能技术生成

==写在开始

MySQL 集群+读写分离方案有多种选择,可参考 浅谈MySQL集群高可用架构 ,

这里选择的是使用MySQL官方的MySQL Cluster方案==

一、MySQL Cluster 集群配置简介

服务器

Cluster角色

系统角色

192.168.2.150

管理节点

192.168.2.151

数据节点(NDBD) & SQL节点(mysqld api)

写服务

192.168.2.152

数据节点(NDBD) & SQL节点(mysqld api)

读服务

为了测试需要,因此在2.151 & 2.152上分别搭建了cluster中的数据节点(ndbd节点服务)和SQL节点(mysqld服务),如果条件允许可以做出以下类似配置

集群中角色 系统中角色

服务器 | Cluster角色 | 系统角色

---|--- | ---

192.168.2.150 | 管理节点 | 无

192.168.2.151 | SQL节点(mysqld api) | 写服务

192.168.2.152 | SQL节点(mysqld api) | 读服务

192.168.2.153 | 数据节点(NDBD) | 无

192.168.2.154 | 数据节点(NDBD) | 无

二、项目使用的持久层

在SpringBoot项目上持久层使用的是Spring-Data-JPA,连接的数据库是一个MySQL Cluster搭建的集群环境;

其中

jdbc:mysql://192.168.2.151:3306/fake-store?useSSL=false&useUnicode=yes&characterEncoding=utf-8

连接的SQL节点用作写服务,

jdbc:mysql://192.168.2.152:3306/fake-store?useSSL=false&useUnicode=yes&characterEncoding=utf-8

连接的SQL节点用作读服务。

三、相关关键字

AOP拦截动态切换数据源、AbstractRoutingDataSource、

Spring支持的数据源路由,JPA 作为持久化框架相关的EntityManager、EntityManagerFactory、JpaTransactionManager

四、定义一个数据源类型和数据源上下文工具类

数据源类型用于标示数据源类型及作用

public enum DataSourceType {

WRITE("write", "写库"), READ("read", "读库");

String type;

String name;

DataSourceType(String type, String name) {

this.type = type;

this.name = name;

}

public String getName() {

return name;

}

public String getType() {

return type;

}

}

数据源上下文工具用于将数据源类型绑定到线程并指示AbstractRoutingDataSource进行数据源切换;

public class DataSourceContextHolder {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值