ShardingSphere - 分布式数据库中间层

官网地址: http://shardingsphere.io/





Build Status




文档支持


概览

ShardingSphere是一个分布式数据库中间件解决方案的开源项目,包含了3个独立的产品,分别为Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar.它们一起提供了数据分片、分布式事务和数据库编排等功能,适用于Java同构、异构语言和本地云等多种情况。

为了合理利用分布式系统中数据库的计算和存储能力,ShardingSphere将自己定义为中间件,而不是一种全新的数据库类型。关系数据库作为许多企业的基石,仍然占据着巨大的市场份额。因此,在现阶段,我们更倾向于关注它的增量而不是完全颠覆。

ShardingSphere新版本官方说明_第1张图片

Sharding-JDBC

Sharding-JDBC将自己定义为一个轻量级Java框架,它在Java JDBC层提供额外的服务。
由于客户端直接连接到数据库,它以jar的形式提供服务,不需要额外的部署和依赖。
它可以看作是一种增强的JDBC驱动程序,完全兼容JDBC和各种ORM框架。

适用于任何基于Java的ORM框架,如JPA、Hibernate、Mybatis、Spring JDBC模板或JDBC的直接使用。
基于任何第三方数据库连接池,如DBCP, C3P0, BoneCP, Druid, HikariCP。
*支持任何类型的数据库JDBC标准:符合MySQL,Oracle和PostgreSQL状态"置疑"。

ShardingSphere新版本官方说明_第2张图片

Sharding-Proxy


Sharding-Proxy将自己定义为一个透明的数据库代理,提供一个封装数据库二进制协议以支持异构语言的数据库服务器。
对DBA更友好的是,现在提供的MySQL版本可以使用任何一种与MySQL协议兼容的客户端访问(如MySQL命令客户端、MySQL Workbench等)来操作数据。

对应用程序完全透明,可以直接作为MySQL使用。
适用于任何一种兼容MySQL协议的客户端兼容。

ShardingSphere新版本官方说明_第3张图片

Sharding-Sidecar(TBD)

Sharding-Sidecar (TBD)将自己定义为Kubernetes或Mesos环境的云本地数据库代理,负责以DaemonSet的形式对数据库的所有访问。通过分散化和零成本的解决方案,它提供了一个与数据库交互的网格层,即,数据库网格,又称数据库网格。
Database Mesh强调如何将分布式数据库访问应用程序与数据库连接起来。它专注于交互,有效地组织混乱的应用程序和数据库之间的交互。使用database Mesh访问数据库的应用程序和数据库会形成一个大的网格系统,只需要将它们放到相应的位置即可。它们都是由网格层控制的。

ShardingSphere新版本官方说明_第4张图片

Sharding-JDBC Sharding-Proxy Sharding-Sidecar
Database Any MySQL MySQL
Connections Cost Number High Low High
Heterogeneous Language Java Only Any Any
Performance Low loss Relatively High loss Low loss
Decentralization Yes No No
Static Entry No Yes No

Hybrid Architecture

Sharding-JDBC采用分散式架构,适用于Java开发的高性能轻量级OLTP应用;
sharding - proxy提供静态入口和异构语言支持,适用于OLAP应用和分片数据库的管理和运行情况。
ShardingSphere是一个生态球,由多个端点组成。ShardingSphere通过一个注册中心对sharding - jdbc和sharding - proxy的混合使用和统一的sharding策略,可以构建适用于各种情况的应用系统。
架构师可以更自由地将系统体系结构调整为最适合当前业务的体系结构。

ShardingSphere新版本官方说明_第5张图片

Features

数据切片

  • Database sharding & Table sharding(分库分表)
  • Read-write splitting:读写分离
  • Distributed primary key: 分布式主键

分布式事务

  • XA transaction
  • BASE transaction

Database Orchestration

  • Dynamic configuration
  • Fusing & Disabling
  • Tracing
  • Elastic scaling out (Planing)

Roadmap

ShardingSphere新版本官方说明_第6张图片