Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,定位为关系型数据库中间件,它由Sharding-JDBCSharding-ProxySharding-Sidecar这3款相互独立的产品组成。

他们均可提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。

Sharding-Sphere的示意图:

定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。

  • 适用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
  • 基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
  • 支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer和PostgreSQL。
  • sharding-jdbc目前(3.x)只支持JAVA应用,但是可以支持任意实现JDBC的数据库

Sharding-Proxy被定义为透明化的数据库代理,封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。

  • 向应用程序完全透明,可直接当做MySQL使用。
  • 适用于任何兼容MySQL协议的客户端。
  • 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 任意 任意
性能 损耗低 损耗略高 损耗低
无中心化
静态入口
Copyright © 2019-2020 2024-04-18 18:53:25