转载自:ShardingSphere官网数据库
目录apache
1、介绍架构
1. Sharding-JDBC框架
2. Sharding-Proxy运维
3. Sharding-Sidecar(TBD)分布式
4. 混合架构ide
2、功能列表性能
1. 数据分片ui
2. 分布式事务spa
3. 数据库治理
3、规划线路图
在介绍Sharding-JDBC以前,有必要先介绍下Sharding-JDBC的你们族ShardingSphere。在介绍ShardingSphere以后,相信你们会对ShardingSphere的总体架构以及Sharding-JDBC扮演的角色会有更深的了解。
ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各类多样化的应用场景。
ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并不是实现一个全新的关系型数据库。 它与NoSQL和NewSQL是并存而非互斥的关系。NoSQL和NewSQL做为新技术探索的前沿,放眼将来,拥抱变化,是很是值得推荐的。反之,也能够用另外一种思路看待问题,放眼将来,关注不变的东西,进而抓住事物本质。 关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,将来也难于撼动,咱们目前阶段更加关注在原有基础上的增量,而非颠覆。
定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为加强版的JDBC驱动,彻底兼容JDBC和各类ORM框架。
定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前先提供MySQL版本,它可使用任何兼容MySQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench等)操做数据,对DBA更加友好。
定位为Kubernetes或Mesos的云原生数据库代理,以DaemonSet的形式代理全部对数据库的访问。 经过无中心、零侵入的方案提供与数据库交互的的啮合层,即Database Mesh,又可称数据网格。
Database Mesh的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用与数据库之间的交互有效的梳理。使用Database Mesh,访问数据库的应用和数据库终将造成一个巨大的网格体系,应用和数据库只需在网格体系中对号入座便可,它们都是被啮合层所治理的对象。
Sharding-JDBC | Sharding-Proxy | Sharding-Sidecar | |
数据库 | 任意 | MySQL | MySQL |
链接消耗数 | 高 | 低 | 高 |
异构语言 | 仅Java | 任意 | 任意 |
性能 | 损耗低 | 损耗略高 | 损耗低 |
无中心化 | 是 | 否 | 是 |
静态入口 | 无 | 有 | 无 |
Sharding-JDBC采用无中心化架构,适用于Java开发的高性能的轻量级OLTP应用;Sharding-Proxy提供静态入口以及异构语言的支持,适用于OLAP应用以及对分片数据库进行管理和运维的场景。
ShardingSphere是多接入端共同组成的生态圈。 经过混合使用Sharding-JDBC和Sharding-Proxy,并采用同一注册中心统一配置分片策略,可以灵活的搭建适用于各类场景的应用系统,架构师能够更加自由的调整适合于当前业务的最佳系统架构。