简介
Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar这3款相互独立的产品组成。他们均提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。
官网
http://shardingjdbc.io/
Github
https://github.com/sharding-sphere
三大核心模块分别是Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar。
Sharding-JDBC
定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
image
Sharding-Proxy
定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前先提供MySQL版本,它可以使用任何兼容MySQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench等)操作数据,对DBA更加友好。
image
Sharding-Sidecar
定位为Kubernetes或Mesos的云原生数据库代理,以DaemonSet的形式代理所有对数据库的访问。 通过无中心、零侵入的方案提供与数据库交互的的啮合层,即Database Mesh,又可称数据网格。
image
sharding-sphere-example
在Github上分别有三个项目,分别是sharding-sphere、sharding-sphere-doc和sharding-sphere-example。从字面就可以看出每个项目是做什么的。
既然是要入门,那就clone下sharding-sphere-example这个项目。
1、克隆项目
在命令行执行git clone https://github.com/sharding-sphere/sharding-sphere-example.git
完成后,就可以看到sharding-sphere-example项目,导入intellij idea中。
2、编译项目
进入项目根目录下,编译项目。
我这边下载的项目sharding-sphere.version是3.0.0.M2-SNAPSHOT,编译的时候一直报该版本找不到,无法下载,去中央仓库也没有找到。
image
想着可能要本地编译打包,所以就换成了3.0.0.M1版本,编译通过。
image
3、配置数据源
因为是本机测试,所以在本地配置mysql数据库。
image
4、编写数据分片代码
sharding-sphere-example项目中有基于不同场景包括spring-boot、jpa、mybatis的具体分库分表的实例代码。
本文主要结合sharding-sphere官方文档给出的数据分片代码讲解如何实现分库分表的。
测试类ShardingDataSource(自建测试类,来源http://shardingsphere.io/document/current/cn/manual/sharding-jdbc/usage/sharding/)