阿里“去IOE”实践

高端存储的IO能力很强,PC能否顶得过; MySQL和Oracle对SQL的处理性能是否相同. 扩展性 ... 分布式事务 ... 多样化的存储系统(AliMySQL OceanBase Hbase…).
展开查看详情

1.阿里“去 IOE ” 实践

2.关于我 陈招尚 花名 胜通 , 07 年加入淘宝 负责过淘宝的所有核心数据库 关注数据库的最佳实践 微博: @ 水龙过年

3.大纲 阿里“去 IOE ”的历 程 阿里“去 IOE ”的背景 阿里 “ 去 IOE” 的难点 阿里 “ 去 IOE” 的技术

4.历程 0 4 年:分拆 DB1/DB2 07 年:垂直中心化 0 9 年:去 IOE 13 年:新的征途

5.历程 0 4 年:分拆 DB1/DB2 07 年:垂直中心化 0 9 年:去 IOE 13 年:新的征途

6.垂直中心化 商品 交易 用户 店铺 评价 机彩 收藏 heart misc crm DMX4- CM2 DMX4- CM3 App 提供中心化服务 分离核心关联查询 垂直化核心表 App 接口读写分离 大面积使用缓存 热点改造 冗余核心字段 缓存命中率 随机 IO 写 整库宕机 容灾切换 技术把控力 成本

7.去 “ IOE” 背后原因 成本 集中式的严重制约 技术把控力降低

8.去 “ IOE” 背后原因 成本 集中式的严重制约 技术把控力降低

9.架构 难点 可用性 小型机存储的高冗余机制, PC 和 MySQL 能否做到 一致性 Oracle 物理级别一致性, MySQL 有没有问题(语句模式) 高性能 高端存储的 IO 能力很强, PC 能否顶得过 MySQL 和 Oracle 对 SQL 的处理性能是否 相同 扩展性 分多少库分 多少表,什么维度分 后期二次拆分如何更 方便

10.实施 难点 数据迁移 异构数据迁移,全量怎么迁移,增量怎么迁移 怎样才能无缝升级 数据路由 如何屏蔽分表给应用带来的复杂性 如何解决多维度查询 如何解决跨分表查询 数据同步 搜索、数据仓库、其他业务方都有数据导出需求,如何实现实时同步,并且只同步一次 分布式事务 一个事务涉及到 2 张不同纬度的表该怎么办? 一个事务涉及到 2 个分库该怎么办? 规模化运维 如跨库数据订正怎么解决, DDL 的问题怎么处理等这类日常运维工作 如何应对从一台到几千台的运维量变,监控、告警怎么搞 如何应对更多的业务需求变化,开发能否对 DB 的操作实现自助

11.实施 难点 数据迁移 异构数据迁移,全量怎么迁移,增量怎么迁移 怎样才能无缝升级 数据路由 如何屏蔽分表给应用带来的复杂性 如何解决多维度查询 如何解决跨分表查询 数据同步 搜索、数据仓库、其他业务方都有数据导出需求,如何实现实时同步,并且只同步一次 分布式事务 一个事务涉及到 2 张不同纬度的表该怎么办? 一个事务涉及到 2 个分库该怎么办? 规模化运维 如跨库数据订正怎么解决, DDL 的问题怎么处理等这类日常运维工作 如何应对从一台到几千台的运维量变,监控、告警怎么搞 如何应对更多的业务需求变化,开发能否对 DB 的操作实现自助

12.无缝升级 全量迁移数据 应用发布双写版本 覆盖迁移增量数据 数据校验 新库开放读流量 应用发布,写流量切换 完成,停反向复制 ORACLE MySQL APP

13.数据复制 MySQL APP SYNC ORACLE LOg1 LOg2

14.实时数据流技术

15.数据路由 每个查询都带分表字段 路由表解决多维度查询 数据存多份解决多维度查询 无 order by 跨表查询则依次从单个表的执行 有 order by 同时发到多个分表获取

16.分布式数据库中间层 shard2 shard1 Master RW Master R-Only ASYNC Master RW Master R-Only ASYNC APP TDDL

17.高可用保障 Master RW App 动态数据源 (TDDL) ZooKeeper / Agent1 /Agent2 SwitchManager Master R-Only ASYNC Agent Agent Aplication RDBMS Aplication RDBMS TDDL 机房 1 机房 2

18.分布式事务 seller APP N1 N2 buyer NOTIFY TAILLOG

19.分布式事务 可靠的消息队列 N1 和 N2 要永久可写 一条重要消息写 2 份 缺点:无法保证时效 性和顺序性 应用自身要具备容错机制 以 sell 维度建立 check 表,利用 db 的唯一性控制重复投递

20.MySQL 上主要工作点 分支维护 业务定制 支撑业务灵活多变的 db 定制需求,满足业务高速发展 重大 MySQL 核心功能改造 并行复制,从 根本上结束主备延时的历史 多主复制,改变无法多主拓扑结构的现状 高并发热点更新优化,特点场景性能提高210倍 线程池,避免高并发下MySQL性能下降 稳定性维护 MySQL bug 快速修复 TMHA 自动切换及数据 一致性修复 具备不绑定任何商用 RDBMS 能力

21.去 IOE 后整体架构 Tair /TFS Aplication Tair /TFS Aplication TDDL IDC1 IDC 2 Shard00 Shard16 … Shard00 Shard16 … DataSource zookeeper zookeeper … SwitchConsole

22.规模化运维 服务平台 WEB API 在线数据集 群 Agent 元数据 申请 升级 下线 迁移 备份 扩容 通用调度 执行计划 原子模块 调度通道

23.研发自助平台 表设计 DBA 经验产品化 环境同步 开发、日常、性能多套环境同步 SQL 审核 自动识别变更 SQL 自动审核和优化建议 自助发布 识别变更风险 系统定时自动发布

24.小结 战略性系统工程 - 深远影响公司技术思路 - 全方位的技术细节和架构的自主把控 - 风险大 收益高 组织保障 : - 强有力的数据库技术团队来主导 - 决策者 认可并坚定 支持 收益 - 强悍 的技术团队 - 极 低的成本 - 开放 灵 活的技术架构 - 多样化的存储系统( AliMySQL OceanBase Hbase …) - 规模化运维 - 自主可控 24

25.Q&A