Sharding-JDBC是当当开源的用于分库分表的基础类库。定位轻量级java框架,可以通过客户端直接连接数据库,只需要在增加额外的数据源配置就可以轻松实现完整的分库分表功能。
Sharding-JDBC是一个开源的适用于微服务的分布式数据访问基础类库,它始终以云原生的基础开发套件为目标。
目前Sharding-JDBC已经实现的功能包括(最新稳定版本为2.0.0.M1
):
- 分库分表
- 读写分离
- 分布式主键
- 柔性事务
- 分布式治理能力(2.0新功能),具体包括:
- 配置集中化与动态化,可支持数据源、表与分片策略的动态切换
- 客户端的数据库治理,数据源失效自动切换
- 基于Open Tracing协议的APM信息输出
下面的例子都是基于Spring Boot开发:Spring Boot + Mybatis + Druid + Sharding-Jdbc
工程结构
Application
是项目的启动入口
DataSourceConfig
是数据源配置,包括如何结合Sharding-Jdbc设置分库分表
algorithm
下面是设置的分库分表策略,比如当city_id % 2
为偶数放在库A,否则放在库B
UserMapper
是Mybatis的接口,由于采用了全注解配置,所以没有Mapper文件
druid
下面是druid的监控页面配置
pom配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-boot-learning-examples</artifactId>
<groupId>com.rhwayfun</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-boot-mybatis-sharding-jdbc</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
&l