利用braft快速搭建高性能分布式系统

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
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

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.138.0. UTC+08:00, 2024-12-22 12:51
浙ICP备14020137号-1 $Map of visitor$