利用braft快速搭建高性能分布式系统
2020-02-23 292浏览
- 1. 使用braft快速构建分布式系统 王耀 百度云
- 2.
- 3.
- 4. 王耀 主任架构师 • 百度云IaaS技术负责人 • braft开源项目负责人 • 分布式存储系统 • 公有云网络虚拟化
- 5. • 分布式系统与Raft简介 • braft原理与实现 • braft在百度云的实践 • 基于Raft的存储模型 • 百度云CDS系统设计
- 6. 分布式系统 • 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像 是单个相关系统。 ---《分布式系统原理和范型》 • 分布式存储系统 • 分布式计算系统
- 7. 分布式系统需求 • Scalability • Performance • Availability • Partition • Replicate
- 8. 分布式共识 • Paxos • Zab • Viewstamped Replication • Raft
- 9. Raft复制状态机 • Leader Election • Log Replication • Log Compaction • Membership Change
- 10. Raft复制结构 • 树形结构 • 多数复制 • 写时修复 • 断点续传
- 11. Raft节点状态机 捣乱的Candidate • • • • 网络划分 节点负载高 指定节点为Leader
- 12. • 分布式系统与Raft简介 • braft原理与实现 • braft在百度云的实践 • 基于raft的存储模型 • 百度云CDS系统设计
- 13. 分布式系统脚手架 • 通信框架 • • brpc 一致性框架 • braft StateMachine StateMachine StateMachine braft braft braft brpc brpc brpc
- 14. brpc简介 • 丰富的协议支持 • 更好的延时和吞吐 - - - • 便捷的builtin调试服务 - - • 组合Channel支持复杂访问模式 - - - • 定制协议、名字服务和负载均衡
- 15. braft简介 • 功能完备 • 高性能 • PreVote • Append Log Batch • Leader Transfer • Replicate Batch and Pipeline • 高灵活性 • 自定义Storage • 两阶段InstallSnapshot • Cache Last LogEntries • Apply Async and Batch
- 16. braft协议状态机改进
- 17. braft接口 int init(const NodeOptions& options); • Node void apply(const Task& task); void add_peer(const PeerId& peer, Closure* done); void remove_peer(const PeerId& peer, Closure* done); void change_peers(const Configuration& new_peers, Closure* done); void on_apply(::raft::Iterator& iter); • StateMachine void on_snapshot_save(SnapshotWriter* writer, done); Closure* int on_snapshot_load(SnapshotReader* reader); void on_leader_start(int64_t term); void on_leader_stop(const butil::Status& status); void on_error(const Error& e);
- 18. braft实现snapshot • 加锁拷贝数据,再异步持久化数据 • 存储引擎支持MVCC,引擎snapshot之后异步持久化 • 离线线程合并上一次的snapshot及之后log,生成新的snapshot • fork子进程,在子进程中遍历状态数据并持久化 • 选从节点进行snapshot,再切换主从
- 19. braft使用tips • on_apply保证主从执行结果一致 • on_snapshot_load要先清空状态机 • on_leader_stop保证leader相关任务cancel • apply task间调用的结果都是独立的 • apply task和configuration_change存在false negative
- 20. • 分布式系统与Raft简介 • braft原理与实现 • braft在百度云的实践 • 基于Raft的存储模型 • 百度云CDS系统设计
- 21. braft在百度云的应用 • 元信息管理 • 存储系统 • 容器系统Master • 强一致性MySQL • 虚机系统Master • 分布式块存储CDS • 流式计算系统Master • 分布式文件系统CFS • 分布式NewSQL TafDB
- 22. 基于Raft的存储模型
- 23. CDS存储模型 • Volume拆Block • Block聚BlockGroup • BlockGroup braft复制 • Block多版本引擎 1 2 1 1 # 1
- 24. CDS逻辑数据分布 两级分布 • • Pool • ReplicaGroup
- 25. CDS物理数据分布 五级隔离 • • Region • Zone • Rack • Node • Disk
- 26. CDS中副本管理 Node • • • Master • 定期汇报状态 • 维护Node和Replica间映射 定期GC垃圾Replica • 修复Node/Disk故障 • 定期Disk容量均衡 • Replica数量 定期IO负载均衡 • • Leader数量
- 27. CDS架构 • Master • BlockServer • SnapshotWorker • Executor
- 28. CDS Master • LogicalService • LogicalMeta • ReplicaMeta • RSMFramework Volume SnapshotWorker Service Service JobMeta CliService Node Volume SnapshotWorker Service Meta Meta RGMeta Scheduler PoolMeta NodeMeta DiskMeta Replicated State Machine StateMachine Node braft
- 29. CDS存储引擎 3 Block分Slice • 多版本Slice • • 异步Snapshot • 1 异步Rollback 33 2
- 30.
- 31. CDS快照 3 1 . 1 . 1 . 1 . . 1. # 3 . . 1 . 1 . 2. . . 3
- 32.
- 33.
- 34.
- 35. CDS回滚 3 2 / 2 / ./ 2 / 3 2/ 2 3 . #/ 1 2 / / . 2 / 1 / 1 / 1