Apache ShardingSphere 是一款分布式的数据库生态系统,可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。
Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。 它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。 它站在数据库的上层视角,关注它们之间的协作多于数据库自身。
Apache ShardingSphere 有三个产品,分别如下:
ShardingSphere-JDBC
ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。
ShardingSphere-Proxy
ShardingSphere-Proxy 定位为透明化的数据库代理端,通过实现数据库二进制协议,对异构语言提供支持。
ShardingSphere-Agent
ShardingSphere-Agent 是独立自主设计,基于 Bytebuddy 字节码增加的项目,基于插件化的设计,可以无缝隙的与 ShardingSphere 集成,目前有提供 log, metrics, traces 等可观测性功能,接下来还将实现使用 distSQL 来查询运行时的数据。
数据分片:ShardingSphere 基于底层数据库提供分布式数据库解决方案,可以水平扩展计算和存储。
分布式事务:基于 XA 和 BASE 的混合事务引擎,ShardingSphere 提供在独立数据库上的分布式事务功能,保证跨数据源的数据安全。
读写分离:基于对 SQL 语义理解及对底层数据库拓扑感知能力,ShardingSphere 提供灵活的读写流量拆分和读流量负载均衡。
高可用:ShardingSphere 提供基于原生或 Kubernetes 环境下数据库集群的分布式高可用能力。
数据迁移:ShardingSphere 提供跨数据源的数据迁移能力,并可支持重分片扩展。
联邦查询:ShardingSphere 提供跨数据源的复杂查询分析能力,实现跨源的数据关联与聚合。
数据加密:ShardingSphere 提供完整、透明、安全、低成本的数据加密解决方案。
影子库:在全链路压测场景下,ShardingSphere 支持不同工作负载下的数据隔离,避免测试数据污染生产环境。
DistSQL:提供扩展 SQL 增强,可实现管理操作资源及插件能力。
Sharding-JDBC:初始版本,基于 JDBC 驱动,仅可进行分片。
面向集群:引入 ZooKeeper 作为注册中心,提供分布式能力。
Sharding-Proxy:ShardingSphere-Proxy 上线,提供 like-database 的访问能力。
Apache ShardingSphere:正式进入 Apache 基金会,并兼容各种关系型数据库。
可插拔:内核可插拔化多种功能,例如加密、分片都可灵活组合使用。
面向云:ShardingSphere 通过 Helm Chart 和 Operator 方式扩展到云端。通过这些方式可将 ShardingSphere 部署在 Kubernetes,包括 AWS EKS、minikube 及自有 Kuberneters。
面向生态:Database Plus 理念实践化,通过 DistSQL 构建分布式可插拔生态。