1、Raft在百度云存储实践 王耀 2017/01/15 About Me 王耀 百度云高级架构师 资深轮子党 分布式存储熟练工 ABC时代的分布式存储 容量 性能 多样性 内容:网页 、广告、日志、 UGC 类型:文本 、图片、视频 形式:结构化、半结构化、非结构化 EB级存储需求 每日新增百 PB数据 数据长期备份 高吞吐 低延时 性能横向扩展 百度云存储 分类 消息队列 文件系统 块存储 对象存储 表格存储 CCDB存储体系 Memory SSD Disk Replica Block System Raid-like Block System Table Engine File Engine
2、 KV Engine Replication Recovery Control Permission Isolation Priority Table File Object Hardware Block Engine Distributed Platform Interface AFS新存储体系 分布式存储面临的问题 如何分片 如何复制 如何修复 节点加入 节点离开 如何负载均衡 如何规避 IO慢节点 一致性复制协议 Basic Paxos Multi Paxos Viewstamped Replication QJM ZAB Raft简介 Leader Election Log Repli
3、cation Membership Change Log Compaction Raft之 Node状态转移 Raft之 Log状态转移 libraft之复制修复 raft在分布式存储 Core Building Lock Block Queue Table File NewSQL 轮子 libraft 业界现状 C+实现较少 大部分类 zk服务 功能不完备 性能不好 测试不充分 需求目标 高性能 通用库 自定义 storage 功能完备 prevote leader transfer 测试靠谱 jepsen test libraft之 WAL 挑战 WAL的 IO隔离 WAL阻塞 Raft状
4、态机 WAL双写影响吞吐 缓存 内存缓存最近Entries 异步 WAL异步写 批量 Replicator批量 发 Entries LogStorage批量写Entries raft WAL replicator libraft之 prevote 对称网络划分 对称网络划分 增加 term会导致 leader stepdown prevote阻止数据不全节点选主 不属于复制组中的节点 属于复制组但网络划分的节点 libraft之 leader transfer Implement TimeoutNow Case rebalance remove leader libraft之 tips on_
5、snapshot_load开始先清空状态机 on_apply保证主从执行结果一致 on_leader_stop保证 leader相关任务 cancel proposal带上 term保证非幂等操作的安全 PeerId增加 version机制 libraft之 benchmark 0 100 200 300 400 500 600 512 1024 4096 8192 16384 32768 throughput raft fio CDS简介 云磁盘服务 为虚机提供可扩展的数据块级存储卷。 特性 高可靠性 高稳定性 高性能 vdisk 弹性 快照 多副本 可用性高 CDS数据模型 Volume拆
6、 Block Block聚 BlockGroup CDS逻辑数据分布 两级分布 Pool ReplicaGroup CDS物理数据分布 五级隔离 Region Zone Rack Node Disk 0 1 Node 1 2 3 0 0 1 1 2 2 3 3 4 4 4 AZ Node 2 Node 3 Node 4 数据访问 Node 11 11 12 13 14 10 11 12 13 Node 12 10 12 13 14 Node 13 10 11 14 Node 14 Rack1 Rack2 Rack3 Rack4 CDS架构 CDS快照 CDS回滚 CDS请求长尾优化 quorum写入优化写请求 backup request优化读请求 定期汇报进行主从均衡和数据迁移 即将开源 bthread bvar baidu-rpc libraft Q&A