前言
业务的增长带来数据量增长,应用可以水平扩展,同样数据也需要考虑水平扩展,以下基于springboot2.1.1、shardingsphere3.1.0实践数据分片。对于shardingsphere组件,这里使用了sharding-proxy部分的配置功能;sharding-proxy配置支持数据分片、读写分离、数据分片+读写分离、数据治理。以下示例基于单业务库主从+读写分离+业务分表。
配置
配置pom.xml依赖
<!-- springboot web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.1</version>
</dependency>
<!-- mybatis 分库分表插件 -->
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<!-- mysql 驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
通过依赖树可以看出shardingsphere有以下几个关键jar包:sharding-jdbc-core、sharding-core、sharding-transaction-core。
Sharding-jdbc-spring-boot-starter,完成的两项重点任务是:1、对依赖包的关联管理 2、根据配置的初始化配置对象。第二项减少了我们在java代码方式或者spring.xml方式的配置量。
application.yml配置
spring:
profiles:
active: dev
#main:
#allow-bean-definition-overriding: true
server:
servlet:
context-path: /xx
---
#开发环境配置
spring:
proifles: dev
#数据分表规则
sharding:
jdbc:
datasource:
names: master0,slave0
master0:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://xxx:3306/lizhen_vin_model?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
username: xx
password: xx
slave0:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://xxx:3306/lizhen_vin_model?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
username: xx