百度分布式数据库


简介 ü  谁使用 MySQL? ü  为什么使用 MySQL? ü  问题 –  性能 –  数据规模伸缩 –  功能特性 –  服务化 –  自动化 目标 : 功能 : •  响应时间 •  吞吐 •  解放大部分产品线 •  节约资源 •  分布式数据库需求 •  Fulltext •  Snapshot •  Optimized alter •  其他 单节点 单节点性能 ü  性能 –  QPS (读 / 写 ) –  响应时间 (平均 / 长耗时 ) –  数据规模 ü  问题 –  随机读 •  存储引擎 cache & 系统 cache –  随机写 (LRU / checkpoint ...) •  buffered write •  ordered write •  长耗时绝大部分的请求响应时间在 1ms以内 ü  IOPS是读操作和写操作的瓶颈 ! ü  Vs 硬盘 (sas 10k) –  QPS 提升 700% ü  Vs SSD (FTL Optimized) –  QPS 提升 250% , 长耗时减少 95% –  可用空间增多 & 使用寿命增加 –  通用型优化 , 读为主应用及写为主应用均适合 ü  对应用完全透明 , 使用方式和以前一样 ü  2007年百度尝试 Flash, 2008年百度网页搜索全面使用 Flash ü  2008年 MySQL尝试使用 Flash, 2011年百度 MySQL全面使用 SSD 我们的优化结果 IO设备特性 ü  IO 设备 (硬盘 & SSD & 内存 ) –  顺序写 、 顺序读 、 随机写 、 随机读 –  响应时间 –  带宽 –  访问密度 –  价格 ü  Tape is dead, disk is tape, flash is disk, ram locality is king. —— Jim Gray SSD Vs 硬盘 16K随机读 16K随机写 16K顺序写 1M顺序写 1M顺序读 SSD 0.3ms 0.54ms 0.1ms 3.8ms 1.77ms 硬盘 5.9ms 1.08ms 0.15ms SSD 16K随机读比硬盘提升 1860% SSD 16K随机写比硬盘提升 100% SSD 16K顺序写比硬盘提升 50% SSD 16K顺序写比其随机写提升 440% SSD 1M顺序写比 64次 16K随机写提升 800% SSD 1M顺序写比 64次 16K顺序写提升 68% SSD 1M顺序写比 1次 16K顺序写提升 3700% 如何针对这些数据来设计系统 ? 优化手段 ü  FTL –  in-page logging –  其他 ü  文件系统 –  l2fs,btrfs, zfs ... –  BFTL ü  Kernel –  flashcache ü  存储系统逻辑 –  append write –  random read –  merge FTL ü  IO 模型 –  随机写 –  随机读 ü  In-page logging –  20% log 空间 –  75% raid5 –  60% 使用率 存储系统逻辑 ü  SSD/硬盘作为 SSD/硬盘的写 cache ü  SSD作为硬盘的读 cache –  SSD作为 innodb buffer pool的二级读 cache ü  远程 memory作为 innodb buffer pool的二级读 cache ü  不同 IO模型分离 –  文件 / 设备 / IO模型转化 / 分离 写 cache ü  IO 模型 –  顺序写 (提升 800%) –  随机读 ü  Merge ü  Pages mapping –  mem: ssd = 1 : 350 ü  Multi-Write –  提升 68% ü  写瓶颈 –  iops -> 吞吐 ü  读瓶颈 –  iops -> iops 写 cache & 读 cache ü  IOPS Vs 吞吐 ü  读 Cache Vs 写 Cache ü  性价比 ü  预热 ü  可维护性 ü  数据完整性 & 一致性 ü  透明 & 通用 ü  Nand flash Vs Nor flash –  100ns、 写性能 、 价格 、 容量 、 直接寻址 ü  Snapshot (Redirect write) ü  Btree (log-based 38x?) / Btree patch compaction 其他 ü  故障 –  ECC –  SLC –  Raid / Rebuild –  架构 ü  继续优化该版本 –  read cache / btree patch compaction ü  单节点 –  500G ~ 1T –  功能特性增强 •  snapshot •  online alter table 分布式 ü  产品定位 –  尽量保证数据库特性 , 提升数据规模 –  线上低延迟的访问 –  满足具有一定复杂关系的数据操作 ü  设计原则 –  应用访问方式不变 –  应用知道数据逻辑分布 –  不同访问模式提供的功能不同 –  自动发现 /人工决定 /自动处理 总体架构 访问模式 ü  Scan & Search ü  基于 Partition Key –  单表单机 –  单表多机 –  多表单机 –  多表多机 ü  不基于 Partition Key –  单表 –  多表 数据划分 ü  范围划分 ü  散列取模划分 ü  枚举划分 ü  时间划分 ü  组合划分 ü  Binding ü  继承 负载均衡 & 数据迁移 ü  负载均衡 –  目标 –  衡量标准 –  定期汇报 ü  数据迁移 –  负载均衡 –  高可用 数据一致性 ü  dbproxy与 zookeeper ü  zookeeper内部数据一致性 ü  同一 tablet不同副本之间的数据一致性 (异步 /半同步 ) –  最终一致性 –  会话一致性 ü  不同 tablet之间的数据一致性 ü  分布式事务 –  单机事务 + 最终一致性 系统可用性 & 可靠性 ü  多副本 ü  部署 ü  切换 ü  dbproxy ü  zookeeper ü  ts –  slave ts down / master ts down / tablet down / all tablet down –  auto-exchanger / 盘柜 –  mq 可扩展性 ü dbproxy ü zookeeper ü table –  预防扩容 –  读性能引起 (QPS / Latency) –  写性能引起 –  自动扩容 –  半自动扩容 –  合并 、 分裂 其他 & 开源 ü  其他 –  接口 / 权限 –  备份 –  监控 –  混合运维 –  计算 –  工具 ü  开源 –  单机性能优化 –  dbproxy Thanks! Q & A
还剩22页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

gppxm

贡献于2012-10-19

下载需要 6 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf