您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
Apache ShardingSphere第三方插件扩展实践手册
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
Apache ShardingSphere第三方插件扩展实践手册
Apache ShardingSphere
2021-01-26
IP归属:未知
33560浏览
Apache ShardingSphere 可插拔架构提供了数十个基于 SPI 的扩展点。对于开发者来说,可以十分方便的对功能进行定制化扩展。 本章节将 Apache ShardingSphere 的 SPI 扩展点悉数列出。 如无特殊需求,用户可以使用 Apache ShardingSphere 提供的内置实现;高级用户则可以参考各个功能模块的接口进行自定义实现。 Apache ShardingSphere 社区非常欢迎开发者将自己的实现类反馈至开源社区,让更多用户从中收益。 # SQL解析 ## SQLParserFacade | *SPI 名称* | *详细说明* | | ---------------------- | -------------------------------------- | | SQLParserFacade | 配置用于SQL解析的词法分析器和语法分析器入口 | | *Implementation Class* | *Description* | | ---------------------- | -------------------------------------- | | MySQLParserFacade | 基于 MySQL 的 SQL 解析器入口 | | PostgreSQLParserFacade | 基于 PostgreSQL 的SQL 解析器入口 | | SQLServerParserFacade | 基于 SQLServer 的SQL 解析器入口 | | OracleParserFacade | 基于 Oracle 的SQL 解析器入口 | | SQL92ParserFacade | 基于 SQL92 的SQL 解析器入口 | ## SQLVisitorFacade | *SPI 名称* | *详细说明* | | ----------------------------------- | ------------------------------------------- | | SQLVisitorFacade | SQL 语法树访问器入口 | | *Implementation Class* | *Description* | | ----------------------------------- | ------------------------------------------- | | MySQLStatementSQLVisitorFacade | 基于 MySQL 的提取 SQL 语句的语法树访问器 | | PostgreSQLStatementSQLVisitorFacade | 基于 PostgreSQL 的提取 SQL 语句的语法树访问器 | | SQLServerStatementSQLVisitorFacade | 基于 SQLServer 的提取 SQL 语句的语法树访问器 | | OracleStatementSQLVisitorFacade | 基于 Oracle 的提取 SQL 语句的语法树访问器 | | SQL92StatementSQLVisitorFacade | 基于 SQL92 的SQL 解析器入口 | ## ParsingHook | *SPI 名称* | *详细说明* | | ---------------------- | ------------------------------------ | | ParsingHook | 用于SQL 解析过程追踪 | | *已知实现类* | *详细说明* | | ---------------------- | ------------------------------------ | | OpenTracingParsingHook | 使用 OpenTracing 协议追踪 SQL 解析过程 | # 配置 ## ShardingSphereRuleBuilder | *SPI 名称* | *详细说明* | | ------------------------------- | --------------------------------------------- | | ShardingSphereRuleBuilder | 用于将用户配置转化为规则对象 | | *已知实现类* | *详细说明* | | ------------------------------- | ---------------------------------------------- | | ShardingRuleBuilder | 用于将分片用户配置转化为分片规则对象 | | ReplicaQueryRuleBuilder | 用于将读写分离用户配置转化为读写分离规则对象 | | EncryptRuleBuilder | 用于将加密用户配置转化为加密规则对象 | | ShadowRuleBuilder | 用于将影子库用户配置转化为影子库规则对象 | ## YamlRuleConfigurationSwapper | *SPI 名称* | *详细说明* | | ----------------------------------------------- | ------------------------------------------ | | YamlRuleConfigurationSwapper | 用于将 YAML 配置转化为标准用户配置 | | *已知实现类* | *详细说明* | | ------------------------------------------------ | ----------------------------------------------------- | | ShardingRuleConfigurationYamlSwapper | 用于将分片的 YAML 配置转化为分片标准配置 | | ReplicaQueryRuleConfigurationYamlSwapper | 用于将读写分离的 YAML 配置转化为读写分离标准配置 | | EncryptRuleConfigurationYamlSwapper | 用于将加密的 YAML 分片配置转化为加密标准配置 | | ShadowRuleConfigurationYamlSwapper | 用于将影子库的 YAML 分片配置转化为影子库标准配置 | ## ShardingSphereYamlConstruct | *SPI 名称* | *详细说明* | | ---------------------------------------------- | ------------------------------- | | ShardingSphereYamlConstruct | 用于将定制化对象和 YAML 相互转化 | | *已知实现类* | *详细说明* | | ---------------------------------------------- | -------------------------------- | | NoneShardingStrategyConfigurationYamlConstruct | 用于将不分片策略对象和 YAML 相互转化 | # 内核 ## DatabaseType | *SPI 名称* | *详细说明* | | ---------------------- | ------------------------ | | DatabaseType | 支持的数据库类型 | | *已知实现类* | *详细说明* | | ---------------------- | ------------------------ | | SQL92DatabaseType | 遵循 SQL92 标准的数据库类型 | | MySQLDatabaseType | MySQL 数据库 | | MariaDBDatabaseType | MariaDB 数据库 | | PostgreSQLDatabaseType | PostgreSQL 数据库 | | OracleDatabaseType | Oracle 数据库 | | SQLServerDatabaseType | SQLServer 数据库 | | H2DatabaseType | H2 数据库 | ## LogicMetaDataLoader | *SPI 名称* | *详细说明* | | ---------------------- | ----------------- | | LogicMetaDataLoader | 用于元数据初始化 | | *已知实现类* | *详细说明* | | ---------------------- | ----------------- | | ShardingMetaDataLoader | 用于分片元数据初始化 | | EncryptMetaDataLoader | 用于加密元数据初始化 | ## LogicMetaDataDecorator | *SPI 名称* | *详细说明* | | ------------------------ | ---------------- | | LogicMetaDataDecorator | 用于元数据更新 | | *已知实现类* | *详细说明* | | ------------------------- | ---------------- | | ShardingMetaDataDecorator | 用于分片元数据更新 | | EncryptMetaDataDecorator | 用于加密元数据更新 | ## SQLRouter | *SPI 名称* | *详细说明* | | ---------------------------- | ------------------------- | | SQLRouter | 用于处理路由结果 | | *已知实现类* | *详细说明* | | ----------------------------- | ------------------------ | | ShardingSQLRouter | 用于处理分片路由结果 | | ReplicaQuerySQLRouter | 用于处理读写分离路由结果 | | ShadowSQLRouter | 用于处理影子库路由结果 | ## SQLRewriteContextDecorator | *SPI 名称* | *详细说明* | | ---------------------------------- | ------------------------- | | SQLRewriteContextDecorator | 用于处理 SQL 改写结果 | | *已知实现类* | *详细说明* | | ---------------------------------- | ------------------------- | | ShardingSQLRewriteContextDecorator | 用于处理分片 SQL 改写结果 | | EncryptSQLRewriteContextDecorator | 用于处理加密 SQL 改写结果 | | ShadowSQLRewriteContextDecorator | 用于处理影子库 SQL 改写结果 | ## SQLExecutionHook | *SPI 名称* | *详细说明* | | ----------------------------- | --------------------------------- | | SQLExecutionHook | SQL执行过程监听器 | | *已知实现类* | *详细说明* | | ----------------------------- | --------------------------------- | | TransactionalSQLExecutionHook | 基于事务的SQL执行过程监听器 | | OpenTracingSQLExecutionHook | 基于 OpenTracing 的SQL执行过程监听器 | ## ResultProcessEngine | *SPI 名称* | *详细说明* | | ---------------------------- | ------------------- | | ResultProcessEngine | 用于处理结果集 | | *已知实现类* | *详细说明* | | ---------------------------- | ------------------- | | ShardingResultMergerEngine | 用于处理分片结果集归并 | | EncryptResultDecoratorEngine | 用于处理加密结果集改写 | # 数据分片 ## ShardingAlgorithm | *SPI 名称* | *详细说明* | | ------------------------------- | ---------------------------- | | ShardingAlgorithm | 分片算法 | | *已知实现类* | *详细说明* | | ----------------------------------- | ------------------------ | | InlineShardingAlgorithm | 基于行表达式的分片算法 | | ModShardingAlgorithm | 基于取模的分片算法 | | HashModShardingAlgorithm | 基于哈希取模的分片算法 | | FixedIntervalShardingAlgorithm | 基于固定时间范围的分片算法 | | MutableIntervalShardingAlgorithm | 基于可变时间范围的分片算法 | | VolumeBasedRangeShardingAlgorithm | 基于分片容量的范围分片算法 | | BoundaryBasedRangeShardingAlgorithm | 基于分片边界的范围分片算法 | | ClassBasedShardingAlgorithm | 基于自定义类的分片算法 | ## KeyGenerateAlgorithm | *SPI 名称* | *详细说明* | | ----------------------------- | ---------------------------- | | KeyGenerateAlgorithm | 分布式主键生成算法 | | *已知实现类* | *详细说明* | | ----------------------------- | ---------------------------- | | SnowflakeKeyGenerateAlgorithm | 基于雪花算法的分布式主键生成算法 | | UUIDKeyGenerateAlgorithm | 基于UUID的分布式主键生成算法 | ## TimeService | *SPI 名称* | *详细说明* | | --------------------------- | --------------------------- | | TimeService | 获取当前时间进行路由 | | *已知实现类* | *详细说明* | | --------------------------- | ------------------------------- | | DefaultTimeService | 从应用系统时间中获取当前时间进行路由 | | DatabaseTimeServiceDelegate | 从数据库中获取当前时间进行路由 | ## DatabaseSQLEntry | *SPI 名称* | *详细说明* | | -------------------------- | ---------------------------------- | | DatabaseSQLEntry | 获取当前时间的数据库方言 | | *已知实现类* | *详细说明* | | -------------------------- | ---------------------------------- | | MySQLDatabaseSQLEntry | 从 MySQL 获取当前时间的数据库方言 | | PostgreSQLDatabaseSQLEntry | 从 PostgreSQL 获取当前时间的数据库方言| | OracleDatabaseSQLEntry | 从 Oracle 获取当前时间的数据库方言 | | SQLServerDatabaseSQLEntry | 从 SQLServer 获取当前时间的数据库方言 | # 读写分离 ## ReplicaLoadBalanceAlgorithm | *SPI 名称* | *详细说明* | | ----------------------------------------- | ----------------------- | | ReplicaLoadBalanceAlgorithm | 读库负载均衡算法 | | *已知实现类* | *详细说明* | | ----------------------------------------- | ----------------------- | | RoundRobinReplicaLoadBalanceAlgorithm | 基于轮询的读库负载均衡算法 | | RandomReplicaLoadBalanceAlgorithm | 基于随机的读库负载均衡算法 | # 数据加密 ## EncryptAlgorithm | *SPI 名称* | *详细说明* | | ------------------- | --------------------- | | EncryptAlgorithm | 数据加密算法 | | *已知实现类* | *详细说明* | | ------------------- | --------------------- | | MD5EncryptAlgorithm | 基于 MD5 的数据加密算法 | | AESEncryptAlgorithm | 基于 AES 的数据加密算法 | | RC4EncryptAlgorithm | 基于 RC4 的数据加密算法 | ## QueryAssistedEncryptAlgorithm | *SPI 名称* | *详细说明* | | ----------------------------- | ------------------------ | | QueryAssistedEncryptAlgorithm | 包含查询辅助列的数据加密算法 | | *已知实现类* | *详细说明* | | ----------------------------- | ------------------------- | | 无 | | # SQL审计 ## SQLAuditor | *SPI 名称* | *详细说明* | | ----------- | ----------- | | SQLAuditor | SQL审计器 | | *已知实现类* | *详细说明* | | ----------- | ----------- | | 暂无 | | # 分布式事务 ## ShardingTransactionManager | *SPI 名称* | *详细说明* | | --------------------------------- | -------------------------- | | ShardingTransactionManager | 分布式事务管理器 | | *已知实现类* | *详细说明* | | --------------------------------- | -------------------------- | | XAShardingTransactionManager | 基于 XA 的分布式事务管理器 | | SeataATShardingTransactionManager | 基于 Seata 的分布式事务管理器 | ## XATransactionManager | *SPI 名称* | *详细说明* | | ---------------------------- | --------------------------------- | | XATransactionManager | XA分布式事务管理器 | | *已知实现类* | *详细说明* | | ---------------------------- | --------------------------------- | | AtomikosTransactionManager | 基于 Atomikos 的 XA 分布式事务管理器 | | NarayanaXATransactionManager | 基于 Narayana 的 XA 分布式事务管理器 | | BitronixXATransactionManager | 基于 Bitronix 的 XA 分布式事务管理器 | ## XADataSourceDefinition | *SPI 名称* | *详细说明* | | -------------------------------- | --------------------------------------------------------- | | XADataSourceDefinition | 非 XA 数据源自动转化为 XA 数据源 | | *已知实现类* | *详细说明* | | -------------------------------- | --------------------------------------------------------- | | MySQLXADataSourceDefinition | 非 XA 的 MySQL 数据源自动转化为 XA 的 MySQL 数据源 | | MariaDBXADataSourceDefinition | 非 XA 的 MariaDB 数据源自动转化为 XA 的 MariaDB 数据源 | | PostgreSQLXADataSourceDefinition | 非 XA 的 PostgreSQL 数据源自动转化为 XA 的 PostgreSQL 数据源 | | OracleXADataSourceDefinition | 非 XA 的 Oracle 数据源自动转化为 XA 的 Oracle 数据源 | | SQLServerXADataSourceDefinition | 非 XA 的 SQLServer 数据源自动转化为 XA 的 SQLServer 数据源 | | H2XADataSourceDefinition | 非 XA 的 H2 数据源自动转化为 XA 的 H2 数据源 | ## DataSourcePropertyProvider | *SPI 名称* | *详细说明* | | -------------------------- | ------------------------------- | | DataSourcePropertyProvider | 用于获取数据源连接池的标准属性 | | *已知实现类* | *详细说明* | | -------------------------- | ------------------------------- | | HikariCPPropertyProvider | 用于获取 HikariCP 连接池的标准属性 | # 分布式治理 ## ConfigurationRepository | *SPI 名称* | *详细说明* | | -------------------------------- | ----------------------- | | ConfigurationRepository | 配置中心 | | *已知实现类* | *详细说明* | | -------------------------------- | ----------------------- | | CuratorZookeeperRepository | 基于 ZooKeeper 的配置中心 | | EtcdRepository | 基于 etcd 的配置中心 | | NacosRepository | 基于 Nacos 的配置中心 | | ApolloRepository | 基于 Apollo 的配置中心 | ## RegistryRepository | *SPI 名称* | *详细说明* | | -------------------------------- | ----------------------- | | RegistryRepository | 注册中心 | | *已知实现类* | *详细说明* | | -------------------------------- | ----------------------- | | CuratorZookeeperRepository | 基于 ZooKeeper 的注册中心 | | EtcdRepository | 基于 etcd 的注册中心 | ## RootInvokeHook | *SPI 名称* | *详细说明* | | ------------------------- | ------------------------------------ | | RootInvokeHook | 请求调用入口追踪 | | *已知实现类* | *详细说明* | | ------------------------- | ------------------------------------ | | OpenTracingRootInvokeHook | 基于 OpenTracing 协议的请求调用入口追踪 | # 弹性伸缩 ## ScalingEntry | *SPI 名称* | *详细说明* | | ---------------------- | ---------------------------- | | ScalingEntry | 弹性伸缩入口 | | *已知实现类* | *详细说明* | | ---------------------- | ---------------------------- | | MySQLScalingEntry | 基于 MySQL 的弹性伸缩入口 | | PostgreSQLScalingEntry | 基于 PostgreSQL 的弹性伸缩入口 | # Proxy ## DatabaseProtocolFrontendEngine | *SPI 名称* | *详细说明* | | ------------------------------- | ---------------------------------------------- | | DatabaseProtocolFrontendEngine | 用于ShardingSphere-Proxy解析与适配访问数据库的协议 | | *已知实现类* | *详细说明* | | ------------------------ | ---------------------------------------------- | | MySQLFrontendEngine | 基于 MySQL 的数据库协议实现 | | PostgreSQLFrontendEngine | 基于 PostgreSQL 的SQL 解析器实现 | ## JDBCDriverURLRecognizer | *SPI 名称* | *详细说明* | | ----------------------- | ------------------------------------ | | JDBCDriverURLRecognizer | 使用 JDBC 驱动执行 SQL | | *已知实现类* | *详细说明* | | ----------------------- | ----------------------------------- | | MySQLRecognizer | 使用 MySQL 的 JDBC 驱动执行 SQL | | PostgreSQLRecognizer | 使用 PostgreSQL 的 JDBC 驱动执行 SQL | | OracleRecognizer | 使用 Oracle 的 JDBC 驱动执行 SQL | | SQLServerRecognizer | 使用 SQLServer 的 JDBC 驱动执行 SQL | | H2Recognizer | 使用 H2 的 JDBC 驱动执行 SQL |
原创文章,需联系作者,授权转载
上一篇:UE Design | 学会这6点,设计助力平台产品转化提升(中)
下一篇:UE Design | 学会这6点,设计助力平台产品转化提升(上)
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
数据库技术的发展与变革方兴未艾,NewSQL的出现,只是将各种所需技术组合在一起,而这些技术组合在一起所实现的核心功能,推动着云原生数据库的发展。 NewSQL的三种分类中,新架构和云数据库涉及了太多与数据库相关的底层实现,为了保证本文的范围不至太过发散,我们重点介绍透明化分片数据库中间件的核心功能与实现原理,另外两种类型的NewSQL在核心功能上类似,但实现原理会有所差别。
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
Apache ShardingSphere针对新业务上线、旧业务改造分别提供了相应的全套脱敏解决方案。
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
ShardingSphere对于XA方案,提供了一套SPI解决方案,对Narayana进行了整合,Narayana初始化流程,开始事务流程,获取连接流程,提交事务流程,回滚事务流程。
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
5.x 是 Apache ShardingSphere从分库分表中间件向分布式数据库生态转化的里程碑,从 4.x 版本后期开始打磨的可插拔架构在 5.x 版本已逐渐成型,项目的设计理念和 API 都进行了大幅提升。欢迎大家测试使用!
最新回复
丨
点赞排行
共0条评论
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号