### Shardingsphere 分库分表知识点详解 #### 1. 概览 ##### 1.1 简介 Shardingsphere 是一个分布式数据库中间件项目,它由 Apache 软件基金会维护,旨在为应用程序提供透明的数据分片、读写分离、数据加密等能力。Shardingsphere 的核心功能是将多个数据库或表视为单一逻辑数据库,从而实现水平扩展,提高系统性能和可扩展性。 ##### 1.1.1 Shardingsphere-JDBC Shardingsphere-JDBC 是 Shardingsphere 生态系统中的一个模块,它作为一个轻量级的 JDBC 扩展框架存在,能够无缝集成到任何基于 JDBC 的应用程序中,无需修改业务代码即可实现数据分片等功能。 - **特点**: - 支持所有基于 JDBC 的 ORM 框架,如 MyBatis、Hibernate 等。 - 完全兼容 JDBC 协议,对现有应用程序完全透明。 - 可以通过 Spring Boot Starter 或其他方式快速集成。 - **应用场景**: - 数据库横向扩展场景:当单个数据库无法承载大量数据时,可以使用 Shardingsphere-JDBC 进行分库分表操作。 - 复杂查询优化:通过路由规则配置,可以优化跨库、跨表的复杂 SQL 查询。 ##### 1.1.2 Shardingsphere-Proxy Shardingsphere-Proxy 作为另一个重要的组成部分,它充当了一个独立的数据库代理服务器,支持多种数据库类型,如 MySQL 和 PostgreSQL,并且具备以下特性: - **特点**: - 提供了与数据库驱动完全相同的协议,应用程序只需更改连接 URL 即可使用。 - 高度可定制化的 SQL 解析和路由逻辑。 - 支持多种数据库类型,包括 MySQL 和 PostgreSQL。 - **应用场景**: - 当应用程序不希望改变现有的 JDBC 连接逻辑时,可以通过 Shardingsphere-Proxy 实现分库分表。 - 对于需要进行复杂的 SQL 路由和改写的场景,使用 Shardingsphere-Proxy 更加灵活。 ##### 1.1.3 Shardingsphere-Sidecar(TODO) Shardingsphere-Sidecar 是一个正在开发中的组件,目前还没有详细的官方文档介绍其具体功能和用法。根据其名称推测,它可能是一个与服务网格相关的组件,用于在微服务架构中管理和监控 Shardingsphere 的运行情况。 ##### 1.1.4 混合架构 除了单独使用 Shardingsphere-JDBC 或 Shardingsphere-Proxy 之外,还可以结合两者使用,形成混合架构。这种架构模式适用于既有应用需要使用 JDBC 连接数据库,同时又希望引入代理服务器来简化某些操作的情况。 - **应用场景**: - 需要在不同的模块之间采用不同的分库分表策略。 - 对于旧系统改造,部分模块使用 Shardingsphere-JDBC,新开发的部分使用 Shardingsphere-Proxy。 #### 2. 快速入门 ##### 2.1 Shardingsphere-JDBC **步骤 1:引入 Maven 依赖** 为了使用 Shardingsphere-JDBC,首先需要在项目的 `pom.xml` 文件中添加相应的 Maven 依赖。 ```xml org.apache.shardingsphere shardingsphere-jdbc-core 5.0.0 ``` **步骤 2:规则配置** 配置分片规则通常包括定义数据源、表规则以及分片键等信息。 ```yaml sharding: data-sources: ds_0: type: com.zaxxer.hikari.HikariDataSource configuration: jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds_0 username: root password: ds_1: type: com.zaxxer.hikari.HikariDataSource configuration: jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds_1 username: root password: tables: t_order: actual-data-nodes: ds_${0..1}.t_order database-strategy: inline: sharding-column: user_id algorithm-expression: ds_${user_id % 2} table-strategy: inline: sharding-column: order_id algorithm-expression: t_order_${order_id % 2} ``` **步骤 3:创建数据源** 在应用启动时创建数据源,初始化 Shardingsphere-JDBC 的环境。 ```java DataSource dataSource = ShardingSphereDataSourceFactory.createDataSource(createDataSourceMap(), createShardingRuleConfiguration(), new Properties()); ``` **步骤 4:编写业务代码** 通过上述步骤,Shardingsphere-JDBC 已经配置完成,接下来可以直接使用 JPA、MyBatis 等 ORM 框架进行数据库操作。 ##### 2.2 Shardingsphere-Proxy **步骤 1:规则配置** Shardingsphere-Proxy 的配置与 Shardingsphere-JDBC 类似,但通常是在配置文件中完成的。 **步骤 2:引入依赖** 由于 Shardingsphere-Proxy 是一个独立的服务,因此无需在应用程序中引入额外的依赖。 **步骤 3:启动服务** 启动 Shardingsphere-Proxy 服务,可以通过命令行或配置文件启动。 ```bash java -jar shardingsphere-proxy-5.0.0.jar --configPath=/path/to/config.yaml ``` **步骤 4:使用 Shardingsphere-Proxy** 更新应用程序的数据库连接 URL,指向 Shardingsphere-Proxy 的地址。 ```java DataSource dataSource = DataSourceBuilder.create() .url("jdbc:mysql://localhost:3307?serverTimezone=UTC&useSSL=false") .username("root") .password("") .build(); ``` 通过以上步骤,我们可以看到 Shardingsphere-JDBC 和 Shardingsphere-Proxy 在分库分表方面的强大功能和支持。无论是对于传统应用还是现代微服务架构,Shardingsphere 都提供了灵活且高效的解决方案。
2025-07-21 11:03:30 4.26MB shardingsphere postgresql 分库分表
1
在React框架中,Reactor是其核心库之一,专门用于构建响应式应用程序。本篇文章将详细解读Reactor 3的中文帮助文档,帮助用户理解非阻塞响应式框架的使用方法及其原理,尤其是Spring WebFlux底层实现的相关知识。 Reactor 3文档提供了关于该框架的最新版本和版权声明,解释了用户可以如何贡献和获取帮助。文档以一系列问题的形式引导用户如何开始阅读,例如:"什么是Reactor?","需要哪些前提条件?",以及"如何获取Reactor"等。 接下来是关于响应式编程的介绍,文档解释了阻塞操作对资源的浪费,异步编程如何能解决问题,并指导开发者如何从传统的命令式编程模式转换到响应式编程模式。 文档的核心部分是介绍Reactor的核心特性,包括Flux和Mono这两个关键类。Flux代表的是一个包含0到N个元素的异步序列,而Mono则代表一个异步的结果,这个结果可能是0个或者1个元素。文档描述了如何创建和订阅Flux或Mono,以及如何编程式地创建序列。同时,也介绍了调度器(Schedulers)和线程模型,以及如何处理错误和使用Processors。 对于Kotlin语言的支持部分,文档提供了一些特定于Kotlin的扩展和前提条件介绍,并说明了Null值安全的处理方式。 在测试方面,Reactor文档教导用户如何使用StepVerifier进行单元测试,如何操控时间进行测试,并且如何用TestPublisher手动发出元素。此外,还介绍了如何用PublisherProbe检查执行路径。 调试Reactor时,文档详细讲解了如何阅读和理解典型的ReactorStackTrace,如何开启调试模式和记录流的日志。高级特性和概念部分则涉及了操作符的打包重用、Hot和Cold的区别、三种不同的分批处理方式、使用ParallelFlux进行并行处理、替换默认的Schedulers、使用全局Hooks、以及如何为响应式序列增加Context和空值安全。 附录A提供了一个有用的操作符索引,告诉用户如何创建一个新序列、转化序列、窥视序列、过滤序列、错误处理、基于时间的操作、拆分Flux以及回到同步世界的方法。附录B和C则分别回答了用户常见的问题和最佳实践,例如:"如何包装一个同步阻塞的调用?"、"Flux上的操作符为什么没起作用?"、"如何使用retryWhen实现重试效果?"、"如何确保线程亲和性?"、以及"Reactor-Extra"中关于TupleUtils、函数式接口、MathFlux、重复与重试工具和调度器的介绍。 文档中提到的一些关键术语和概念包括: - Publisher(发布者):一个提供数据的源头,它可以异步发送零个或多个数据项给订阅者。 - Subscriber(订阅者):接收数据的组件,它订阅一个或多个发布者。 - Subscription(订阅):连接发布者和订阅者的桥梁,表示订阅状态。 - sequence/stream(序列/流):在响应式编程中,通常指代一个数据流。 - element/item(元素):序列中单个数据项。 - emit/produce/generate(发出/产生/生成):发布者发送数据项的动作。 - consume(消费):订阅者接收和处理数据项的过程。 - Processor(处理器):既是发布者也是订阅者的组件。 - operator(操作符):声明式的可组装的响应式方法,能够形成操作链。 这些知识点构成了Reactor框架的基础,并为构建高性能的响应式应用程序提供了强大的工具和方法论。文档中强调,尽管内容丰富,但每一节都是独立的,并且通过链接可以方便地相互跳转阅读。
2025-04-10 17:30:23 1.03MB Reactor JAVA
1
ASProtect 汉化版及中文帮助文档
2024-08-05 20:13:44 1.52MB ASProtect 中文帮助
1
PyTorch 是一个流行的深度学习框架,以其灵活性和易用性而闻名。这个文档是 PyTorch 的中文版本,对于那些希望在中国使用 PyTorch 或者中文阅读习惯的学习者来说非常有价值。以下是一些主要的知识点: 1. **torch 包**:PyTorch 的核心是 `torch` 包,它包含了张量数据结构(Tensor)以及基于这些张量的数学运算。这些运算包括基本的加减乘除、矩阵运算、指数和对数等。此外,`torch` 还提供了与张量相关的各种工具,如序列化和 CUDA 支持,使得在 NVIDIA GPU 上进行高效计算成为可能。 2. **张量检查**:`torch.is_tensor()` 和 `torch.is_storage()` 函数分别用于检查一个对象是否为 PyTorch 的张量或存储对象。这对于确定变量类型和进行类型检查非常有用。 3. **张量元素计数**:`torch.numel()` 函数返回张量中元素的数量,无论张量的维度如何,这有助于了解张量的规模。 4. **打印选项设置**:`torch.set_printoptions()` 可以调整打印张量时的精度、阈值、边缘项数和行宽等参数,使输出更适合阅读。这些选项与 Numpy 的打印选项类似。 5. **创建操作**: - `torch.eye(n, m=None, out=None)` 创建一个二维张量,其对角线元素为 1,其余为 0,类似于单位矩阵。 - `torch.from_numpy(ndarray)` 用于将 Numpy 数组转换为 PyTorch 的张量。转换后的张量与原始 Numpy 数组共享内存,因此修改一个会影响另一个。 - `torch.linspace(start, end, steps=100, out=None)` 生成一个一维张量,包含在给定区间内等间距的点。可以用来创建线性变化的序列。 6. **张量与 Numpy 交互**:PyTorch 和 Numpy 之间的兼容性是其强大功能之一。通过 `torch.from_numpy()`,你可以轻松地在两个库之间转换数据,这对于数据分析和模型训练都非常方便。 7. **CUDA 支持**:PyTorch 提供了 CUDA 实现,允许在支持 CUDA 的 GPU 上进行计算,这极大地加速了计算密集型任务,如神经网络的前向传播和反向传播。 8. **其他操作**:PyTorch 还提供了许多其他张量操作,如索引、切片、形状变换、归一化、随机数生成等,这些都是构建和训练深度学习模型的基础。 这个中文文档是学习和使用 PyTorch 的宝贵资源,它允许用户快速查找和理解相关函数,提高开发效率。对于初学者和经验丰富的开发者来说,都有很高的参考价值。
2024-07-05 21:21:00 325KB Pytorch 中文帮助文档
1
QT中文帮助文档完整版,实在好用,推荐给大家
2024-05-22 19:02:17 7.13MB 帮助文档
1
x64dbg x32dbg 帮助文档 x64dbg x32dbg 中文帮助文档
2024-01-13 09:44:35 1.2MB x64dbg x32dbg 中文帮助文档
1
java中文帮助文档java中文帮助文档java中文帮助文档java中文帮助文档java中文帮助文档java中文帮助文档java中文帮助文档java中文帮助文档java中文帮助文档
2023-12-07 07:03:21 12.3MB java中文电子文档
1
用于.NET.开发的专业网格_电子表格Farpoint Spread for Windows Forms v5.0 中文帮助文档
2023-11-29 13:02:52 1.56MB Farpoint Spread WinForm v5.0
1
请看清楚,这是php的中文函数手册,也即是帮助文档,绝对是中文的。 你可能会发现他跟官方的帮助文档不一样,这是因为官方的帮助文档包含两个部分:教程部分和函数手册部分。而此帮助文档只汉化了其函数部分,因而不同。 特别说明,网上绝大部分的所谓的php中文手册其实并不是完全是中文哦(因为官方并没有出中文的手册,那此中文的手册都翻译过来,但只翻译了部分),那些只汉化版了教程部分,而最重要的函数手册部分。相信很多人都为此苦恼不已(我也是过来人)。不过你放心,这个是真的中文函数手册! 很重要!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!有个别电脑会出现【已取消到该网页的导航】 或者 【无法显示网页 的问题】情况,那时千万不是认为是我的文件有文件……还是直接说解决办法吧: 方法 1 1. 双击此 .chm 文件。 2. 在“打开文件安全警告”对话框,单击以清除“打开此文件前始终询问”复选框。 3. 单击“打开”。 方法 2 1. 右键单击该 CHM 文件,然后单击“属性”。 2. 单击“取消阻止”或者“解除锁定”。 3. 双击此 .chm 文件以打开此文件。
2023-11-14 09:03:51 387KB 中文函数手册 中文帮助文档 中文API
1
内容概要:jdk1.8 api 中文帮助文档 适合人群:供广大java爱好者使用 能学到什么:方便查找相应内容,提高学习效率。 阅读建议:建议配合相对应的编程工具如idea,或eclipse一起使用更佳。
2023-10-28 11:09:36 40.65MB jdk1.8 api文档 中文版帮助文档
1