ShardingSphere入门概念
ShardingSphere
Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。
Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。 它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。 它站在数据库的上层视角,关注它们之间的协作多于数据库自身。
官网:https://shardingsphere.apache.org/
ShardingSphere组成
Apache ShardingSphere 由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的基于数据库作为存储节点的增量功能(数据分片、分布式事务和数据库治理),可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。
ShardingSphere各版本差异很大,甚至核心依赖的包名都不一样,使用时,一定要确认使用哪个版本
下面以4.1.1版本为例
ShardingSphere-JDBC
ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。
ShardingSphere-Proxy
定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL(兼容 openGauss 等基于 PostgreSQL 的数据库)版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端(如:MySQL Command Client, MySQL Workbench, Navicat 等)操作数据,对 DBA 更加友好。向应用程序完全透明,可直接当做 MySQL/PostgreSQL 使用;
Sharding-Sidecar(TODO)
定位为 Kubernetes 的云原生数据库代理,以 Sidecar 的形式代理所有对数据库的访问。 通过无中心、零侵入的方案提供与数据库交互的啮合层,即 Database Mesh,又可称数据库网格。
Database Mesh 的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用与数据库之间的交互进行有效地梳理。 使用 Database Mesh,访问数据库的应用和数据库终将形成一个巨大的网格体系,应用和数据库只需在网格体系中对号入座即可,它们都是被啮合层所治理的对象。
ShardingSphere-Sidecar 还没有正式发布稳定版本
Sharding-JDBC的优势在于对Java应用的友好度
ShardingSphere 功能
ShardingSphere 可以用于实现以下功能:
-
数据库分片(Sharding):将数据按照规则拆分到多个数据库实例中,从而实现数据的水平分布和扩展。ShardingSphere 提供了灵活的分片策略和算法,可以根据业务需求进行配置。
-
分布式事务(Distributed Transaction):针对分片环境下的跨库事务问题,ShardingSphere 提供了分布式事务解决方案,支持 XA 和 BASE 两种事务模型,保证数据的一致性和可靠性。
-
读写分离(Read/Write Splitting):通过将读操作和写操作路由到不同的数据库实例上,实现读写分离,提高系统的并发处理能力和性能。ShardingSphere 提供了多种负载均衡算法和自动感知的读写分离策略。
-
数据脱敏(Data Masking):为了保护敏感数据,在查询结果返回前对数据进行脱敏处理,避免敏感信息泄露。ShardingSphere 提供了数据脱敏功能,支持多种常见的脱敏规则和自定义规则。
-
数据库治理(Data Governance):ShardingSphere 提供了丰富的数据治理功能,包括数据分片拓扑管理、运行状态监控、性能统计和故障诊断等,帮助管理员更好地管理和维护分布式数据库环境。
-
数据库中间件支持:ShardingSphere 还支持兼容 MySQL、Oracle、SQL Server 等主流数据库,作为数据库中间件提供连接池管理、路由转发、性能优化等功能,以提升应用程序的稳定性和性能。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!