郑建军 - PaxosStore:微信高可用、强一致存储系统

uvulaenraged

2017/12/18 发布于 技术 分类

微信PaxosStore是一个分布式存储系统,创新的无租约Paxos工程实现,实现三园区多主多写,任意角色宕机时系统无需切换周期,真正实现实时可用,平滑服务。 PaxosStore广泛支撑微信在线应用,峰值过亿TPS,运行在数千台服务器上。PaxosStore在数据分区内部提供完整的串行ACID语义,支持键值/队列/集合等数据结构以及二维表,单表可超亿行并提供SQL接口支持业务快速开发,通过跨园区数据中心间的同步复制提供强一致性和高可用性。该系统在2017年除夕夜实践中,平稳应对百亿级每分钟的挑战。

文字内容
1. PaxosStore: 微信高可用、强一致存储系统 郑建军(RockZheng) 2017年12月8日
5. 郑建军(RockZheng) 腾讯高级工程师 本人目前在腾讯负责微信基础存储的研发。14年加入微信后台团队,参与了多 个大型分布式系统的架构设计和研发工作,其中作为微信核心存储PaxosStore主 创人员之一,对微信核心存储系统(消息、朋友圈、好友关系链等)进行升级改 造,提升了服务的可用性和数据的安全性。
6. •  项目介绍 •  PaxosStore架构设计 •  具体案例分析 •  项目的挑战和发展
7. 项目介绍 •  PaxosStore是什么? 一个在跨园区数据中心间同步复制,提供灵活的数据模式和访问接口,支持亿行大 表,并具备快速伸缩能力,低延迟低成本,强一致和高可用的分布式存储系统。 •  PaxosStore特点: •  无租约Paxos工程化,多主多写,高可用; •  针对业务特性优化,合并整体优化成本15+%; •  同一容灾、迁移框架下,支持多种插件化存储引擎、亿行大表; •  快速伸缩能力,基于反馈的自适应迁移系统。
8. 项目介绍 •  PaxosStore部署情况: •  WXG内部广泛部署、数千台机器 •  数万亿/天的读写量、峰值1亿+/秒 •  PB级的结构化数据、全球多个数据中心 •  微信业务支持: •  账号/消息/朋友圈/通讯录/…
9. 为什么需要PaxosStore? •  日益庞大的存储集群 •  海量存储机器,PB级数据量 •  月均上百台单机故障 •  旧架构缺陷:数据异步同步 •  单机故障导致部分Key不可用 •  单机数据丢失,导致未同步数据丢失 •  需求列表 •  提高服务的可用性 •  提高数据的安全性 机器规模7000台,每月频繁的单机故障
10. •  项目介绍 •  PaxosStore架构设计 •  具体案例分析 •  项目的挑战和发展
11. PaxosStore整体架构
12. 数据分布方式 •  按Set隔离,一致性哈希; •  Set内三园区容灾; •  读操作就近访问。
13. PaxosLog(PLog)介绍 •  Paxos协议保证PLog中每个Entry的一致性 ABC三台机上对应的三条PLog
14. 三机PLog架构设计要点 •  三份数据副本 •  更加安全可靠 •  NoRaid代替Raid10降低成本 •  多主多写 •  AB机自动跳转 •  PLog允许空洞 •  可用性更高 •  PLog细粒度化 •  用户数据相互隔离 •  快消型PLog •  消除磁盘瓶颈 三机PLog架构
15. 三份数据副本下的性能优化 •  Paxos协议优化 •  预授权(Pre-Preparing) •  常规优化 •  网络IO按IP聚合投递 •  磁盘IO合并 •  针对性优化 •  只复制副本,延迟批量Commit
16. 多主多写下的活锁问题 •  活锁问题是怎么产生的?
17. 多主多写下的活锁问题 •  活锁问题如何解决? •  Client路由先A后B •  冲突时进行避让 •  相同PLog的请求合并
18. 为什么PLog(变更日志)允许空洞的情况下可用性更高?
19. PLog(变更日志)与数据对象的对应关系 •  整个数据库对应一个PLog •  访问单个用户数据 •  落后时Catchup所有用户变更 •  单个用户数据发生异常 •  影响对应PLog的所有用户
20. PLog(变更日志)与数据对象的对应关系 •  PLog细粒度化 •  用户数据相互隔离 •  数据落后、丢失时,独立恢复 •  PLog细粒度下的恢复策略 •  访问时优先恢复 •  后台线程全量恢复
21. 基于PLog(变更日志)的数据恢复 •  如何应对PLog无限增长的存储空间? •  PLog日志存在的意义 •  协议交互需要 •  Commit到DB数据库 •  删除PLog日志 •  安全性:Commit下可删 •  过期删除
22. 快消型PLog •  PLog存多久合适? •  存储成本 VS 数据全量恢复性能 •  增量型数据 •  以严格递增序列号为Key的列表结构 •  以时间戳为Key的集合结构
23. 数据恢复方式总结 •  基于PLog日志 •  基于增量数据 •  基于全量数据
24. •  项目介绍 •  PaxosStore架构设计 •  具体案例分析 •  项目的挑战和发展
25. 朋友圈索引存储 •  背景 •  单机TB级数据 •  热数据效应明显 •  实施效果 •  机器故障,平滑切换 •  回归集群,快速恢复
26. 消息存储系统 •  背景 •  1000+台机器,PB级数据 •  消息写量:千亿级/天 •  存储转发机制 •  实施效果 •  NoRaid代替Raid10,收益明显 •  DB支持增量恢复,PLog日志快消
27. •  项目介绍 •  PaxosStore架构设计 •  具体案例分析 •  项目的挑战和发展
28. 项目的挑战和发展 •  灵活伸缩 •  数据分布支持按范围划分 •  计算存储分离 •  分布式文件系统 •  分布式表格系统