- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
青云 张雁飞《RandonDb新一代分布式关系型数据库》
展开查看详情
1 . RadonDB 新一代分布式关系型数据库 演讲者/张雁飞
2 .SPEAKER ▶ TokuDB内核维护者、XeLabs核心成员 ▶ 淘宝核心系统/阿里云数据库内核组/青云数据库团队 ▶ 目前在青云从事新一代数据库产品设计与研发工作 @BohuTANG
3 .RadonDB ►可扩展 ►高可用 ►强一致 ►易部署 ►MyNewSQL
4 .Architecture Distributed SQL Nodes (stateless) Storage Radon Radon Radon MySQL Protocol raft raft raft raft raft Storage Storage Storage Nodes Compute Nodes
5 .Distributed SQL ►生成分布式执行计划 ►执行器并行执行 ►orderby/limit/groupby/aggr/join … ►主从模式
6 .Storage Nodes ►存储层由多个 node 组成 Storage Nodes ►每个node 由多副本组成 raft raft Storage raft ►每个副本为一个 MySQL ►不仅存储还有计算能力
7 .副本 ▶ 为什么不是KV? MySQL! ▶ 稳定可靠、多索引写原子保证 ▶ 计算下推,数据就近计算原则 ▶ 不仅存储还有计算能力 ▶ SQL 与 Storage 数据传输最小化 ▶ MySQL 8.0更加强大...
8 .高可用 ►GTID 作为 Raft Log Index VIP VIP ►Raft 协议选主、Log 并行复制 X ►主副本故障秒级切换即可服务 GTID ►强 Semi-Sync 确保事务不丢失 + Raft ►单副本故障可快速流式重建 ►无中心化,可跨机房部署 Raft+MySQL = Raft 选主+GTID 并行复制+强 Semi-Sync 数据强一致、切换零丢 失
9 .数据分布 CREATE TABLE t1(id int, age id) PARTITION BY HASH(id) t1_0000 t1_0001 t1_0002 t1_0029 t1_0030 t1_0031 [0, 127] [128, 255] [256, 383] [3712, 3839] [3840, 3967] [3968, 4095] raft raft ►整张表共 4096 slots ►每个小表 128 slots ►小表均匀分散在 node节点
10 .扩容 ►小表可动态漂移 CREATE TABLE t1(id int, age id) PARTITION BY HASH(id) ►先全量后增量 t1_0000 [0, 127] t1_0001 [128, 255] t1_0002 [256, 383] t1_0029 [3712, 3839] t1_0030 [3840, 3967] t1_0031 [3968, 4095] ►较大/热度高者优先 raft raft raft ►资源分配最优化
11 .分布式事务 ►事务管理 ►事务可靠性 ►Snapshot Isolation 隔离级别
12 .SI隔离级别 ►未提交不可见 ►部分提交不可见
13 .SI检测 ►xelabs/go-jepsen ►1个更新线程,16个扫表线程 ►100多亿次操作和检测 ►随机 kill 存储节点主副本
14 .Radon - Binlog ►Statement + GTID格式 ►可被订阅用于数据同步(计算节点) ►show binlog events [GTID] [limit] ►实时流式获取
15 .OLTP + OLAP ►独立计算节点(Compute Node) ►数据通过 Radon Binlog 进行快速同步 ►SQL 层自动路由复杂查询到计算节点 ►优点: 高并发事务与复杂查询资源隔离 ►缺点: 存储 2 份,目前使用压缩解决
16 .审计日志 ►支持多种审计模式 ►可定位慢查询等
17 .Backup & restore ►xelabs/go-mydumper ►批量并行流式导出 ►批量并行导入
18 .性能 sysbench: 16表, 512线程,随机写,5000万条数据 Transaction Per Response Time(avg) 规格 Second(TPS) 4 存储节点(16C64G超高性能主机) RadonDB sync_binlog=1 (1SQL节点,4 存储节 26,589 20ms innodb_flush_log_at_trx_commit=1 点) RDB(16C64G超高性能主机) 单机 MySQL sync_binlog=1 9,346 73ms (QingCloud RDB) innodb_flush_log_at_trx_commit=1
19 .部署 ►云化部署 ►简单快捷
20 .资源监控 ►CPU ►内存 ►硬盘IOPS/使用率...
21 .监控 ►全链路监控 ►mysql> show processlist; ►mysql> show txnz; ►mysql> show queryz;
22 .展望 ►MyNewSQL 刚刚开始 ►Hybrid Row/Column Data Storage ►RadonDB 即将开源
23 .