网易分布式数据库平台

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

网易分布式数据库平台王磊@网易杭研院wanglei@corp.netease.com平台简介•网易分布式数据库平台(DDB)是一种面向结构化数据的通用存储解决方案,基于关系数据库集群解决结构化数据的海量存储和高效访问。•设计目标:–海量结构化数据存储(10TB以上)–高并发、低延迟–面向关系模型和OLTP–方便应用开发、通用性强–可动态扩展–数据安全可靠–方便维护性–低成本功能特点•基于Sharding的ScaleOut•支持常用的RDB功能:DDL、DML、全局ID分配等•事务支持:节点内、跨节点、跨DDB。•多平台和多语言环境下的通用SQL访问接口。•支持MySQL和Oracle混合使用。•支持读写分离和读操作负载均衡•支持用户管理和权限控制•支持在线扩容•命令行和图形化管理工具。系统架构管理服务器MasterDBA管理工具客户机(Client)Java程序DBI查询服务器(QS)DDBJDBCQuryServer客户机(Client)应用程序C/Python/PHP/Java/...数据库节点(DBN)MySQL/Oracle数据库节点(DBN)MySQL/Oracle数据库节点(DBN)MySQL/Oracle控制流数据流Sharding实现•均衡字段:用来定位记录所在DBN的表字段。•均衡策略:均衡函数、桶、存储映射表。•表--均衡策略:多对一DBN1DBN2均衡字段值均衡函数桶查询处理流程DBN1DBN2查询处理实现原则•选择合适的DBN执行子查询–基于表到DBN的映射关系–基于均衡字段值到DBN的映射关系•排序操作尽量下推给DBN执行,可以充分利用索引•多表查询尽量不拆分子查询,充分利用DBN实现Join•消除子查询中的不必要条件,提高子查询的执行效率•尽量采用流(游标)的方式处理中间结果查询处理Cache优化•DBI中的Cache–MetaDataCache–DBNConnectionPool–DBNPreparedStatementCache–SQLSyntaxTreeCache•基于MySQL的缓存–SQLCachehint–可持久化的MemoryTable分布式事务•遵循XATransaction标准•两阶段提交+事务日志,保证ACID•悬挂事务处理•提高事务处理效率–“延迟”启动分支事务–并发执行分支事务–尽量避免两阶段提交,一阶段提交不写日志–尽量避免使用XA连接读写分离•支持对Master和各Slave节点的读操作设置权重•限制从延迟过大的Slave上读取数据•通过hint指定select语句的读取位置和延迟限制–只在Master上执行(默认)–只在Slave上执行–优先在Slave上执行–根据权重选择节点执行/*LOADBALANCE(TYPE=slaveonly,delay=60)*/select…Slave1MasterSlave2DBIWriteReadReadRead管理工具•Schema和配置管理–DBN,table,policy,trigger,view,routine•用户管理•系统状态监控和报警管理•SQL执行统计分析•数据备份•系统扩容•计划任务用户和权限管理•访问认证–用户名、口令认证和IP地址检查–DDB认证+DBN(RDBMS)认证•权限管理–区分普通用户和管理员用户–权限粒度控制到表的读、写和授权–用户访问配额控制–管理员权限细分:Schema配置、维护、监控统计、用户管理–管理员操作日志状态监控•DBI状态监视–DBN连接池状态,占用连接的线程堆栈–资源使用情况:Connection/Statement/PS–内部操作统计:内部资源创建销毁、Cache命中率、事务操作等•DBN状态监控–心跳监视,故障时切换到StandbyNode。–Session自动监视、统计和报警–SlowLog自动监视、统计和报警–复制延迟和异常自动监视报警•QueryServer状态监控–心跳和负载监控SQL执行分析——ExplainSQLisql@dbiexplainselectdocidfromFS_Fileorderbyiddesclimit10;+-------------------------------------------------------------------------------------+|PLAN|+-------------------------------------------------------------------------------------+|LIMIT/OFFSET||/\||/||\||||||PROJECT||Projectrecordto:docid,||/\||/||\||||||MERGE-SELECT||SQL:SELECTdocid,idFROMFS_FileORDERBYidDESCLIMIT10||DestNode:||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]||Orderby:idDESC,withmergesort.|+-------------------------------------------------------------------------------------+SQL执行统计•SQL执行统计–计算SQL签名select*fromTwherea=?Andb=#–DDBSQL执行情况收集tables,dbns,clients,count,time,avg_time,mysql_count,mysql_time,dbn_count,rows–MySQLSQL执行情况收集handler_read_first,handler_read_key,hander_read_next,handler_read_rnd,hander_read_next,explain–执行情况统计支持条件过滤、排序、分组等基本统计功能SQL执行统计系统扩容•技术挑战–降低对线上服务的影响–灵活地扩充资源–降低操作复杂度–保证执行效率•实现原理SN1SN2哈希表存储映射表(可调整)7597487负载9+7+7=23负载7+5+4+8=24SN3SN1SN2哈希表存储映射表(可调整)7597487负载信息负载9+7=16负载7+5+4=16负载8+7=15数据迁移后可选的扩容方案•方案一:DBN间数据导出导入–优点:迁移效率较好,实现较简单,灵活性好–缺点:停服时间长,容易导致数据不一致,删除数据的负面影响•方案二:基于事务的批量数据迁移–优点:不用停服,应用透明,灵活性好–缺点:实现复杂,迁移效率低,对线上访问有一定影响。•方案三:基于数据复制的扩容–优点:对应用透明,不需停服,效率高,对线上访问基本无影响。–缺点:操作较为复杂,只能实现成倍扩容,灵活性较差。基于复制的DDB扩容012301230123基于数据复制的扩容执行无法解析的复杂语句?•目前不支持的语句类型:–Union,嵌套查询,无关联条件的多表查询等•某些情况下可以直接发送到DBN执行–只涉及单个DBN的单表查询select*fromT1wherea=1orderbyb;–涉及多个DBN,但无排序和分组的单表查询select*fromT1wherea1;–多表查询在保证有均衡字段等值连接条件的情况下也试用上述原则selectT1.c,T2.dfromT1,T2whereT1.a=T2.aandT1.a=1orderbyT2.b;selectT1.c,T2.dfromT1,T2whereT1.a=T2.aandT1.a1.;执行无法解析的复杂语句?•不做解析的情况下如何执行语句?–人工设计执行计划和保证逻辑正确性–通过hint告知执行计划给执行器–执行器根据hint中提供的表名和均衡字段值分发语句到合适的DBN–执行器根据执行计划处理各DBN返回的结果(归并/排序分组/LimitOffset)示例:/*FORWARDBY(TABLENAME=T1,T2;BFVALUE=1,2)*/select*fromT1,T2whereT1.id=T2.idandT1.idin(1,2)andT1.score90;全局ID分配•问题:依赖DBN分配的ID会产生冲突•挑战:依赖于中心节点分配ID容易造成单点故障和性能瓶颈•方案一:中心节点批量分配ID•优点:实现简单,执行效率高,可指定起始值。•缺点:分配的ID非全局递增,依然存在单点故障。•方案二:基于时间戳的分布式ID分配基于DBI的本地时间戳+DBI_ID+计数器,DBI与管理服务器保持时间同步。•优点:ID全局递增,ID中包含了时间信息,分配效率高,无单点故障。•缺点:无法指定从较小的值开始分配,ID不连续。小结•基于Sharding实现海量数据存储和高并发访问•优化查询处理提高执行效率和并发能力•支持分布式事务和复杂查询提高平台通用性•监控、分析和统计工具帮助开发和DBA发现和解决问题•功能丰富的管理工具简化集群系统的运维面临的问题和挑战•DBN连接资源限制•历史数据处理•K-V+RDB?•云存储–扩展的灵活性和自动化–访问隔离感谢您的关注!Q&A

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功