- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Apache ShardingSphere 源码解读-张亮
视频回放全集:
展开查看详情
1 .Apache ShardingSphere 源码解读 张亮 2022.04.23
2 .分享大纲 什么是 Apache ShardingSphere 代码研读建议 主要结构和知识点梳理 可插拔设计模式以及 SPI 内核实现 Apache ShardingSphere 代码规范
3 .设计哲学:Database Plus Database Plus: 一种分布式数据库系统的设计理念。 旨在碎片化的异构数据库上层构建生态,在最大限度的 复用数据库原生存算能力的前提下,进一步提供面向全 局的扩展和叠加计算能力(例如:数据分片、数据加密 等)。使应用和数据库间的交互面向 Database Plus 构 建的标准,从而屏蔽数据库碎片化对上层业务带来的差 异化影响。 连接 增强 可插拔 打造数据库上层标准 数据库计算增强引擎 构建数据库功能生态
4 .理论实践:Apache ShardingSphere
5 .混合部署的架构拓扑 零侵入 & 低耦合 使用方式与数据库和原生 SDK 一致,零学习成本, 对遗留系统无侵入;增强功能与业务应用和数据库 完全解耦,防止被数据库和云供应商绑定,对异构 数据库、多云和混合云天然友好。 多端访问 & 易运维 多类型接入端可同时在线并组成一体化集群,方便 监控和运维。接入端之间可以根据 SQL 规则横向路 由,有效梳理集群流量。 高性能 & 单元化 Java SDK 具备极致高并发能力,与业务应用绑定部 署,更加适合微服务后端的数据单元化架构。
6 .代码研读建议 代码规模 1. 模块数量:211 2. 代码行数:704,348 代码特征 1. 模块众多 2. 层次结构分明 研读建议 1. 掌握整体脉络 2. 根据兴趣点深入探索
7 .代码结构和主要知识点梳理:基础模块 MySQL Parser SPI Memory 1. 可插拔架构设计 PostgreSQL Parser 2. SPI 机制 Standalone SQLServer Parser SQL Parser Cluster Oracle Parser 1. ANTLR 2. SQL 语法 + 方言 SQL92 Parser ZooKeeper DistSQL Parser Etcd Mode 1. 分布式治理设计
8 .代码结构和主要知识点梳理:核心模块 Infra Binder Authority 1. ShardingSphere 基础组件 2. ShardingSphere 核心流程 Route Pipeline Rewrite Schedule kernel 1. ShardingSphere 内核功能 Executor Traffic Merge Transaction Federation XA BASE
9 .代码结构和主要知识点梳理:功能模块 Config Features Sharding Algorithm ShardingSphere 增强功能 Readwrite-Splitting API Rule Db-discovery Core Metadata DistSQL Route Encrypt Spring Shadow Rewrite Merge Schedule
10 .代码结构和主要知识点梳理:接入端 Proxy Frontend MySQL JDBC 1. Netty 2. 数据库协议 Backend PostgreSQL Reactive Bootstrap openGuass JDBC 1. JDBC 接口 Core API 2. Spring 命名空间 3. Spring Boot Starter Spring JDBC Status
11 .代码结构和主要知识点梳理:监控 & 测试 & 示例 Agent Metrics Prometheus 1. ByteBuddy 探针设计 2. 可观察性 Tracing OpenTracing Logging OpenTelemery Test 1. Junit + Parameterized Env + Container ZipKin 2. TestContainer Jaeger Engine + Cases Example Example Generator 1. Freemarker 2. ShardingSphere 配置使用 Generated Example
12 .模块依赖关系 SPI SQL Parser Infra Agent Kernel Test Mode Distribution Features Example Proxy JDBC
13 .可插拔内核架构
14 .ShardingSphere SPI SPI 类型 1. TypedSPI,如:算法 2. OrderedSPI,如:规则 3. RequiredSPI,如:内核 4. OptionalSPI,如:附加 SPI 创建 1. Singleton 2. PropertiesRequired 3. PostProcessor
15 .ShardingSphere 代码规范
16 .ShardingSphere 等你来贡献! Projects by Number of Commits, 2021 • 全球最顶级的开源软件基金会 • 管理超过两亿行代码 • 成功孵化 300+ 顶级开源项目 u 基金会认可:Apache 软件基金会顶级项目 15,000+ Stars 300+ Contributors u 社区活跃度:2021 年度 Apache 年度报告代码提交数量 位列前十 5,000+ Forks 8,000+ Pull Requests u 学术界认可:数据库顶会 ICDE 2022 发表论文《A Holistic and Pluggable Platform for Data Sharding》
17 .欢迎关注我们! 技术干货 加入交流群 SphereEx 官网:https://sphere-ex.com Apache ShardingSphere Website:https://shardingsphere.apache.org Apache ShardingSphere GitHub: https://github.com/apache/shardingsphere Apache ShardingSphere Slack Channel:https://apacheshardingsphere.slack.com
18 .