构成:
- ShardingSphere-JDBC
- ShardingSphere-Proxy
-
ShardingSphere-Sidecar(TODO)
ShardingSphere-JDBC
轻量级java框架,在jdbc层提供的额外服务。使用客户端直连数据库,以jar包的形式提供服务,无需额外部署和依赖,可理解为增强办的JDBC渠道,完全兼容JDBC和ORM框架。
- 适用于任何基于JDBC的ORM框架: 如JPA,Hibernate,Mybatis,Spring JDBC Template或直接使用JDBC
- 支持任何第三方的数据库连接池,如:DBCP,C3P0,BoneCp,HikariCP等
- 支持任意实现JDBC规范的数据库,目前支持Mysql, PostgreSQL,Oracle,SQLServer以及任何可使用JDBC访问的数据库。
ShardingSphere-Proxy
透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。目前提供Mysql和PostgreSQL(兼容openGauss等基于PostgreSQL的数据库)版本,它可以使用任何兼容Mysql/PostgreSQL协议的访问客户端(如:MySQLCommandClient,MySQLWorkbench,Navicat等)操作数据,对DBA更加友好。
- 向应用程序完全透明,可直接当做Mysql/PostgreSQL使用
-
适用于任何兼容Mysql/PostgreSQL协议的客户端
ShardingSphere-Sidecar(TODO)
定位为Kubernetes的云原生数据库代理,以Sidecar的形式代理所有对数据库的访问。通过无中心,零侵入的方案提供与数据库交互的啮合层,即database mesh又可称数据库网格。
Database Mesh的关注重点在于如何将分布式的数据访问应用于数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用于数据库之间的交互进行有效的梳理。使用Database Mesh,访问数据库的应用和数据库终将形成一个巨大的网格体系,应用和数据库只需要在网格体系中对号入座即可,它们都是被啮合层所治理的对象。
混合架构
ShardingSphere‐JDBC采用无中心化架构,与应用程序共享资源,适用于java开发的高性能的轻量级OLTP应用;
ShardingSphere‐Proxy提供静态入口以及异构语言的支持,独立于应用程序部署,适用于OLAP应用以及对分片数据库进行管理和运维的场景。
Apache ShardingSphere 是多接入端共同组成的生态圈。通过混合使用 ShardingSphere‐JDBC
和
ShardingSphere‐Proxy
,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,使得架构师更加自由地调整适合于当前业务的最佳系统架构。