1 / 25

网易分布式数据库平台

网易分布式数据库平台. 王磊@网易杭研院. wanglei@corp.netease.com. 平台简介. 网易分布式数据库平台(DDB)是一种 面向结构化 数据的 通用 存储解决方案, 基于关系数据库集群解决结构化数据的海量存储和高效访问。 设计目标: 海量结构化数据存储(10TB以上) 高并发 、低延迟 面向关系模型和OLTP 方便应用开发、通用性强 可 动态 扩展 数据安全 可靠 方便 维护性 低成本. 功能特点. 基于 Sharding 的 Scale Out 支持常用的 RDB 功能:DDL、DML、全局ID分配等

blythe
Download Presentation

网易分布式数据库平台

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 网易分布式数据库平台 王磊@网易杭研院 wanglei@corp.netease.com

  2. 平台简介 • 网易分布式数据库平台(DDB)是一种面向结构化数据的通用存储解决方案,基于关系数据库集群解决结构化数据的海量存储和高效访问。 • 设计目标: • 海量结构化数据存储(10TB以上) • 高并发、低延迟 • 面向关系模型和OLTP • 方便应用开发、通用性强 • 可动态扩展 • 数据安全可靠 • 方便维护性 • 低成本

  3. 功能特点 • 基于Sharding的Scale Out • 支持常用的RDB功能:DDL、DML、全局ID分配等 • 事务支持:节点内、跨节点、跨DDB。 • 多平台和多语言环境下的通用SQL访问接口。 • 支持MySQL和Oracle混合使用。 • 支持读写分离和读操作负载均衡 • 支持用户管理和权限控制 • 支持在线扩容 • 命令行和图形化管理工具。

  4. 系统架构

  5. Sharding实现 • 均衡字段:用来定位记录所在DBN的表字段。 • 均衡策略:均衡函数、桶、存储映射表。 • 表 --> 均衡策略:多对一

  6. 查询处理流程

  7. 查询处理实现原则 • 选择合适的DBN执行子查询 • 基于表到DBN的映射关系 • 基于均衡字段值到DBN的映射关系 • 排序操作尽量下推给DBN执行,可以充分利用索引 • 多表查询尽量不拆分子查询,充分利用DBN实现Join • 消除子查询中的不必要条件,提高子查询的执行效率 • 尽量采用流(游标)的方式处理中间结果

  8. 查询处理Cache优化 • DBI 中的Cache • Meta Data Cache • DBN Connection Pool • DBN PreparedStatement Cache • SQL Syntax Tree Cache • 基于MySQL的缓存 • SQL Cache hint • 可持久化的Memory Table

  9. 分布式事务 • 遵循XA Transaction标准 • 两阶段提交+事务日志,保证ACID • 悬挂事务处理 • 提高事务处理效率 • “延迟”启动分支事务 • 并发执行分支事务 • 尽量避免两阶段提交,一阶段提交不写日志 • 尽量避免使用XA连接

  10. 读写分离 • 支持对Master和各Slave节点的读操作设置权重 • 限制从延迟过大的Slave上读取数据 • 通过hint指定select语句的读取位置和延迟限制 • 只在Master上执行(默认) • 只在Slave上执行 • 优先在Slave上执行 • 根据权重选择节点执行 /*LOADBALANCE(TYPE=slaveonly,delay=60)*/ select …

  11. 管理工具 • Schema和配置管理 • DBN, table, policy, trigger, view, routine • 用户管理 • 系统状态监控和报警管理 • SQL执行统计分析 • 数据备份 • 系统扩容 • 计划任务

  12. 用户和权限管理 • 访问认证 • 用户名、口令认证和IP地址检查 • DDB认证+DBN(RDBMS)认证 • 权限管理 • 区分普通用户和管理员用户 • 权限粒度控制到表的读、写和授权 • 用户访问配额控制 • 管理员权限细分:Schema配置、维护、监控统计、用户管理 • 管理员操作日志

  13. 状态监控 • DBI状态监视 • DBN连接池状态,占用连接的线程堆栈 • 资源使用情况:Connection/Statement/PS • 内部操作统计:内部资源创建销毁、Cache命中率、事务操作等 • DBN状态监控 • 心跳监视,故障时切换到Standby Node。 • Session自动监视、统计和报警 • Slow Log自动监视、统计和报警 • 复制延迟和异常自动监视报警 • QueryServer状态监控 • 心跳和负载监控

  14. SQL执行分析——Explain SQL isql@dbi>> explain select docid from FS_File order by id desc limit 10; +-------------------------------------------------------------------------------------+ | PLAN | +-------------------------------------------------------------------------------------+ | LIMIT/OFFSET | | /\ | | /||\ | | || | | PROJECT | | Project record to: docid, | | /\ | | /||\ | | || | | MERGE-SELECT | | SQL: SELECT docid, id FROM FS_File ORDER BY id DESC LIMIT 10 | | Dest Node: | | db-17-1[jdbc:mysql://172.17.2.48:4331/filestation] | | db-17-2[jdbc:mysql://172.17.2.48:4332/filestation] | | db-16-2[jdbc:mysql://172.17.2.47:4332/filestation] | | db-16-1[jdbc:mysql://172.17.2.47:4331/filestation] | | Order by: id DESC, with merge sort. | +-------------------------------------------------------------------------------------+

  15. SQL执行统计 • SQL执行统计 • 计算SQL签名 select * from T where a=?And b=# • DDB SQL执行情况收集 tables, dbns, clients, count,time, avg_time, mysql_count,mysql_time, dbn_count, rows • MySQL SQL执行情况收集 handler_read_first, handler_read_key, hander_read_next, handler_read_rnd, hander_read_next, explain • 执行情况统计 支持条件过滤、排序、分组等基本统计功能

  16. SQL执行统计

  17. 系统扩容 • 技术挑战 • 降低对线上服务的影响 • 灵活地扩充资源 • 降低操作复杂度 • 保证执行效率 • 实现原理

  18. 可选的扩容方案 • 方案一:DBN间数据导出导入 • 优点:迁移效率较好,实现较简单,灵活性好 • 缺点:停服时间长,容易导致数据不一致,删除数据的负面影响 • 方案二:基于事务的批量数据迁移 • 优点:不用停服,应用透明,灵活性好 • 缺点:实现复杂,迁移效率低,对线上访问有一定影响。 • 方案三:基于数据复制的扩容 • 优点:对应用透明,不需停服,效率高,对线上访问基本无影响。 • 缺点:操作较为复杂,只能实现成倍扩容,灵活性较差。

  19. 基于数据复制的扩容 基于复制的DDB扩容

  20. 执行无法解析的复杂语句? • 目前不支持的语句类型: • Union,嵌套查询,无关联条件的多表查询等 • 某些情况下可以直接发送到DBN执行 • 只涉及单个DBN的单表查询 select * from T1 where a=1 order by b; • 涉及多个DBN,但无排序和分组的单表查询 select * from T1 where a>1; • 多表查询在保证有均衡字段等值连接条件的情况下也试用上述原则 select T1.c, T2.d from T1,T2 where T1.a=T2.a and T1.a=1 order by T2.b; select T1.c, T2.d from T1,T2 where T1.a=T2.a and T1.a>1.;

  21. 执行无法解析的复杂语句? • 不做解析的情况下如何执行语句? • 人工设计执行计划和保证逻辑正确性 • 通过hint告知执行计划给执行器 • 执行器根据hint中提供的表名和均衡字段值分发语句到合适的DBN • 执行器根据执行计划处理各DBN返回的结果(归并/排序分组/Limit Offset) 示例: /* FORWARDBY(TABLENAME=T1, T2; BFVALUE=1,2)*/ select * from T1, T2 where T1.id = T2.id and T1.id in (1,2) and T1.score > 90;

  22. 全局ID分配 • 问题:依赖DBN分配的ID会产生冲突 • 挑战:依赖于中心节点分配ID容易造成单点故障和性能瓶颈 • 方案一:中心节点批量分配ID • 优点:实现简单,执行效率高,可指定起始值。 • 缺点:分配的ID非全局递增,依然存在单点故障。 • 方案二:基于时间戳的分布式ID分配 基于DBI的本地时间戳+DBI_ID+计数器,DBI与管理服务器保持时间同步。 • 优点:ID全局递增,ID中包含了时间信息,分配效率高,无单点故障。 • 缺点:无法指定从较小的值开始分配,ID不连续。

  23. 小结 • 基于Sharding实现海量数据存储和高并发访问 • 优化查询处理提高执行效率和并发能力 • 支持分布式事务和复杂查询提高平台通用性 • 监控、分析和统计工具帮助开发和DBA发现和解决问题 • 功能丰富的管理工具简化集群系统的运维

  24. 面临的问题和挑战 • DBN连接资源限制 • 历史数据处理 • K-V + RDB? • 云存储 • 扩展的灵活性和自动化 • 访问隔离

  25. 感谢您的关注!Q&A

More Related