文字内容
1. IT U P T E N . B
2. T E 京东弹性数据库探索实践 N . B U P IT 郭伟 京东 技术架构部
3. 京东技术架构部 T E N . B 作为京东零售的技术基础设施,技术架构部专注于大规模分 布式系统的设计开发与工程实施,重点建设数据中心集群管理 U P 和大规模计算资源调度、商品图片系统以及智能化、分布式存 IT 储与数据库系统、消息队列与服务框架、日志平台与监控系统 等,持续推进京东零售整体系统架构的技术突破与创新。
4. T E N . B • 发展历程 • 整体架构 • 集群调度 T I • 故障迁移 U P • Resharding
5. T E N . B • 发展历程 • 整体架构 • 集群调度 T I • 故障迁移 U P • Resharding
6. 发展历程 2011 MySQL Oracle SqlServer 2014 IT U P T E N 2015 . B MySQL JProxy 2017 京东弹性 数据库
7. 痛点 T E N . B 资源使用 不合理 单机性能瓶颈 IT U P 数据迁移 不是在迁数据 就是在迁数据的路上 分库分表 水平扩展
8. 痛点 基于DNS方式 IT U P T E N . B 基于服务发现
9. IT U P T E N . B
10. T E N . B • 发展历程 • 整体架构 • 集群调度 T I • 故障迁移 U P • Resharding
11. 整体架构 IT U P T E N . B
12. 网关架构 IT U P T E N . B
13. Transfer架构 T E N . B 数据迁移工具 IT U P
14. T E N . B • 发展历程 • 整体架构 • 集群调度 T I • 故障迁移 U P • Resharding
15. Cloud Native定义 T E N . B CNCF对于Cloud Native应用的定义,是使用开源工具栈来实现如 下特征: • 容器化(Containerized):每个部分(应用程序,进程等)都 封装在自己的容器中。这有助于重复性,透明度和资源隔离。 • 动态编排(Dynamically orchestrated):动态的调度和管理容 器以优化资源利用。 • 面向微服务(Microservices oriented):应用程序基于微服务 架构,显著提高架构演进的灵活性和可维护性。 IT U P
16. IT U P T E N . B
17. 调度策略 T E N . B 反亲和性AntiAffinity: • 匹配有更多的逻辑组合,不只是字符的完全相等 U P • 调度分成软策略(soft)和硬策略(hard),在软策略的情况下,如果没有满 IT 足调度条件的节点,pod 会忽略这条规则,继续完成调度过程。在硬策略的情 况下,如果没有满足条件的节点,就不断重试; • 软策略:preferredDuringSchedulingIgnoredDuringExecution • 硬策略: requiredDuringSchedulingIgnoredDuringExecution
18. T E N . B 可选的操作符 • • • • • • In:label 的值在某个列表中 NotIn:label 的值不在某个列表中 Exists:某个 label 存在 DoesNotExist: 某个 label 不存在 Gt:label 的值大于某个值(字符串比较) Lt:label 的值小于某个值(字符串比较) IT U P
19. IT U P T E N . B
20. 调度方案 方案1: T + E N . B 方案2: IT U P +
21. T E N . B • 发展历程 • 整体架构 • 集群调度 T I • 故障迁移 U P • Resharding
22. Sharding/Resharding T E N . B 通过添加(减少)从库或者拆分分片的方式以达到业务读写吞吐 量均衡的目的; 场景 操作 U P 提升读取的吞吐量 提升写入的吞吐量 IT 收回过渡分配的资源 增加地理多样性 热数据 添加从库/拆分分片 分片拆分 合并分片/垂直扩缩/迁移缩容 增加新异地数据中心/添加异地从库 读取场景:添加从库/拆分热数据分片 写入场景:拆分热数据分片
23. Resharding IT U P T E N . B Shard A shard is a division within a keyspace. A shard typically contains one MySQL master and many MySQL slaves.
24. Resharding T E N . B • Shard • KeyRange IT U P
25. Resharding IT U P T E N . B
26. Resharding Setp1:创建两个目标分片 IT U P T E N . B
27. Resharding 初始化源分片、 目标分片信息 IT U P T E N . B
28. Resharding T E N . B 目标分片无法覆 盖所有Range IT U P
29. Resharding T E N . B 合理性检查-SanityCheck: • Destination Shard的master已经存在 • Destination Shard的Tablet只有master、replica、rdonly三 种类型 IT U P • Destination Shard的Tablet都为未上线(NotServing)状态 • Source Shard为线上(Serving)状态
30. Resharding Setp2:全量数据过滤复制 IT U P T E N . B (1)复制表结构信息(copySchema) (2)将Rdonly从Master上摘下来,然后过滤拷贝静态数据 到两个目标分片上
31. Resharding 过滤复制: 在Destination Master上开启一个BinlogPlayer,BinlogPlayer去Source Shard 的 replicaTablet读取binlog,根据binlog和Sharding Key决定是否执行binlog U P T E N . B IT keyRange(id) = Hash(id) => []byte
32. Resharding T E N . B U P IT SELECT id, x1, x2, x3, x4 FROM t1 WHRER id >= ‘start’ AND id < ‘end’ ORDER BY id;
33. Resharding Setp3:增量数据过滤复制 IT U P T E N . B (1)通过worker建立SourceTablet和TargetTablet之间的复制关系 (2)SourceTablet针对每个TargetTablet创建协程,并根据keyRange发送Binlog日志 (3)每个TargetTablet中的BinlogPlayer回放Binlog内容
34. Resharding Step4:数据一致性校验 IT U P T E N . B (1)移除Replica和Master的主从复制关系,等待过滤复制无延时 (2)Worker执行逐行数据校验,校验通过后将Replica和Master的 复制关系恢复。
35. Resharding Step5:切换ServerdType到目标分片 T E N . B U P IT (1)在正常复制情况下,先切换从的Tablet (2) 源Master停写, 等目标Binlog同步之后停止过滤复制 (3)将目标状态改为Serving, 源状态改为NotServing
36. Resharding T E N . B 迁移过程中首先需要迁移rdonly和replica模式的Tablet,最后迁移 master。迁移rdonly和replica只是通过修改路由信息将读操作转移到 Destination Shard相应的rdonly和replica上,而不会停止过滤复制。 为什么不先迁移master呢? U P 如果首先迁移了master,replica和rdonly还是原来的Shard提供服务, 这时Source Shard数据已经不更新了,相当于replica和rdonly在使用 一份历史快照数据提供服务。 IT
37. Resharding T E N . B 迁移master的主要步骤: • 停止master的读写服务并得到master的binlog位置pos U P • 等待所有的Destination Shard追binlog到 pos位置,保证无复制延迟 • 停止所有Destination Shard的过滤复制 IT • 修改DestinationShard的servedType为服务状态、更新路由信息并广播
38. T E N . B • 发展历程 • 整体架构 • 集群调度 T I • 故障迁移 U P • Resharding
39. 故障迁移 • 一主两(三)从 • 一个(两)半同步 • 一个异步 IT U P T E N . B
40. IT U P 机房3如果网络故障我们 应该怎么处理 T E N . B
41. T E N . B • 两副本 • 网络隔离 IT U P
42. T E N . B 最终形态 IT U P
43. IT U P T E N . B