一、数据库基础
1. 关系型数据库原理
- SQL 语法:熟悉 SQL 的查询、事务、索引、连接(JOIN)等核心语法。
- 事务 ACID 特性:
- 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
- 锁机制:理解行锁、表锁、死锁等概念。
- 索引原理:B+树、哈希索引、覆盖索引等。
- 数据库性能优化:分页优化、查询优化、慢查询分析。
2. 分布式数据库基础
- 分库分表:
- 水平分片(Horizontal Sharding):按数据范围(如时间、哈希)将数据分散到不同库表。
- 垂直分片(Vertical Sharding):按业务模块拆分表。
- 分片键(Sharding Key):选择分片键的原则(如业务查询热点、数据分布均匀性)。
- 分布式事务:
- ACID 在分布式场景中的挑战。
- 两阶段提交(2PC/XA):理解其原理和性能问题。
- 柔性事务(BASE 理论):最终一致性、异步补偿。
- 高可用与容灾:主从复制、读写分离、数据同步机制。
二、Java & Spring 框架
1. Java 基础
- 面向对象:类、接口、继承、多态。
- 集合框架:
List、Map、Set的使用与性能差异。 - 多线程与并发:线程池、锁、
volatile、synchronized。 - IO/NIO:基础网络编程(如 TCP/IP 协议)。
2. Spring 框架
- Spring Core:
- IoC/DI(控制反转/依赖注入):Bean 的创建、作用域、生命周期。
- AOP(面向切面编程):切点、通知、代理模式。
- Spring Boot:
- 快速集成第三方库(如 ShardingSphere-JDBC)。
- 配置管理(YAML/Properties)。
- Spring Data JPA/MyBatis:
- ORM 框架的使用,理解 SQL 生成与执行流程。
3. ShardingSphere-JDBC 的核心依赖
- JDBC API:理解
Connection、Statement、ResultSet的使用。 - 数据库连接池:如 HikariCP、Druid 的配置与原理。
三、分布式系统与架构
1. 分布式系统基础
- CAP 理论:理解一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)的权衡。
- 微服务架构:服务拆分、通信协议(如 REST、RPC)。
- 配置中心与注册中心:
- ZooKeeper:分布式协调服务(如服务注册、配置存储)。
- Nacos:服务发现与配置管理。
2. ShardingSphere 的核心概念
- 可插拔架构(SPI):
- Service Provider Interface(SPI):Java 的动态扩展机制(如
ServiceLoader)。 - ShardingSphere 通过 SPI 实现功能扩展(如分片算法、数据加密策略)。
- Service Provider Interface(SPI):Java 的动态扩展机制(如
- DistSQL:ShardingSphere 提供的分布式 SQL 语法(如配置分片规则、事务模式)。
3. 分布式事务实现
- XA 事务:ShardingSphere 对 XA 协议的支持(两阶段提交,保证强一致性)。
- 柔性事务(Seata):
- TCC(Try-Confirm-Cancel):补偿机制。
- Saga 模式:长事务拆分。
- Seata 的 AT 模式:自动补偿。
四、网络与协议
1. 网络协议
- TCP/IP 协议:理解三次握手、四次挥手、粘包问题。
- 数据库协议:
- MySQL 协议:了解客户端-服务端通信流程。
- PostgreSQL 协议:熟悉 ShardingSphere-Proxy 的实现基础。
2. ShardingSphere-Proxy
- 数据库代理原理:Proxy 作为中间层解析 SQL 并路由请求。
- 二进制协议解析:Proxy 需要解析并转发数据库的二进制协议(如 MySQL 的
COM_QUERY命令)。
五、分片策略与算法
1. 分片算法
- 哈希分片:
MOD、一致性哈希。 - 范围分片:按时间、ID 范围分片。
- 复合分片:多列联合分片(如用户 ID + 时间)。
- 自定义分片算法:实现
ShardingAlgorithm接口。
2. 分布式主键
- 全局唯一 ID 生成:
- Snowflake:Twitter 的分布式 ID 生成算法。
- UUID:理解其性能与唯一性。
- ShardingSphere 内置的
SnowflakeKeyGenerator。
六、配置与实践
1. 配置管理
- YAML/Properties 配置:ShardingSphere 的分片规则、数据源配置。
- 动态配置:通过
DistSQL动态修改分片策略或数据源。
2. 代码实践
- ShardingSphere-JDBC 集成:
spring: shardingsphere: datasource: names: ds0, ds1 ds0: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/ds0 username: root password: root rules: sharding: tables: t_order: actual-data-nodes: ds$->{0..1}.t_order_$->{0..1} table-strategy: standard: sharding-column: user_id sharding-algorithm-name: t_order_inline key-generate-strategy: column: order_id key-generator-name: snowflake sharding-algorithms: t_order_inline: type: INLINE props: algorithm-expression: t_order_$->{user_id % 2} - 分布式事务配置:
spring: shardingsphere: transaction: type: XA # 或 SEATA # 配置 Seata 时需指定 TM 和 RM 地址
七、学习资源推荐
1. 官方文档
- ShardingSphere 官网:https://shardingsphere.apache.org
- GitHub 仓库:查看源码和示例(https://github.com/apache/shardingsphere)。
2. 核心书籍
- 《分布式系统:概念与设计》:理解分布式系统的基础理论。
- 《数据库系统概念》:巩固数据库原理。
- 《Spring in Action》:学习 Spring 框架。
3. 开源项目实践
- ShardingSphere 分布式事务案例:通过 Seata 实现 TCC 或 AT 模式。
- 分库分表实战:实现一个电商订单系统的分片策略。
4. 社区与论坛
- Apache ShardingSphere 邮件列表:https://shardingsphere.apache.org/community/
- Stack Overflow:搜索 ShardingSphere 相关问题。
八、学习路径建议
- 基础阶段:
- 学习关系型数据库和 SQL。
- 掌握 Java/Spring Boot 开发。
- 进阶阶段:
- 理解分布式系统原理(CAP、微服务)。
- 学习 ShardingSphere 的 SPI 机制和 DistSQL。
- 实战阶段:
- 配置分库分表规则,实现水平分片。
- 集成 Seata 实现分布式事务。
- 部署 ShardingSphere-Proxy 并测试高可用性。
5005

被折叠的 条评论
为什么被折叠?



