当前位置:
文档之家› 基于Apache ShardingSphere打造分布式数据库
基于Apache ShardingSphere打造分布式数据库
未来规划
Roadmap
1
可插拔架构
2
SQL兼容度提升
3
多数据副本
4
云原生
5
多元数据融合平台
云原生数据库
宿主机A 业务代码 业务代码
可观察性 & 可视化管理
ShardingOpenTracing
注册中心
Service Sidecar Sharding-Sidecar
分布式数据库解决方案
Connectors Native C API, JDBC, ODBC, .NET, PHP, Python, Perl, Ruby, VB
数据库协议
ShardingSphere
SQL解析
SQL路由
SQL改写
SQL执行
结果归并
JDTX
LSN
MVCC
WAL
查询引擎
恢复模式
弹性伸缩/ 监控治理/ 自动化运维工具
实现方案
进取型
中间件
以高性能换取稳定性的缺失以及 NewSQL
运维经验的不足
稳定型
牺牲部分性能以保证稳定性以及 运维经验的复用
NewSQL的分类
New Architecture
Database-as-a-Service
Transparent Sharding Middleware
《What‘s Really New with NewSQL?》 https:///papers/2016/pavlo-newsql-sigmodrec2016.pdf
JDTX Manager JDTX Transaction SPI
核心功能
Features
1
数据分片
2
分布式事务
3
弹性伸缩(孵化中)
4
分布式治理
范围扩容
DB_0
DB_1
DB_2
DB_n …
弹性迁移
Origin DB_0
增量数据
Origin DB_1
存量数据
New DB_0
New DB_1
New DB_2
目录
CONTENTS
1 分布式数据库核心功能 2 ShardingSphere的实现与规划 3 ShardingSphere的开源与社区
核心功能
Features
1
数据分片
2
分布式事务
3
弹性伸缩
4
分布式治理
核心流程
SQL解析 SQL路由
结果归并
SQL改写
SQL执行
分片策略定制化
复合
哈希
范围
u Java类:com.jd.XXXStrategy u 行表达式:t_order_$->{uid % 8}
开发成本最小化
充分采用论文思路以及第三方开源
整合分布式事务
Sharding Data Source
本地事务API
Sharding XA Transaction Manager
Sharding-Transaction
Sharding Transaction Manager
SQL Revert
Sharding BASE Transaction Manager
WAL
事务处理器
删除
获取
本地事务元组
更新
MVCC引擎
恢复引擎
落盘执行器 更新执行器 查询执行器
设计亮点
Idea
无UNDO日志
通过约束验证来避免使用undo日志提升性能
异步刷盘
通过WAL和内存的方式异步化刷盘
无损事务方案
使用本地事务API完全支持ACID
活动事务与数据存储分离
充分利用数据库存储引擎的稳定性
Sharding JDTX Transaction Manager
Atomikos XA Manager
Narayana XA Manager
Bitronix XA Manager XA Transaction SPI
Servicecomb Manager
Seata Manager
BASE Transaction SPI
New DB_3
核心功能
Features
1
数据分片
2
分布式事务
3
弹性伸缩
4
分布式治理
功能列表
服务治理
• 配置动态化 • 跨机房高可用 • 熔断、禁用、失效转移
数据治理
0
• 权限
2
• 数据脱敏
• 全链路数据压测
• SQL审核
• SQL防火墙
0 1
0
可观察性
3
• APM
• 调用链
• 应用拓扑图
• 监控报警
Bitronix XA Manager
XA Transaction SPI
Servicecomb Manager
Seata Manager
BASE Transaction SPI
两阶段事务模型的得失
分布式
收益
损失
并发性能 可用性 提交阶段失败的处理
柔性事务模型的得失
分布式 并发性能
收益
损失
一致性 & 隔离性 业务侵入
01
分布式存储
数据存储不受单机磁盘容量限制,可通 过增加数据服务器的数量提升存储能力
06
HTAP
混合处理OLTP的事务型操作和OLAP的 分析型操作
02 05
分布式事务
高性能、完全支持ACID原义的分布式事 务引擎
03
弹性伸缩
可以随时随地动态的对数据节点进行扩 容和缩容
04
多数据副本
自动将数据以强一致、高性能的方式复 制至跨机房多副本
时间
标签
核心功能
Features
1
数据分片
2
分布式事务
3
弹性伸缩
4
分布式治理
分布式事务抉择
01
XA
两阶段提交事务的标准
外柔内刚
Saga
源于论文: https:///andru/ cs711/2002fa/reading/sagas.pdf
02
整合分布式事务
Sharding Data Source
本地事务API
Sharding-Transaction
Sharding Transaction Manager
SQL Revert
Sharding XA Transaction Manager
Sharding BASE Transaction Manager
Atomikos XA Manager
Narayana XA Manager
基于Apache ShardingSphere 打造分布式数据库
技术创新,变革未来
目录
CONTENTS
1 分布式数据库核心功能 2 ShardingSphere的实现与规划 3 ShardingSphere的开源与社区
核心功能
计算存储分离
计算节点无状态,可通过水平扩展增加算 力;存储节点可以和计算节点分层优化
新一代事务解决方案
JDTX
分布式 & 1PC
完全摒弃两阶段提交的透明化实现方案
事务原义支持
完全支持ACID的强一致事务
高性能
插入性能高于本地事务 查询性能高于分布式事务
高可用
无中心化架构模型
跨多元数据库
支持RDBMS、NoSQL、MQ等多元资源
开启事务 提交 回滚 更新 查询
LSN生成器
JDTX内部架构 约束校验引擎