SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
网易分布式数据库平台

      王磊@网易杭研院
      王磊@
    wanglei@corp.netease.com
平台简介

•   网易分布式数据库平台(DDB)是一种面向结构化数据存储的通用解
    决方案,基于关系数据库集群解决结构化数据的海量存储和高效访问。

•   设计目标:
    – 海量结构化数据存储(10TB以上)

    – 高并发、低延迟

    – 面向关系数据模型和OLTP

    – 方便应用开发、通用性强

    – 可动态扩展

    – 数据安全可靠

    – 方便维护性

    – 低成本
功能特点

•   基于Sharding的Scale Out

•   支持常用的RDB功能:DDL、DML、全局ID分配等

•   事务支持:节点内、跨节点、跨DDB。

•   多平台和多语言环境下的通用透明的SQL访问接口

•   支持MySQL和Oracle混合使用。

•   支持读写分离和读操作负载均衡

•   支持用户管理和权限控制

•   支持在线扩容

•   命令行和图形化管理工具。
系统架构

  客 户 机(Client)                                              数 据 流

    应用程序                                                     控 制 流
    C/P ython /
   P H P/J a v a/...
                        客 户 机(Client)
                          J a v a程   序

 查 询 服 务 器(Q S)          D D B JD BC        管理服务器               D BA

   QuryServer                D BI             Ma ste r         管理工具




 数 据 库 节 点(D B N)      数 据 库 节 点(D B N)   数 据 库 节 点(D B N)

     M yS Q L/            M yS Q L/          M yS Q L/
      O ra c le            O ra c le          O ra c le
Sharding实现
    Sharding实现

•   均衡字段:用来定位记录所在DBN的表字段。

•   均衡策略:均衡函数、桶、存储映射表。

•   表 --> 均衡策略:多对一


             哈希函数                存储映射表
             均衡函数
              (固 定)       桶
                         哈 希 表    (可 调 整)




    逻 辑I D
    均衡字段值      H                            SD B1N1
                                             N




                                            S NB 2
                                             D N2
                      负载信息
查询处理流程


 SELECT * FROM T                                                 查询结果
 WHERE a = 1                    语   法
 ORDER BY b
 LIMIT 100 OFFSET 1 0 0
                                解   析
                                                                           LIMIT 1 0 0
    存储映射表                                                        LIM IT    OFFSET 1 0 0
                                                                                      发送给后台的
                    T, a=1                                                 查 询 计 划 S Q L 句,可 能
                                                                                         L语
                                计   划                            MERGE
                                                                           ORDER BY b 与 原 语 句 不 同
                                生   成                             SOR T
                   S N1, S N2

                                        SELECT * F R OM T                 SELECT * F R OM T
                                        WHERE a = 1                       WHERE a = 1
                                        ORDER BY b LIMIT 2 0 0            ORDER BY b LIMIT 2 0 0
根 据“存 储 映 射 表”                  计   划
与 查 询 条 件,可 决 定                 执   行                   各后台数据库查询结
相关存储节点                                                  果,按b排 好 序
                                                           b
                                               D B N1
                                               SN 1                             D B N2
                                                                                SN 2
查询处理实现原则

•   选择合适的DBN执行子查询:(表,均衡字段值)--> DBN

•   子查询尽可能并行执行

•   排序操作尽量下推给DBN执行,可以充分利用索引

•   多表查询尽量不拆分子查询,充分利用DBN实现Join

•   消除子查询中的不必要条件,提高子查询的执行效率

•   尽量采用流(游标)的方式处理中间结果
查询处理Cache优化
    查询处理Cache
        Cache优化


•   DBI 中的Cache
        中的Cache
     – Meta Data Cache

     – DBN Connection Pool

     – DBN PreparedStatement Cache

     – SQL Syntax Tree Cache

•   基于MySQL的数据缓存
    基于MySQL 的数据缓存
      MySQL的数据
     – SQL Cache hint

     – 可持久化的Memory Table
分布式事务

• 遵循XA Transaction标准

• 两阶段提交+事务日志,保证ACID

• 悬挂事务处理

• 提高事务处理效率
  – “延迟”启动分支事务

  – 并发执行分支事务

  – 尽量避免两阶段提交,一阶段提交不写日志

  – 尽量避免使用XA连接
读写分离

•   支持对Master和各Slave节点的读操作设置权重

•   限制从延迟过大的Slave上读取数据

•   通过hint指定select语句的数据来源和延迟限制
                                                                           D BI

    – MasterOnly:只在Master上执行(默认)

    – SlaveOnly:只在Slave上执行




                                                                  Write



                                                                                   Read


                                                                                          R e
                                                              d
                                                         R ea
    – SlavePerfer:优先在Slave上执行




                                                                                              ad
    – LoadBalance:根据权重选择节点执行
                                                                          Master

/*LOADBALANCE(TYPE=slaveonly,DELAY=60)*/ select …
                                                    S la ve1                                       S la ve2
全局ID分配
    全局ID
      ID分配

•   问题:
    问题:集群环境下依赖DBN分配的ID会产生冲突

•   挑战:
    挑战:依赖于中心节点分配ID容易造成单点故障和性能瓶颈

•   方案一:
    方案一:中心节点批量分配ID,缓存在DBI

      • 优点:实现简单,执行效率高,可指定起始值。

      • 缺点:分配的ID非全局递增,依然存在单点故障。

• 方案二:
  方案二:基于DBI的本地时间戳+ClientID+计数器构建ID
      • 优点:ID全局递增,ID中包含了时间戳,分配效率高,无单点故障。

      • 缺点:无法从某个指定值开始分配,ID不连续。
管理工具

•   Schema和配置管理
    – DBN, Client,table, policy, trigger, view, routine

•   用户管理

•   系统状态监控和报警管理

•   SQL执行统计分析

•   数据备份

•   系统扩容

•   计划任务
用户和权限管理

•   访问认证
    – 用户名、口令认证和IP地址检查

    – DDB认证+DBN(RDBMS)认证

•   权限管理
    – 区分普通用户和管理员用户

    – 权限粒度控制到表的读、写和授权

    – 用户访问配额控制

    – 管理员权限细分:Schema配置、维护、监控统计、用户管理

    – 管理员操作日志
状态监控

•   DBI状态监视
    DBI状态监视
    – DBN连接池状态,占用连接的线程堆栈

    – 资源使用情况:Connection/Statement/PS

    – 内部操作统计:内部资源创建销毁、Cache命中率、事务操作等

•   DBN状态监控
    DBN状态监控
    – 心跳监视,故障时切换到Standby Node。

    – Session自动监视、统计和报警

    – Slow Log自动监视、统计和报警

    – 复制延迟和异常自动监视报警

•   QueryServer状态监控
    QueryServer状态监控
    – 心跳和负载监控
SQL执行分析——Explain SQL
    SQL执行分析——Explain
       执行分析——
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.                                                 |
+-------------------------------------------------------------------------------------+
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

•   结果汇总统计
     支持条件过滤、排序、分组等基本统计功能
SQL执行统计
SQL执行统计
计划任务

• 大多数管理操作支持命令行方式执行

• 多任务定时执行

• 支持异常处理

• 执行结果通知和报警

• 任务执行日志

• 支持多种模式:DBA、DBI、DBN、SSH
系统扩容

•       技术挑战
                – 降低对线上服务的影响
                – 灵活地扩充资源
                – 降低操作复杂度
                – 保证执行效率
•       实现原理
                                                                   存储映射表
                  存储映射表                                哈 希 表        (可 调 整)      负 载
                                                                                 9+7=1 6
    哈 希 表          (可 调 整)      负 载
                                9+7+7=2 3                  7
                                                       5
        7
                                            数据迁移后
                                                               9
    5                                                                         SN 1
            9                                              7                     负 载
                             SN 1
        7                       负 载                    4                         7+5+4=1 6
    4                           7+5+4+8=2 4                8
        8                                                  7
        7
                                                                              SN 2
                             SN 2                   负载信息                         负 载
                                                                                 8+7=1 5




                                                                              SN 3
可选的扩容方案

• 方案一
  方案一:DBN间数据导出导入
 – 优点:迁移效率较好,实现较简单,灵活性好
 – 缺点:停服时间长,容易导致数据不一致,删除数据的负面影响


• 方案二
  方案二:基于事务的批量数据迁移
 – 优点:不用停服,应用透明,灵活性好
 – 缺点:实现复杂,迁移效率低,对线上访问有一定影响。


• 方案三
  方案三:基于数据复制的扩容
 – 优点:对应用透明,不需停服,效率高,对线上访问基本无影响。
 – 缺点:操作较为复杂,只能实现成倍扩容,灵活性较差。
基于数据复制的扩容
基于复制的DDB扩容



             B
             0
             1
             2
    A        3

    0
    1
    2
    3
             C
             0
             1
             2
             3
平台使用情况

• 目前应用的产品
  – 网易博客
  – 网易微博
  – 网易相册
  – 网易企业邮箱
  – 邮箱网盘和超大附件
  – 网易POPO(即时通信)
  – 社区类游戏

• 存储节点数量 400+
• 总数据量 60TB
面临的问题和挑战

• DBN连接资源限制

• 历史数据处理

• NoSQL + RDB?

• 云存储
  – 扩展的灵活性、自动化和可靠性

  – 访问隔离
小结

• 基于Sharding实现海量数据存储和高并发访问

• 优化查询处理提高执行效率和并发能力

• 支持分布式事务和复杂查询提高平台通用性

• 监控、分析和统计工具帮助开发和DBA发现和解决问题

• 功能丰富的管理工具简化集群系统的运维

Weitere ähnliche Inhalte

Ähnlich wie 网易分布式数据库平台

网易 王磊 网易海量数据存储平台的构建和运维
网易 王磊 网易海量数据存储平台的构建和运维网易 王磊 网易海量数据存储平台的构建和运维
网易 王磊 网易海量数据存储平台的构建和运维colderboy17
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discusseverestsun
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹國昭 張
 
分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocessbabel_qi
 
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010Chuanying Du
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
Hadoop学习总结
Hadoop学习总结Hadoop学习总结
Hadoop学习总结ordinary2012
 
分布式存储与TDDL
分布式存储与TDDL分布式存储与TDDL
分布式存储与TDDLmysqlops
 
Nosql及其主要产品简介
Nosql及其主要产品简介Nosql及其主要产品简介
Nosql及其主要产品简介振林 谭
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性Xuefeng Zhang
 
Ceph Day Beijing: Optimizations on Ceph Cache Tiering
Ceph Day Beijing: Optimizations on Ceph Cache Tiering Ceph Day Beijing: Optimizations on Ceph Cache Tiering
Ceph Day Beijing: Optimizations on Ceph Cache Tiering Ceph Community
 
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践Wensong Zhang
 
百度 刘宁 系统也智慧
百度 刘宁 系统也智慧百度 刘宁 系统也智慧
百度 刘宁 系统也智慧guiyingshenxia
 
百度分布式数据实践与进展
百度分布式数据实践与进展百度分布式数据实践与进展
百度分布式数据实践与进展yp_fangdong
 
openGauss DBMind.pdf
openGauss DBMind.pdfopenGauss DBMind.pdf
openGauss DBMind.pdfwot chin
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 maclean liu
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08drewz lin
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页liu sheng
 

Ähnlich wie 网易分布式数据库平台 (20)

网易 王磊 网易海量数据存储平台的构建和运维
网易 王磊 网易海量数据存储平台的构建和运维网易 王磊 网易海量数据存储平台的构建和运维
网易 王磊 网易海量数据存储平台的构建和运维
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
Hadoop学习总结
Hadoop学习总结Hadoop学习总结
Hadoop学习总结
 
Ibm solid db_基础
Ibm solid db_基础Ibm solid db_基础
Ibm solid db_基础
 
分布式存储与TDDL
分布式存储与TDDL分布式存储与TDDL
分布式存储与TDDL
 
Nosql及其主要产品简介
Nosql及其主要产品简介Nosql及其主要产品简介
Nosql及其主要产品简介
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
 
Ceph Day Beijing: Optimizations on Ceph Cache Tiering
Ceph Day Beijing: Optimizations on Ceph Cache Tiering Ceph Day Beijing: Optimizations on Ceph Cache Tiering
Ceph Day Beijing: Optimizations on Ceph Cache Tiering
 
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践
 
百度 刘宁 系统也智慧
百度 刘宁 系统也智慧百度 刘宁 系统也智慧
百度 刘宁 系统也智慧
 
百度分布式数据实践与进展
百度分布式数据实践与进展百度分布式数据实践与进展
百度分布式数据实践与进展
 
openGauss DBMind.pdf
openGauss DBMind.pdfopenGauss DBMind.pdf
openGauss DBMind.pdf
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
 

Mehr von gettyying

下一代推荐引擎的关键技术及应用案例
下一代推荐引擎的关键技术及应用案例下一代推荐引擎的关键技术及应用案例
下一代推荐引擎的关键技术及应用案例gettyying
 
可视化与可视分析从数据拥有者到数据用户的桥梁
可视化与可视分析从数据拥有者到数据用户的桥梁可视化与可视分析从数据拥有者到数据用户的桥梁
可视化与可视分析从数据拥有者到数据用户的桥梁gettyying
 
可视化技术成就淘宝数据之美
可视化技术成就淘宝数据之美可视化技术成就淘宝数据之美
可视化技术成就淘宝数据之美gettyying
 
Ocean base内部探秘
Ocean base内部探秘Ocean base内部探秘
Ocean base内部探秘gettyying
 
罗立刚 高性能模糊查询内存数据库Ems
罗立刚 高性能模糊查询内存数据库Ems罗立刚 高性能模糊查询内存数据库Ems
罗立刚 高性能模糊查询内存数据库Emsgettyying
 
Mysql基于ssd flashcache实践
Mysql基于ssd flashcache实践Mysql基于ssd flashcache实践
Mysql基于ssd flashcache实践gettyying
 

Mehr von gettyying (6)

下一代推荐引擎的关键技术及应用案例
下一代推荐引擎的关键技术及应用案例下一代推荐引擎的关键技术及应用案例
下一代推荐引擎的关键技术及应用案例
 
可视化与可视分析从数据拥有者到数据用户的桥梁
可视化与可视分析从数据拥有者到数据用户的桥梁可视化与可视分析从数据拥有者到数据用户的桥梁
可视化与可视分析从数据拥有者到数据用户的桥梁
 
可视化技术成就淘宝数据之美
可视化技术成就淘宝数据之美可视化技术成就淘宝数据之美
可视化技术成就淘宝数据之美
 
Ocean base内部探秘
Ocean base内部探秘Ocean base内部探秘
Ocean base内部探秘
 
罗立刚 高性能模糊查询内存数据库Ems
罗立刚 高性能模糊查询内存数据库Ems罗立刚 高性能模糊查询内存数据库Ems
罗立刚 高性能模糊查询内存数据库Ems
 
Mysql基于ssd flashcache实践
Mysql基于ssd flashcache实践Mysql基于ssd flashcache实践
Mysql基于ssd flashcache实践
 

网易分布式数据库平台

  • 1. 网易分布式数据库平台 王磊@网易杭研院 王磊@ wanglei@corp.netease.com
  • 2. 平台简介 • 网易分布式数据库平台(DDB)是一种面向结构化数据存储的通用解 决方案,基于关系数据库集群解决结构化数据的海量存储和高效访问。 • 设计目标: – 海量结构化数据存储(10TB以上) – 高并发、低延迟 – 面向关系数据模型和OLTP – 方便应用开发、通用性强 – 可动态扩展 – 数据安全可靠 – 方便维护性 – 低成本
  • 3. 功能特点 • 基于Sharding的Scale Out • 支持常用的RDB功能:DDL、DML、全局ID分配等 • 事务支持:节点内、跨节点、跨DDB。 • 多平台和多语言环境下的通用透明的SQL访问接口 • 支持MySQL和Oracle混合使用。 • 支持读写分离和读操作负载均衡 • 支持用户管理和权限控制 • 支持在线扩容 • 命令行和图形化管理工具。
  • 4. 系统架构 客 户 机(Client) 数 据 流 应用程序 控 制 流 C/P ython / P H P/J a v a/... 客 户 机(Client) J a v a程 序 查 询 服 务 器(Q S) D D B JD BC 管理服务器 D BA QuryServer D BI Ma ste r 管理工具 数 据 库 节 点(D B N) 数 据 库 节 点(D B N) 数 据 库 节 点(D B N) M yS Q L/ M yS Q L/ M yS Q L/ O ra c le O ra c le O ra c le
  • 5. Sharding实现 Sharding实现 • 均衡字段:用来定位记录所在DBN的表字段。 • 均衡策略:均衡函数、桶、存储映射表。 • 表 --> 均衡策略:多对一 哈希函数 存储映射表 均衡函数 (固 定) 桶 哈 希 表 (可 调 整) 逻 辑I D 均衡字段值 H SD B1N1 N S NB 2 D N2 负载信息
  • 6. 查询处理流程 SELECT * FROM T 查询结果 WHERE a = 1 语 法 ORDER BY b LIMIT 100 OFFSET 1 0 0 解 析 LIMIT 1 0 0 存储映射表 LIM IT OFFSET 1 0 0 发送给后台的 T, a=1 查 询 计 划 S Q L 句,可 能 L语 计 划 MERGE ORDER BY b 与 原 语 句 不 同 生 成 SOR T S N1, S N2 SELECT * F R OM T SELECT * F R OM T WHERE a = 1 WHERE a = 1 ORDER BY b LIMIT 2 0 0 ORDER BY b LIMIT 2 0 0 根 据“存 储 映 射 表” 计 划 与 查 询 条 件,可 决 定 执 行 各后台数据库查询结 相关存储节点 果,按b排 好 序 b D B N1 SN 1 D B N2 SN 2
  • 7. 查询处理实现原则 • 选择合适的DBN执行子查询:(表,均衡字段值)--> DBN • 子查询尽可能并行执行 • 排序操作尽量下推给DBN执行,可以充分利用索引 • 多表查询尽量不拆分子查询,充分利用DBN实现Join • 消除子查询中的不必要条件,提高子查询的执行效率 • 尽量采用流(游标)的方式处理中间结果
  • 8. 查询处理Cache优化 查询处理Cache Cache优化 • DBI 中的Cache 中的Cache – Meta Data Cache – DBN Connection Pool – DBN PreparedStatement Cache – SQL Syntax Tree Cache • 基于MySQL的数据缓存 基于MySQL 的数据缓存 MySQL的数据 – SQL Cache hint – 可持久化的Memory Table
  • 9. 分布式事务 • 遵循XA Transaction标准 • 两阶段提交+事务日志,保证ACID • 悬挂事务处理 • 提高事务处理效率 – “延迟”启动分支事务 – 并发执行分支事务 – 尽量避免两阶段提交,一阶段提交不写日志 – 尽量避免使用XA连接
  • 10. 读写分离 • 支持对Master和各Slave节点的读操作设置权重 • 限制从延迟过大的Slave上读取数据 • 通过hint指定select语句的数据来源和延迟限制 D BI – MasterOnly:只在Master上执行(默认) – SlaveOnly:只在Slave上执行 Write Read R e d R ea – SlavePerfer:优先在Slave上执行 ad – LoadBalance:根据权重选择节点执行 Master /*LOADBALANCE(TYPE=slaveonly,DELAY=60)*/ select … S la ve1 S la ve2
  • 11. 全局ID分配 全局ID ID分配 • 问题: 问题:集群环境下依赖DBN分配的ID会产生冲突 • 挑战: 挑战:依赖于中心节点分配ID容易造成单点故障和性能瓶颈 • 方案一: 方案一:中心节点批量分配ID,缓存在DBI • 优点:实现简单,执行效率高,可指定起始值。 • 缺点:分配的ID非全局递增,依然存在单点故障。 • 方案二: 方案二:基于DBI的本地时间戳+ClientID+计数器构建ID • 优点:ID全局递增,ID中包含了时间戳,分配效率高,无单点故障。 • 缺点:无法从某个指定值开始分配,ID不连续。
  • 12. 管理工具 • Schema和配置管理 – DBN, Client,table, policy, trigger, view, routine • 用户管理 • 系统状态监控和报警管理 • SQL执行统计分析 • 数据备份 • 系统扩容 • 计划任务
  • 13. 用户和权限管理 • 访问认证 – 用户名、口令认证和IP地址检查 – DDB认证+DBN(RDBMS)认证 • 权限管理 – 区分普通用户和管理员用户 – 权限粒度控制到表的读、写和授权 – 用户访问配额控制 – 管理员权限细分:Schema配置、维护、监控统计、用户管理 – 管理员操作日志
  • 14. 状态监控 • DBI状态监视 DBI状态监视 – DBN连接池状态,占用连接的线程堆栈 – 资源使用情况:Connection/Statement/PS – 内部操作统计:内部资源创建销毁、Cache命中率、事务操作等 • DBN状态监控 DBN状态监控 – 心跳监视,故障时切换到Standby Node。 – Session自动监视、统计和报警 – Slow Log自动监视、统计和报警 – 复制延迟和异常自动监视报警 • QueryServer状态监控 QueryServer状态监控 – 心跳和负载监控
  • 15. SQL执行分析——Explain SQL SQL执行分析——Explain 执行分析—— 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. | +-------------------------------------------------------------------------------------+
  • 16. 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 • 结果汇总统计 支持条件过滤、排序、分组等基本统计功能
  • 18. 计划任务 • 大多数管理操作支持命令行方式执行 • 多任务定时执行 • 支持异常处理 • 执行结果通知和报警 • 任务执行日志 • 支持多种模式:DBA、DBI、DBN、SSH
  • 19. 系统扩容 • 技术挑战 – 降低对线上服务的影响 – 灵活地扩充资源 – 降低操作复杂度 – 保证执行效率 • 实现原理 存储映射表 存储映射表 哈 希 表 (可 调 整) 负 载 9+7=1 6 哈 希 表 (可 调 整) 负 载 9+7+7=2 3 7 5 7 数据迁移后 9 5 SN 1 9 7 负 载 SN 1 7 负 载 4 7+5+4=1 6 4 7+5+4+8=2 4 8 8 7 7 SN 2 SN 2 负载信息 负 载 8+7=1 5 SN 3
  • 20. 可选的扩容方案 • 方案一 方案一:DBN间数据导出导入 – 优点:迁移效率较好,实现较简单,灵活性好 – 缺点:停服时间长,容易导致数据不一致,删除数据的负面影响 • 方案二 方案二:基于事务的批量数据迁移 – 优点:不用停服,应用透明,灵活性好 – 缺点:实现复杂,迁移效率低,对线上访问有一定影响。 • 方案三 方案三:基于数据复制的扩容 – 优点:对应用透明,不需停服,效率高,对线上访问基本无影响。 – 缺点:操作较为复杂,只能实现成倍扩容,灵活性较差。
  • 22. 平台使用情况 • 目前应用的产品 – 网易博客 – 网易微博 – 网易相册 – 网易企业邮箱 – 邮箱网盘和超大附件 – 网易POPO(即时通信) – 社区类游戏 • 存储节点数量 400+ • 总数据量 60TB
  • 23. 面临的问题和挑战 • DBN连接资源限制 • 历史数据处理 • NoSQL + RDB? • 云存储 – 扩展的灵活性、自动化和可靠性 – 访问隔离
  • 24. 小结 • 基于Sharding实现海量数据存储和高并发访问 • 优化查询处理提高执行效率和并发能力 • 支持分布式事务和复杂查询提高平台通用性 • 监控、分析和统计工具帮助开发和DBA发现和解决问题 • 功能丰富的管理工具简化集群系统的运维