目录
2)、config读取ds_master主数据源和读写分离配置
前言
今天来讲讲Sharding-Jdbc
如何实现读写分离
,话不多说,直接开干。
介绍
Sharding-Jdbc
在3.0
后改名为ShardingSphere
,它由Sharding-JDBC
、Sharding-Proxy
和Sharding-Sidecar
这3款相互独立的产品组成。
和Mycat区别
Mycat
是一个基于第三方应用中间件数据库代理
框架,客户端所有的jdbc请求
都必须要先交给MyCat
,再由MyCat转发
到具体的真实服务器中。
Sharding-Jdbc
是一个Jar形式
,在本地应用层重写
Jdbc原生的方法,实现数据库分片
形式。
所以说,MyCat
属于服务器端
数据库中间件
,而Sharding-Jdbc
是一个本地
数据库中间件
框架。
从设计理念上看确实有一定的相似性。主要流程都是:SQL 解析 -> SQL 路由 -> SQL 改写 -> SQL 执行 -> 结果归并。
但架构设计上是不同的。Mycat 是基于 Proxy,它复写了 MySQL 协议,将 Mycat Server 伪装成一个 MySQL 数据库,而 Sharding-JDBC 是基于 JDBC 的扩展,是以 jar 包的形式提供轻量级服务的。
原理
Sharding-Jdbc
实现读写分离原理,非常容易。只需要在项目中集成主
和从
的数据源,Sharding-Jdbc
自动根据DML
和DQL
语句类型连接主
或者从
数据源。
注意:
Sharding-Jdbc
只是实现连接主或者从数据源,不会
实现主从复制
功能,需要自己配置
数据库自带
主从复制方式。查看MasterSlaveDataSource即可查看该类getDataSource方法获取当前数据源名称。
实现
1、核心依赖
<!-- sharding-jdbc 依赖 -->
<dependency>
<groupId>io.shardingjdbc</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>2.0.3</version>
</dependency>
2、application.yml配置
server:
port: 8080
mybatis-plus:
mapper-loc