SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
网易海量数据存储平台的构建和运维

          王磊@网易杭研院
        wanglei@corp.netease.com
互联网应用的数据存储需求

• 海量存储空间
• 高效的数据访问:高并发、低延迟
• 高可扩展性
• 高可用性:7x24
• 安全性和可靠性
• 功能和接口丰富、简单易用
• 有效应对系统(数据、模式、环境)变更和升级
• 易维护:管理便捷,自动化程度高
• 控制成本
网易海量数据存储平台简介

•设计目标:
   为博客、相册、邮箱、网盘、IM等各类大型互联网应
 用提供一种通用的用户数据存储和管理解决方案。


•实现方案:分布式数据库+分布式文件系统
–分布式数据库(DDB):基于关系数据库集群解决结构
 化数据的海量存储和高效访问。
–分布式文件系统(DFS):以文件为存储单位的非结构化
 数据分布式存储解决方案。
DDB的功能特点

• 基于Sharding的Scale Out。
• 多平台和多语言环境下的通用SQL访问接口。
• 支持常用的RDBMS功能:
  – DDL:支持大多数语句,union和嵌套查询除外
  – DML:表、视图、存储过程、触发器等
  – 用户管理和权限控制
  – 全局ID分配
• 事务支持:节点内、跨节点、跨DDB。
• 支持MySQL和Oracle混合使用。
• 命令行和图形化管理工具。
DDB系统架构

   客户机(Client)                                数据流

     应用程序                                     控制流
     C/Python/
    PHP/Java/...
                   客户机(Client)
                     Java程序

   查询服务器(QS)        DDB JDBC      管理服务器        DBA

    QuryServer        DBI           Master     管理工具




   数据库节点(DBN)      数据库节点(DBN)    数据库节点(DBN)

      MySQL/        MySQL/         MySQL/
       Oracle        Oracle         Oracle
DDB Sharding实现原理

表(记录)、均衡字段、桶、DBN


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




  逻辑ID
  均衡字段    H                        SN 1
                                    DBN1




                                   SN 2
                                    DBN2
                 负载信息
需要解决的问题

• 优化访问性能
• 安全性问题
• 监控和故障处理
• 系统更新和升级
• 系统扩容
DDB访问性能优化——系统设计优化

• 去中心化,Client通过DBI直接访问DBN
• DBI Cache
  –Meta Data Cache
  –DBN Connection Pool
  –DBN PreparedStatement Cache
  –SQL Syntax Tree Cache
• 优化排序操作:Merge Sort优先
• 支持游标
• 基于Master-Slave的读写分离和读负载均衡
DDB访问性能优化——开发DBA

• 优化索引和SQL
• 尽量使用绑定变量(PreparedStatement)
• 尽量控制事务范围和执行时间
• 避免limit或offset值过大
• 获取大结果集时使用游标
• 为表选择合适的均衡策略(均衡字段、均衡函数、桶到
  DBN的映射)
• 查询条件中尽量使用均衡字段等值条件
• 开销大的查询在Slave节点执行
访问异常排除和性能优化——工具支持

• SQL Explain:分析DDB 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

• DBI资源状态监视
  – DBN连接池状态,占用连接的线程堆栈
  – 资源对象:Connection/Statement/PreparedStatement
DDB系统安全

• 访问认证
 – 用户名、口令认证和IP地址检查
 – DDB认证+DBN(RDBMS)认证

• 权限管理
 – 区分普通用户和管理员用户
 – 权限控制粒度:用户对表的读、写和授权
 – 用户访问配额控制
 – 管理员权限细分:Schema配置、维护、监控统计、用户管理
 – 管理员操作日志

• 其他:
 – 口令加密传输和保存
 – 只允许内网访问
DDB状态监视和故障处理

• DBN状态监视:By Master
  – 心跳监视和报警,故障时切换到Standby Node。
  – Session自动监视、统计和报警
  – Slow Log自动监视、统计和报警
  – 复制延迟和异常自动监视和报警
• Query Server监视:By Master
  – 心跳监视和报警,动态调整和广播可用的QueryServer列表。
  – 负载监视,动态调整和广播可用的QueryServer访问权值。
• Master监视:By Monitor or Zookeeper
  – 采用主从模式,故障时自动切换
  – Meta Data复制
应对系统变更和升级
• 系统变更:
 产品升级、硬件升级、系统软件升级、DDB版本升级

• 技术挑战:
 降低影响、避免误操作、时间可控、自动化、可回退
• 应对策略
 – 硬件和系统软件升级:主备切换,逐步替换
 – 测试环境 -> 线上环境:正确性验证和实施时间评估
 – 管理操作支持命令行方式执行,降低重复操作中的误操作
 – 计划任务:支持多任务、多模式、异常处理、详细日志和执行结果通知
 – 数据备份:Mirror + backup(snapshot) + Binlog
 – DDB版本升级:Master和DBI升级,通信协议向下兼容
DDB扩容(1)

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



                                                                       SN 3
DDB扩容(2)

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

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

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

• 面向海量的非结构化用户数据存取
• 支持大量的高并发数据操作
• 支持动态扩展,存储量和处理能力线性增加。
• 高可靠性,避免数据丢失和单点故障
• 负载均衡,可控性好
• 存储成本可控
DFS的功能特点

• 数据访问去中心化
 – 文件读取和写入不经过中心节点,提高访问效率
 – 通过ID(64bit)标识和定位文件
 – 文件元信息:不支持目录、文件名、权限信息,支持SIZE,UpdateTime,MD5。

• 访问接口:
 – 不支持POSIX文件接口
 – 面向Java/C++的API:read,insert,delete,append,update等
 – HTTP文件读取接口
• 支持多副本
• 支持数据在集群中复制和迁移
• 支持文件级别的数据去重
• 定制硬件降低成本
DFS系统架构
数据定位——ID到文件地址的映射


  ID        BucketID (16bit)      Level1 (12bit)   Level1 (12bit)   Level3 (12bit) Filename(12bit)




            文档分配表
       Bucket 1
                           SN 1
       Bucket 2
                           SN 2
       Bucket 3
                           SN 3
       Bucket 4
                           ……
        ……




                               SN
                               RootDir/Level1/Level2/Level3/Filename
多副本管理

• 以Bucket为单位进行配置和管理
• 将Bucket映射到不同SN的不同磁盘上
• FSI负责多副本的同步写
• FSI和前端机随机挑选副本读取数据


• SN故障处理:
 1.MDS检查到SN心跳失效
 2.MDS通知所有FSI和前端机停止对故障SN的访问
 3.MDS通知其他副本所在SN将桶数据复制到空闲SN上
 4.MDS修改数据映射表
数据复制和迁移

• 应用场景:
 –SN异常恢复,恢复或增加副本
 –SN系统软硬件更换或升级,服务器搬迁
 –跨数据中心数据灾备
 –均衡负载
• 实现策略:
 –以桶为单位进行复制和迁移。
 –源SN上记录操作日志
 –将源SN上的桶数据拷贝到目标SN后通过redo操作日志来保证源
  和目标SN的同步。
 –完成最后的数据同步瞬间源SN设为只读。
DFS定制存储服务器

• 定制存储服务器
 – 配备桌面级SATA硬盘 24x2T
 – 电源管理功管理磁盘上下电状态
• DFS对定制服务器的支持
 – 通过多副本减少磁盘故障的影响。
 – 控制SN的读写。
 – 对只读或只有少量写操作的多副本磁盘组轮流上下电,通过定期
   Redo操作日志保证数据一致。
• 带来的好处:
 – 降低硬件采购的成本
 – 降低功耗
 – 延长磁盘寿命
总结

• DDB在保持了RDBMS的特性和功能的基础上支持高吞吐、
  高可用、高扩展,适合传统的基于RDBMS的应用开发。
• DFS在DDB的基础上提供大对象存储,提供了更好的扩展性
  。
• DDB弥补了DFS在元数据管理方面的不足。
• DDB与DFS的结合可以满足大多数互联网应用的快速开发要
  求。
• 基于廉价服务器的分布式解决方案降低了存储系统的成本。
• 功能强大的管理工具弥补分布式集群带来的管理复杂性。
存储平台应用情况

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

• DDB存储节点数量 400+
• DDB总数据量 60TB
• DFS存储节点数量 1200+
• DFS总数据量 4PB
感谢您的关注!

  Q&A

Mais conteúdo relacionado

Mais procurados

Mr&ueh数据库方面
Mr&ueh数据库方面Mr&ueh数据库方面
Mr&ueh数据库方面Tianwei Liu
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹國昭 張
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例maclean liu
 
低功耗服务器定制与绿色计算
低功耗服务器定制与绿色计算低功耗服务器定制与绿色计算
低功耗服务器定制与绿色计算Wensong Zhang
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 
腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化topgeek
 
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队煜林 车
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Shaoning Pan
 
阿里巴巴 林钰 网站存储经验谈
阿里巴巴 林钰 网站存储经验谈阿里巴巴 林钰 网站存储经验谈
阿里巴巴 林钰 网站存储经验谈guiyingshenxia
 
丁原:海量数据迁移方案
丁原:海量数据迁移方案丁原:海量数据迁移方案
丁原:海量数据迁移方案YANGL *
 
Memcached浅析 韩建华
Memcached浅析 韩建华Memcached浅析 韩建华
Memcached浅析 韩建华youzitang
 
Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇小新 制造
 

Mais procurados (17)

Mr&ueh数据库方面
Mr&ueh数据库方面Mr&ueh数据库方面
Mr&ueh数据库方面
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例
 
Mongo db 特性
Mongo db 特性Mongo db 特性
Mongo db 特性
 
低功耗服务器定制与绿色计算
低功耗服务器定制与绿色计算低功耗服务器定制与绿色计算
低功耗服务器定制与绿色计算
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 
Ibm solid db_基础
Ibm solid db_基础Ibm solid db_基础
Ibm solid db_基础
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
Level db
Level dbLevel db
Level db
 
腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化
 
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照
 
阿里巴巴 林钰 网站存储经验谈
阿里巴巴 林钰 网站存储经验谈阿里巴巴 林钰 网站存储经验谈
阿里巴巴 林钰 网站存储经验谈
 
丁原:海量数据迁移方案
丁原:海量数据迁移方案丁原:海量数据迁移方案
丁原:海量数据迁移方案
 
Memcached浅析 韩建华
Memcached浅析 韩建华Memcached浅析 韩建华
Memcached浅析 韩建华
 
Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇
 
Hic2011
Hic2011Hic2011
Hic2011
 

Destaque

Greenplum技术
Greenplum技术Greenplum技术
Greenplum技术锐 张
 
服务器端性能优化 提升Qps、rt
服务器端性能优化 提升Qps、rt服务器端性能优化 提升Qps、rt
服务器端性能优化 提升Qps、rt锐 张
 
Redis学习笔记
Redis学习笔记Redis学习笔记
Redis学习笔记锐 张
 
Redis介绍
Redis介绍Redis介绍
Redis介绍锐 张
 
07 丛磊
07 丛磊07 丛磊
07 丛磊锐 张
 
亚马逊云计算Aws
亚马逊云计算Aws亚马逊云计算Aws
亚马逊云计算Aws锐 张
 
人人网互联网产品易用性、Ue设计培训
人人网互联网产品易用性、Ue设计培训人人网互联网产品易用性、Ue设计培训
人人网互联网产品易用性、Ue设计培训锐 张
 
Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄锐 张
 

Destaque (8)

Greenplum技术
Greenplum技术Greenplum技术
Greenplum技术
 
服务器端性能优化 提升Qps、rt
服务器端性能优化 提升Qps、rt服务器端性能优化 提升Qps、rt
服务器端性能优化 提升Qps、rt
 
Redis学习笔记
Redis学习笔记Redis学习笔记
Redis学习笔记
 
Redis介绍
Redis介绍Redis介绍
Redis介绍
 
07 丛磊
07 丛磊07 丛磊
07 丛磊
 
亚马逊云计算Aws
亚马逊云计算Aws亚马逊云计算Aws
亚马逊云计算Aws
 
人人网互联网产品易用性、Ue设计培训
人人网互联网产品易用性、Ue设计培训人人网互联网产品易用性、Ue设计培训
人人网互联网产品易用性、Ue设计培训
 
Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄
 

Semelhante a 网易海量数据存储平台的构建和运维

NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析iammutex
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践锐 张
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践jackbillow
 
分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocessbabel_qi
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...acelyc1112009
 
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践Wensong Zhang
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discusseverestsun
 
新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum锐 张
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性Xuefeng Zhang
 
Track1dongsiying4
Track1dongsiying4Track1dongsiying4
Track1dongsiying4drewz lin
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3redhat9
 
网站存储经验谈pdf
网站存储经验谈pdf网站存储经验谈pdf
网站存储经验谈pdfYu Lin
 
网站存储经验谈-pdf
网站存储经验谈-pdf网站存储经验谈-pdf
网站存储经验谈-pdfYu Lin
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开YANGL *
 
敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1drewz lin
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲84zhu
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结redhat9
 

Semelhante a 网易海量数据存储平台的构建和运维 (20)

NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
 
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
 
新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
 
Track1dongsiying4
Track1dongsiying4Track1dongsiying4
Track1dongsiying4
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3
 
网站存储经验谈pdf
网站存储经验谈pdf网站存储经验谈pdf
网站存储经验谈pdf
 
网站存储经验谈-pdf
网站存储经验谈-pdf网站存储经验谈-pdf
网站存储经验谈-pdf
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开
 
Zabbix in PPTV
Zabbix in PPTVZabbix in PPTV
Zabbix in PPTV
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 
敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结
 

Mais de 锐 张

长尾理论(The longtail)版
长尾理论(The longtail)版长尾理论(The longtail)版
长尾理论(The longtail)版锐 张
 
Openstack starter-guide-diablo
Openstack starter-guide-diabloOpenstack starter-guide-diablo
Openstack starter-guide-diablo锐 张
 
Redis中文入门手册
Redis中文入门手册Redis中文入门手册
Redis中文入门手册锐 张
 
Redis内存存储结构分析
Redis内存存储结构分析Redis内存存储结构分析
Redis内存存储结构分析锐 张
 
淘宝前端优化
淘宝前端优化淘宝前端优化
淘宝前端优化锐 张
 
Sun jdk 1.6内存管理 -实现篇 -毕玄
Sun jdk 1.6内存管理 -实现篇 -毕玄Sun jdk 1.6内存管理 -实现篇 -毕玄
Sun jdk 1.6内存管理 -实现篇 -毕玄锐 张
 
Sun jdk 1.6内存管理 -调优篇-毕玄
Sun jdk 1.6内存管理 -调优篇-毕玄Sun jdk 1.6内存管理 -调优篇-毕玄
Sun jdk 1.6内存管理 -调优篇-毕玄锐 张
 
Sun jdk-1.6-gc
Sun jdk-1.6-gcSun jdk-1.6-gc
Sun jdk-1.6-gc锐 张
 
Redis深入浅出
Redis深入浅出Redis深入浅出
Redis深入浅出锐 张
 
Green plum培训材料
Green plum培训材料Green plum培训材料
Green plum培训材料锐 张
 
新浪云计算公开课第二期:Sae平台的灵活应用(吕毅、魏世江)
新浪云计算公开课第二期:Sae平台的灵活应用(吕毅、魏世江)新浪云计算公开课第二期:Sae平台的灵活应用(吕毅、魏世江)
新浪云计算公开课第二期:Sae平台的灵活应用(吕毅、魏世江)锐 张
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)锐 张
 
Lamp高性能设计
Lamp高性能设计Lamp高性能设计
Lamp高性能设计锐 张
 
20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统锐 张
 
09 赵昆
09 赵昆09 赵昆
09 赵昆锐 张
 
05 杨志丰
05 杨志丰05 杨志丰
05 杨志丰锐 张
 
C2c网站运营ppt
C2c网站运营pptC2c网站运营ppt
C2c网站运营ppt锐 张
 
Big pipe backend2
Big pipe backend2Big pipe backend2
Big pipe backend2锐 张
 
数据成就互联网的可能 用技术撬动Roi-好耶
数据成就互联网的可能 用技术撬动Roi-好耶数据成就互联网的可能 用技术撬动Roi-好耶
数据成就互联网的可能 用技术撬动Roi-好耶锐 张
 

Mais de 锐 张 (19)

长尾理论(The longtail)版
长尾理论(The longtail)版长尾理论(The longtail)版
长尾理论(The longtail)版
 
Openstack starter-guide-diablo
Openstack starter-guide-diabloOpenstack starter-guide-diablo
Openstack starter-guide-diablo
 
Redis中文入门手册
Redis中文入门手册Redis中文入门手册
Redis中文入门手册
 
Redis内存存储结构分析
Redis内存存储结构分析Redis内存存储结构分析
Redis内存存储结构分析
 
淘宝前端优化
淘宝前端优化淘宝前端优化
淘宝前端优化
 
Sun jdk 1.6内存管理 -实现篇 -毕玄
Sun jdk 1.6内存管理 -实现篇 -毕玄Sun jdk 1.6内存管理 -实现篇 -毕玄
Sun jdk 1.6内存管理 -实现篇 -毕玄
 
Sun jdk 1.6内存管理 -调优篇-毕玄
Sun jdk 1.6内存管理 -调优篇-毕玄Sun jdk 1.6内存管理 -调优篇-毕玄
Sun jdk 1.6内存管理 -调优篇-毕玄
 
Sun jdk-1.6-gc
Sun jdk-1.6-gcSun jdk-1.6-gc
Sun jdk-1.6-gc
 
Redis深入浅出
Redis深入浅出Redis深入浅出
Redis深入浅出
 
Green plum培训材料
Green plum培训材料Green plum培训材料
Green plum培训材料
 
新浪云计算公开课第二期:Sae平台的灵活应用(吕毅、魏世江)
新浪云计算公开课第二期:Sae平台的灵活应用(吕毅、魏世江)新浪云计算公开课第二期:Sae平台的灵活应用(吕毅、魏世江)
新浪云计算公开课第二期:Sae平台的灵活应用(吕毅、魏世江)
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
 
Lamp高性能设计
Lamp高性能设计Lamp高性能设计
Lamp高性能设计
 
20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统
 
09 赵昆
09 赵昆09 赵昆
09 赵昆
 
05 杨志丰
05 杨志丰05 杨志丰
05 杨志丰
 
C2c网站运营ppt
C2c网站运营pptC2c网站运营ppt
C2c网站运营ppt
 
Big pipe backend2
Big pipe backend2Big pipe backend2
Big pipe backend2
 
数据成就互联网的可能 用技术撬动Roi-好耶
数据成就互联网的可能 用技术撬动Roi-好耶数据成就互联网的可能 用技术撬动Roi-好耶
数据成就互联网的可能 用技术撬动Roi-好耶
 

网易海量数据存储平台的构建和运维

  • 1. 网易海量数据存储平台的构建和运维 王磊@网易杭研院 wanglei@corp.netease.com
  • 2. 互联网应用的数据存储需求 • 海量存储空间 • 高效的数据访问:高并发、低延迟 • 高可扩展性 • 高可用性:7x24 • 安全性和可靠性 • 功能和接口丰富、简单易用 • 有效应对系统(数据、模式、环境)变更和升级 • 易维护:管理便捷,自动化程度高 • 控制成本
  • 3. 网易海量数据存储平台简介 •设计目标: 为博客、相册、邮箱、网盘、IM等各类大型互联网应 用提供一种通用的用户数据存储和管理解决方案。 •实现方案:分布式数据库+分布式文件系统 –分布式数据库(DDB):基于关系数据库集群解决结构 化数据的海量存储和高效访问。 –分布式文件系统(DFS):以文件为存储单位的非结构化 数据分布式存储解决方案。
  • 4. DDB的功能特点 • 基于Sharding的Scale Out。 • 多平台和多语言环境下的通用SQL访问接口。 • 支持常用的RDBMS功能: – DDL:支持大多数语句,union和嵌套查询除外 – DML:表、视图、存储过程、触发器等 – 用户管理和权限控制 – 全局ID分配 • 事务支持:节点内、跨节点、跨DDB。 • 支持MySQL和Oracle混合使用。 • 命令行和图形化管理工具。
  • 5. DDB系统架构 客户机(Client) 数据流 应用程序 控制流 C/Python/ PHP/Java/... 客户机(Client) Java程序 查询服务器(QS) DDB JDBC 管理服务器 DBA QuryServer DBI Master 管理工具 数据库节点(DBN) 数据库节点(DBN) 数据库节点(DBN) MySQL/ MySQL/ MySQL/ Oracle Oracle Oracle
  • 6. DDB Sharding实现原理 表(记录)、均衡字段、桶、DBN 哈希函数 存储映射表 (固定) 哈希表 (可调整) 逻辑ID 均衡字段 H SN 1 DBN1 SN 2 DBN2 负载信息
  • 7. 需要解决的问题 • 优化访问性能 • 安全性问题 • 监控和故障处理 • 系统更新和升级 • 系统扩容
  • 8. DDB访问性能优化——系统设计优化 • 去中心化,Client通过DBI直接访问DBN • DBI Cache –Meta Data Cache –DBN Connection Pool –DBN PreparedStatement Cache –SQL Syntax Tree Cache • 优化排序操作:Merge Sort优先 • 支持游标 • 基于Master-Slave的读写分离和读负载均衡
  • 9. DDB访问性能优化——开发DBA • 优化索引和SQL • 尽量使用绑定变量(PreparedStatement) • 尽量控制事务范围和执行时间 • 避免limit或offset值过大 • 获取大结果集时使用游标 • 为表选择合适的均衡策略(均衡字段、均衡函数、桶到 DBN的映射) • 查询条件中尽量使用均衡字段等值条件 • 开销大的查询在Slave节点执行
  • 10. 访问异常排除和性能优化——工具支持 • SQL Explain:分析DDB 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 • DBI资源状态监视 – DBN连接池状态,占用连接的线程堆栈 – 资源对象:Connection/Statement/PreparedStatement
  • 11. DDB系统安全 • 访问认证 – 用户名、口令认证和IP地址检查 – DDB认证+DBN(RDBMS)认证 • 权限管理 – 区分普通用户和管理员用户 – 权限控制粒度:用户对表的读、写和授权 – 用户访问配额控制 – 管理员权限细分:Schema配置、维护、监控统计、用户管理 – 管理员操作日志 • 其他: – 口令加密传输和保存 – 只允许内网访问
  • 12. DDB状态监视和故障处理 • DBN状态监视:By Master – 心跳监视和报警,故障时切换到Standby Node。 – Session自动监视、统计和报警 – Slow Log自动监视、统计和报警 – 复制延迟和异常自动监视和报警 • Query Server监视:By Master – 心跳监视和报警,动态调整和广播可用的QueryServer列表。 – 负载监视,动态调整和广播可用的QueryServer访问权值。 • Master监视:By Monitor or Zookeeper – 采用主从模式,故障时自动切换 – Meta Data复制
  • 13. 应对系统变更和升级 • 系统变更: 产品升级、硬件升级、系统软件升级、DDB版本升级 • 技术挑战: 降低影响、避免误操作、时间可控、自动化、可回退 • 应对策略 – 硬件和系统软件升级:主备切换,逐步替换 – 测试环境 -> 线上环境:正确性验证和实施时间评估 – 管理操作支持命令行方式执行,降低重复操作中的误操作 – 计划任务:支持多任务、多模式、异常处理、详细日志和执行结果通知 – 数据备份:Mirror + backup(snapshot) + Binlog – DDB版本升级:Master和DBI升级,通信协议向下兼容
  • 14. DDB扩容(1) • 技术挑战 – 降低对线上服务的影响 – 灵活地扩充资源 – 降低复杂度 – 保证执行效率 • 实现原理 存储映射表 存储映射表 哈希表 (可调整) 负载 9+7=16 哈希表 (可调整) 负载 9+7+7=23 7 5 7 数据迁移后 9 5 SN 1 9 7 负载 SN 1 7 负载 4 7+5+4=16 4 7+5+4+8=24 8 8 7 7 SN 2 SN 2 负载信息 负载 8+7=15 SN 3
  • 15. DDB扩容(2) 实现方案 • 方案一:DBN间数据导出导入 – 优点:迁移效率较好,实现较简单,灵活性好 – 缺点:停服时间长,容易导致数据不一致,删除数据的负面影响 • 方案二:基于事务的批量数据迁移 – 优点:不用停服,应用透明,灵活性好 – 缺点:实现复杂,迁移效率低,对线上访问有一定影响。 • 方案三:基于复制的数据扩容 – 优点:对应用透明,不需停服,效率高,对线上访问基本无影响。 – 缺点:操作较为复杂,只能实现成倍扩容,灵活性较差。
  • 16. DFS的设计目标 • 面向海量的非结构化用户数据存取 • 支持大量的高并发数据操作 • 支持动态扩展,存储量和处理能力线性增加。 • 高可靠性,避免数据丢失和单点故障 • 负载均衡,可控性好 • 存储成本可控
  • 17. DFS的功能特点 • 数据访问去中心化 – 文件读取和写入不经过中心节点,提高访问效率 – 通过ID(64bit)标识和定位文件 – 文件元信息:不支持目录、文件名、权限信息,支持SIZE,UpdateTime,MD5。 • 访问接口: – 不支持POSIX文件接口 – 面向Java/C++的API:read,insert,delete,append,update等 – HTTP文件读取接口 • 支持多副本 • 支持数据在集群中复制和迁移 • 支持文件级别的数据去重 • 定制硬件降低成本
  • 19. 数据定位——ID到文件地址的映射 ID BucketID (16bit) Level1 (12bit) Level1 (12bit) Level3 (12bit) Filename(12bit) 文档分配表 Bucket 1 SN 1 Bucket 2 SN 2 Bucket 3 SN 3 Bucket 4 …… …… SN RootDir/Level1/Level2/Level3/Filename
  • 20. 多副本管理 • 以Bucket为单位进行配置和管理 • 将Bucket映射到不同SN的不同磁盘上 • FSI负责多副本的同步写 • FSI和前端机随机挑选副本读取数据 • SN故障处理: 1.MDS检查到SN心跳失效 2.MDS通知所有FSI和前端机停止对故障SN的访问 3.MDS通知其他副本所在SN将桶数据复制到空闲SN上 4.MDS修改数据映射表
  • 21. 数据复制和迁移 • 应用场景: –SN异常恢复,恢复或增加副本 –SN系统软硬件更换或升级,服务器搬迁 –跨数据中心数据灾备 –均衡负载 • 实现策略: –以桶为单位进行复制和迁移。 –源SN上记录操作日志 –将源SN上的桶数据拷贝到目标SN后通过redo操作日志来保证源 和目标SN的同步。 –完成最后的数据同步瞬间源SN设为只读。
  • 22. DFS定制存储服务器 • 定制存储服务器 – 配备桌面级SATA硬盘 24x2T – 电源管理功管理磁盘上下电状态 • DFS对定制服务器的支持 – 通过多副本减少磁盘故障的影响。 – 控制SN的读写。 – 对只读或只有少量写操作的多副本磁盘组轮流上下电,通过定期 Redo操作日志保证数据一致。 • 带来的好处: – 降低硬件采购的成本 – 降低功耗 – 延长磁盘寿命
  • 23. 总结 • DDB在保持了RDBMS的特性和功能的基础上支持高吞吐、 高可用、高扩展,适合传统的基于RDBMS的应用开发。 • DFS在DDB的基础上提供大对象存储,提供了更好的扩展性 。 • DDB弥补了DFS在元数据管理方面的不足。 • DDB与DFS的结合可以满足大多数互联网应用的快速开发要 求。 • 基于廉价服务器的分布式解决方案降低了存储系统的成本。 • 功能强大的管理工具弥补分布式集群带来的管理复杂性。
  • 24. 存储平台应用情况 • 使用平台的产品 – 网易博客 – 网易微博 – 网易相册 – 网易企业邮箱 – 邮箱网盘和超大附件 – 网易POPO(即时通信) – 社区类游戏 • DDB存储节点数量 400+ • DDB总数据量 60TB • DFS存储节点数量 1200+ • DFS总数据量 4PB