ShardingSphere的发展历程是什么
今天就跟大家聊聊有关ShardingSphere的发展历程是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
创新互联公司主营静乐网站建设的网络公司,主营网站建设方案,成都app开发,静乐h5成都小程序开发搭建,静乐网站营销推广欢迎静乐等地区企业咨询
ShardingSphere的发展历程:从Sharding-JDBC到Apache顶级项目
说到 ShardingSphere 的起源,我们不得不提 Sharding-JDBC 框架,该框架是一款起源于当当网内部的应用框架,并于 2017 年初正式开源。从 Sharding-JDBC 到 Apache 顶级项目,ShardingSphere 的发展经历了不同的演进阶段。纵观整个 ShardingSphere 的发展历史,我们可以得到时间线与阶段性里程碑的演进过程图:
ShardingSphere的设计理念:不是颠覆,而是兼容
ShardingSphere 的定位非常明确,就是一种关系型数据库中间件,而并非一个全新的关系型数据库。ShardingSphere 认为,在当下,关系型数据库依然占有巨大市场,但凡涉及数据的持久化,关系型数据库仍然是系统的标准配置,也是各个公司核心业务的基石,在可预见的未来中,这点很难撼动。所以,ShardingSphere 在当前阶段更加关注在原有基础上进行兼容和扩展,而非颠覆。
ShardingSphere 构建了一个生态圈,这个生态圈由一套开源的分布式数据库中间件解决方案所构成。按照目前的规划,ShardingSphere 由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar 这三款相互独立的产品组成,其中前两款已经正式发布,而 Sharding-Sidecar 正在规划中。我们可以从这三款产品出发,分析 ShardingSphere 的设计理念。
Sharding-JDBC
Sharding-JDBC 一开始的设计就完全兼容 JDBC 规范,Sharding-JDBC 对外暴露的一套分片操作接口与 JDBC 规范中所提供的接口完全一致。开发人员只需要了解 JDBC,就可以使用 Sharding-JDBC 来实现分库分表,Sharding-JDBC 内部屏蔽了所有的分片规则和处理逻辑的复杂性。显然,这种方案天生就是一种具有高度兼容性的方案,能够为开发人员提供最简单、最直接的开发支持。
在实际开发过程中,Sharding-JDBC 以 JAR 包的形式提供服务。开发人员可以使用这个 JAR 包直连数据库,无需额外的部署和依赖管理。在应用 Sharding-JDBC 时,需要注意到 Sharding-JDBC 背后依赖的是一套完整而强大的分片引擎:
由于 Sharding-JDBC 提供了一套与 JDBC 规范完全一致的 API,所以它可以很方便地与遵循 JDBC 规范的各种组件和框架进行无缝集成。例如,用于提供数据库连接的 DBCP、C3P0 等数据库连接池组件,以及用于提供对象-关系映射的 Hibernate、MyBatis 等 ORM 框架。当然,作为一款支持多数据库的开源框架,Sharding-JDBC 支持 MySQL、Oracle、SQLServer 等主流关系型数据库。
Sharding-Proxy
ShardingSphere 中的 Sharding-Proxy 组件定位为一个透明化的数据库代理端,所以它是代理服务器分片方案的一种具体实现方式。在代理方案的设计和实现上,Sharding-Proxy 同样充分考虑了兼容性
接下来,我们看一下 Sharding-Proxy 的整体架构。对于应用程序而言,这种代理机制是完全透明的,可以直接把它当作 MySQL 或 PostgreSQL 进行使用:
虽然 Sharding-JDBC 和 Sharding-Proxy 具有不同的关注点,但事实上,我们完全可以将它们整合在一起进行使用,也就是说这两个组件之间也存在兼容性。
Sharding-Sidecar
Sidecar 设计模式受到了越来越多的关注和采用,这个模式的目标是把系统中各种异构的服务组件串联起来,并进行高效的服务治理。ShardingSphere 也基于该模式设计了 Sharding-Sidecar 组件。截止到目前,ShardingSphere 给出了 Sharding-Sidecar 的规划,但还没有提供具体的实现方案,这里不做具体展开。作为 Sidecar 模式的具体实现,我们可以想象 Sharding-Sidecar** 的作用就是以 Sidecar 的形式代理所有对数据库的访问**。这也是一种兼容性的设计思路,通过无中心、零侵入的方案将分布式的数据访问应用与数据库有机串联起来。
ShardingSphere的核心功能:从数据分片到编排治理
ShardingSphere 的整体功能拆分成四大部分,即基础设施、分片引擎、分布式事务和治理与集成,这四大部分也构成了本课程介绍 ShardingSphere 的整体行文结构,下面我们来分别进行介绍:
基础设施
微内核结构
ShardingSphere 在设计上采用了微内核(MicroKernel)架构模式,来确保系统具有高度可扩展性。微内核架构包含两部分组件,即内核系统和插件。使用微内核架构对系统进行升级,要做的只是用新插件替换旧插件,而不需要改变整个系统架构:
在 ShardingSphere 中,抽象了一大批插件接口,包含用实现 SQL 解析的 SQLParserEntry、用于实现配置中心的 ConfigCenter、用于数据脱敏的 ShardingEncryptor,以及用于数据库治理的注册中心接口 RegistryCenter 等。开发人员完全可以根据自己的需要,基于这些插件定义来提供定制化实现,并动态加载到 ShardingSphere 运行时环境中。
分布式住建
ShardingSphere 同样提供了分布式主键的实现机制,默认采用的是 SnowFlake(雪花)算法。
分片引擎
对于分片引擎,ShardingSphere同时支持数据分片和读写分离机制。
数据分片
数据分片是ShardingSphere的核心功能,常规的,基于垂直拆分和水平拆分的分库分表操作它都支持。同时,ShardingSphere也预留了分片扩展点,开发人员也可以基于需要实现分片策略的定制化开发。
读写分离
在分库分表的基础上,ShardingSphere也实现了基于数据库主从架构的读写分离机制。而且,这种读写分离机制可以和数据分片完美地进行整合。
分布式事务
分布式事务是分布式环境下确保数据一致性的基本功能,作为分布式数据库的一种生态圈,ShardingSphere也提供了对分布式事务的全面支持。
标准化事务处理接口
ShardingSphere支持本地事务、基于XA两阶段提交的强一致性事务以及基于BASE的柔性最终一致性事务。同时,ShardingSphere抽象了一组标准化的事务处理接口,并通过分片事务管理器ShardingTransactionManager进行统一管理。我们也可以根据需要实现自己的ShardingTransactionManager从而对分布式事务进行扩展。
强一致性事务与柔性事务
ShardingSphere 内置了一组分布式事务的实现方案,其中强一致性事务内置集成了 Atomikos、Narayana 和 Bitronix 等技术来实现 XA 事务管理器;另一方面,ShardingSphere 内部也整合了 Seata 来提供柔性事务功能。
治理与集成
对于分布式数据库而言,治理的范畴可以很广,ShardingSphere 也提供了注册中心、配置中心等一系列功能来支持数据库治理。另一方面,ShardingSphere 作为一款支持快速开发的开源框架,也完成了与其他主流框架的无缝集成。
数据脱敏
数据脱敏是确保数据访问安全的常见需求,通常做法是对原始的SQL进行改写,从而实现对原文数据进行加密。当我们想要获取数据时,在实现上就需要通过对数据库中所存储的密文数据进行解密才能完成。我们可以根据需要实现一套类似的加解密机制,但ShardingSphere的强大之处在于,它将这套机制内嵌到了SQL的执行过程中,业务开发人员不需要关注具体的加解密实现细节,而只要通过简单的配置就能实现数据的自动脱敏。
配置中心
关于配置信息的管理,我们可以基于 YAML 格式或 XML 格式的配置文件完成配置信息的维护,这在 ShardingSphere 中都得到了支持。更进一步,在 ShardingSphere 中,它还提供了配置信息动态化的管理机制,可以支持数据源、表与分片及读写分离策略的动态切换。
注册中心
ShardingSphere 中的注册中心提供了基于 Nacos 和 ZooKeeper 的两种实现方式。而在应用场景上,我们可以基于注册中心完成数据库实例管理、数据库熔断禁用等治理功能。
链路追踪
SQL 解析与 SQL 执行是数据分片的最核心步骤,ShardingSphere 在完成这两个步骤的同时,也会将运行时的数据通过标准协议提交到链路跟踪系统。ShardingSphere 使用 OpenTracing API 发送性能追踪数据。像 SkyWalking、Zipkin 和 Jaeger 等面向 OpenTracing 协议的具体产品都可以和 ShardingSphere 自动完成对接。
系统集成
这里所谓的系统集成,指的是ShardingSphere和Spring系列框架的集成。到目前为止,ShardingSphere实现了两种系统的集成机制,一种是命名空间机制,即通过扩展Spring Schema来实现与Spring框架的集成;而另一种则是通过编写自定义的stater组件来完成与Spring Boot的集成。
看完上述内容,你们对ShardingSphere的发展历程是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
网页题目:ShardingSphere的发展历程是什么
本文网址:http://scyanting.com/article/jhehcc.html