构建异构数据库上层的标准与生态,赋能企业数据架构数字化转型
官方网站: https://shardingsphere.apache.org/
|
|
|
|
|---|
Apache ShardingSphere 定位为 Database Plus,是构建在异构数据库上层的标准与生态系统。作为数据库上层的操作系统,ShardingSphere 并非创造全新的数据库,而是专注于最大化现有数据库的计算能力,提供统一的数据访问入口和增强计算能力。
Database Plus 核心理念:通过在数据库上层构建标准化、可扩展的增强层,让异构数据库像单一数据库一样简单使用,为企业数据架构提供统一的治理能力和分布式计算能力。
连接、增强、可插拔 是 Apache ShardingSphere 的三大核心支柱:
-
连接: 构建数据库上层标准,通过灵活适配数据库协议、SQL 方言和存储格式,快速连接应用与多模式异构数据库,提供统一的数据访问体验;
-
增强: 作为数据库计算增强引擎,透明化提供分布式计算(数据分片、读写分离、联邦查询)、数据安全(加密、脱敏、审计)、流量控制(熔断、限流)以及可观测性(监控、追踪、分析)等企业级能力;
-
可插拔: 采用微内核 + 三层可插拔架构,实现内核、功能组件与生态对接的完全解耦,开发者可以像搭建积木一样,灵活定制符合企业需求的独特数据架构解决方案。
差异化优势:
- vs 分布式数据库:更轻量级、保护现有投资、避免厂商锁定
- vs 传统中间件:功能更丰富、生态更完善、架构更灵活
- vs 云厂商方案:支持多云部署、避免技术绑定、自主可控
ShardingSphere 于 2020 年 4 月 16 日成为 Apache 软件基金会 顶级项目,已在全球范围内被 19,000+ 项目采用。
ShardingSphere 采用独特的双接入端架构设计,提供 JDBC 和 Proxy 两种既可独立部署又可混合部署的接入端,满足不同场景下的多样化需求。
定位:轻量级 Java 框架,增强版 JDBC 驱动
核心特性:
- 客户端直连:与应用程序共享资源,无中心化架构
- 高性能低损耗:直接数据库连接,性能损耗最小
- 完全兼容:兼容所有 ORM 框架(MyBatis、JPA、Hibernate 等)
- 零额外部署:以 JAR 包形式提供,无需独立部署和依赖
适用场景:Java 高性能应用,与业务应用集成部署,追求极致性能
定位:透明化数据库代理,独立部署的服务端
核心特性:
- 静态入口:独立于应用程序部署,提供稳定的数据库访问入口
- 异构语言支持:支持任意兼容 MySQL/PostgreSQL 协议的客户端
- DBA 友好:数据库运维管理界面,便于运维人员操作
- 企业级特性:支持集群部署、负载均衡、故障转移
适用场景:异构语言环境、数据库运维管理、需要统一访问入口的企业级应用
通过混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活搭建适用于各种场景的应用系统:
- 架构灵活性:架构师可自由调整最佳系统架构
- 场景适配性:根据不同业务场景选择最适合的接入方式
- 统一管理:单一配置,多端协同,简化运维复杂度
- 渐进式演进:支持从 JDBC 到 Proxy 的平滑演进路径
更多信息请参考:https://shardingsphere.apache.org/document/current/cn/overview/
搭建开发环境和贡献者指南,请参考:https://shardingsphere.apache.org/community/cn/involved/
我们真挚感谢社区贡献者对 Apache ShardingSphere 的奉献。
🔗 Mailing List. 适合于 Apache 社区相关讨论和版本发布;
🔗 GitHub Issues. 适合于设计讨论、缺陷报告或者开发相关;
🔗 Slack channel. 适合于在线交流和线上会议;
🔗 X. 随时了解 Apache ShardingSphere 信息。
✅ Version 5.5.4-SNAPSHOT: 正在积极开发中 🎉
🔗 请访问 发布说明 获得更详细的信息。
🔜 Version 5.5.4
我们目前正在开发 5.5.4 版本,包含多项安全增强和性能优化。 请访问里程碑 获取最新开发进展。
Apache ShardingSphere 采用微内核 + 三层可插拔架构,实现了内核、功能组件与生态对接的完全解耦,为开发者提供了极致的灵活性和扩展能力。
核心层:
- 查询优化器:智能 SQL 路由和执行计划优化
- 分布式事务:ACID 事务保证和一致性协调
- 执行引擎:高效的分布式执行和结果聚合
功能层:
- 数据分片、读写分离、联邦查询
- 数据加密、数据脱敏、SQL 审计
- 影子库、可观测性、流量控制
生态层:
- 数据库协议适配(MySQL、PostgreSQL、Firebird 等)
- 注册中心集成(ZooKeeper、ETCD 等)
- 配置管理、服务发现、监控集成
完全解耦架构:
- 数据库类型完全解耦,支持新数据库快速接入
- 功能模块完全解耦,支持功能按需组合
Apache ShardingSphere 由 JDBC、Proxy 两个既可独立部署又可混合部署的接入端组成,为 Java 同构、异构语言、云原生等多样化应用场景提供统一的分布式数据库解决方案。
定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。
🔗 更多信息请参考官方网站。
注意:使用 ShardingSphere-JDBC 接入端时,需特别关注应用的内存配置。由于 Antlr 在 SQL 解析过程中,会使用内部缓存来提升性能,如果应用的 SQL 模板数量过多,则会导致缓存不断增长,占用大量堆内存。 根据 ANTLR 官方 issue#4232 的反馈,目前该问题尚未得到优化,应用接入 ShardingSphere-JDBC 时,建议通过
-Xmx参数设置合理的堆内存大小,避免因内存不足导致的 OOM。
定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL 版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端操作数据,对 DBA 更加友好。
🔗 更多信息请参考官方网站。
| ShardingSphere-JDBC | ShardingSphere-Proxy | |
|---|---|---|
| 数据库 | 任意 | MySQL/PostgreSQL |
| 连接消耗数 | 高 | 低 |
| 异构语言 | 仅 Java | 任意 |
| 性能 | 损耗低 | 损耗略高 |
| 无中心化 | 是 | 否 |
| 静态入口 | 无 | 有 |
ShardingSphere-JDBC 采用无中心化架构,与应用程序共享资源,适用于 Java 开发的高性能的轻量级 OLTP 应用; ShardingSphere-Proxy 提供静态入口以及异构语言的支持,独立于应用程序部署,适用于 OLAP 应用以及对分片数据库进行管理和运维的场景。
Apache ShardingSphere 是多接入端共同组成的生态圈。 通过混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,使得架构师更加自由地调整适合于当前业务的最佳系统架构。
🔗 更多信息请参考官方网站。
- 数据分片:水平分片、垂直分片、自定义分片策略、自动分片路由
- 读写分离:主从复制、负载均衡、故障转移、读权重配置
- 分布式事务:XA 事务、柔性事务、事务传播
- 数据加密:字段级加密、透明加密、密钥管理、加密算法支持
- 数据脱敏:敏感数据保护、脱敏策略定制、动态脱敏规则
- 权限控制:细粒度权限、访问控制、安全策略
- 异构数据库:MySQL、PostgreSQL、Oracle、SQL Server、Firebird 等
- SQL 方言转换:跨数据库 SQL 兼容、方言适配、语法转换
- 协议适配:数据库协议转换、多协议支持、通信优化
- 影子库:压测数据隔离、环境分离、真实数据模拟
- 可观测性:性能监控、链路追踪、服务质量分析、指标采集
- 流量分析:SQL 性能分析、流量统计、瓶颈识别
- 高可用:集群部署、故障恢复、服务发现、健康检查
- 云原生:容器化部署、Kubernetes 集成、原生镜像支持
- 监控告警:实时监控、告警通知、性能指标、运维仪表盘
查看 Wiki 详细了解如何构建 Apache ShardingSphere。
ShardingSphere 进入了CNCF 云原生全景图。
