Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,定位为关系型数据库中间件,它由Sharding-JDBC
、Sharding-Proxy
和Sharding-Sidecar
这3款相互独立的产品组成。
他们均可提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。
Sharding-Sphere的示意图:
定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
sharding-jdbc目前(3.x)只支持JAVA应用,但是可以支持任意实现JDBC的数据库
Sharding-Proxy被定义为透明化的数据库代理,封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。
Sharding-Proxy的消费端目前(3.x)可支持异构语言,但最终的DB 目前只支持mysql
Sharding-Sidecar定位为Kubernetes或Mesos的云原生数据库代理
以DaemonSet的形式代理所有对数据库的访问。 通过无中心、零侵入的方案提供与数据库交互的的啮合层,即Database Mesh,又可称数据网格。
Database Mesh的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用与数据库之间的交互有效的梳理。使用Database Mesh,访问数据库的应用和数据库终将形成一个巨大的网格体系,应用和数据库只需在网格体系中对号入座即可,它们都是被啮合层所治理的对象。
Sharding-JDBC | Sharding-Proxy | Sharding-Sidecar | |
数据库 | 任意JDBC数据库(关系型数据库) | MySQL | MySQL |
连接消耗数 | 高 | 低 | 高 |
异构语言 | 仅Java | 任意 | 任意 |
性能 | 损耗低 | 损耗略高 | 损耗低 |
无中心化 | 是 | 否 | 是 |
静态入口 | 无 | 有 | 无 |