百度云 王耀 - 《Raft在百度云的实践》
2020-02-27 560浏览
- 1.Raft在百度云的实践 百度云 王耀
- 2.
- 3.
- 4.个人简介 • 王耀 • 百度云IaaS主任架构师 • braft开源项目负责人 • 分布式存储系统 • 公有云网络虚拟化
- 5.分布式系统日常Keyword
- 6.内容提要 • Raft协议简介 • braft实现简介 • 基于Raft的存储模型 • 百度云CDS存储设计
- 7.Raft复制状态机 • Leader Election • Log Replication • Membership Change • Log Compaction
- 8.Raft复制结构 • 树形结构 • 多数复制 • 写时修复 • 断点续传
- 9.Raft节点状态机 • 捣乱的Candidate • 网络划分 • 节点负载高 • 指定节点为Leader
- 10.braft实现简介 • 功能完备 • PreVote • Leader Transfer • 高灵活性 • 自定义Storage • 两阶段InstallSnapshot • 高性能 • Append Log Batch • Replicate Batch and Pipeline • Cache Last LogEntries • Apply Async and Batch
- 11.braft协议状态机改进 election timeout starts up start prevote prevote success receives votes from majority of servers Follower Candidate discovers current leader or new term or vote fail discovers server with high term or transfer leader Leader
- 12.braft使用tips • on_apply保证主从执行结果一致 • on_snapshot_load要先清空状态机 • on_leader_stop保证leader相关任务cancel • apply task间调用的结果都是独立的 • apply task和configuration_change存在false negative
- 13.braft在百度内的应用 • 元信息管理 • 容器系统Master • 虚机系统Master • 流式计算系统Master • 存储系统 • 强一致性MySQL • 分布式块存储CDS • 分布式文件系统CFS • 分布式NewSQL TafDB
- 14.基于Raft的存储模型 Interface Table Shard Distributed Block Placement RAFT Queue Rebalance Engine Storage Table Block Memory SSD SATA Queue DFS
- 15.存储系统实现步骤 • 模型分析 • 接口 • 分片 • 引擎 • 系统实现 • 放置 • 选主、复制、修复 • 负载均衡 • 系统测试与上线 • 异常注入 • 平滑数据迁移
- 16.百度云块存储CDS
- 17.CDS存储模型 • Volume拆Block • Block聚BlockGroup • BlockGroup braft复制 • Block多版本引擎 Volume LBlock #1 BlockGroup #1 PBlock …… #2 Stripe LBlock #2 …… LBlock #m Hash BlockGroup BlockGroup #2 …… #n PBlock …… #1 PBlock #x …… Raft
- 18.CDS逻辑数据分布 • 两级分布 • Pool • ReplicaGroup Pool A ReplicaGroup ReplicaGroup ReplicaGroup ReplicaGroup Pool B ReplicaGroup ReplicaGroup ReplicaGroup Pool C ReplicaGroup ReplicaGroup ReplicaGroup
- 19.CDS物理数据分布 • 五级隔离 • Region • Zone • Rack • Node • Disk 数据访问 AZ 12 34 Node 1 11 12 13 14 Node 11 Rack1 01 23 Node 2 10 11 12 13 Node 12 Rack2 02 34 Node 3 10 12 13 14 Node 13 Rack3 01 4 Node 4 10 11 14 Node 14 Rack4
- 20.CDS中的副本管理 • Node • 定期汇报状态 • 定期GC垃圾Replica • Master • 维护Node和Replica间映射 • 修复Node/Disk故障 • 定期Disk容量均衡 • Replica数量 • 定期IO负载均衡 • Leader数量
- 21.CDS架构 • Master Volume Ctrl Raft Master Snapshot Ctrl Snapshot Worker • BlockServer Executor • SnapshotWorker BlockGroup Ctrl • Executor Volume IO BlockServer BlockServer BlockServer Snapshot Meta Snapshot Data Raft BOS
- 22.CDS存储引擎 • Block分Slice • 多版本Slice • 异步Snapshot • 异步Rollback Clone v1 IN_BOS IN_BOS IN_BOS IN_BOS IN_BOS Write v1 IN_BOS LOCAL IN_BOS LOCAL IN_BOS Snapshot v2 IN_BOS COPIED IN_BOS COPIED LOCAL Rollback v3 IN_BOS IN_BOS IN_BOS IN_BOS IN_BOS
- 23.CDS快照 Block Slice#1 Slice#2 Slice#3 …… Slice#n 1. Order Snapshot 1. Write Trigger Snapshot COW 3. Put and Merge Slice BLockSnapshotMeta 2. PutObject Backgroud SnapshotMeta BOS SnapshotData
- 24.CDS回滚 Block Slice#1 Slice#2 Slice#3 …… Slice#n 2. Order Rollback 2. Write/Read Trigger Snapshot 1. Split and Get BLockSnapshotMeta SnapshotMeta BOS SnapshotData
- 25.DuFault异常测试 • CPU/Mem异常 • Disk异常 • 进程异常 • 网络异常 Dashboard DuFault DB Master Agent Plugin X Master Agent Plugin X Node Agent Plugin X Node
- 26.广告 • 开源 •https://github.com/brpc/brpc•https://github.com/brpc/braft• 招聘 • 分布式系统研发工程师 • 虚拟网络研发工程师 • 存储系统研发工程师 acut1-jobs@baidu.com
- 27.THANK YOU cloud.baidu.com
- 28.
- 29.
- 30.
- 31.