美团分布式存储底座MStore

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 美团分布式存储底座MStore 2022年7月 1
2. 个人介绍 张彪,美团技术专家,7 年分布式存 储研发经验 2019年底加入美团,目前从事MStore MetaServer相关研发工作 2
3. 目录 背景 整体架构 重要特性 应用与实践 未来规划 3
4. 背景 提升存储扩展能力 降低存储成本 降低重复研发成本 满足多样化的存储需求 现有的数据库/存储集群,如果计算资源达到瓶颈需要扩 容,仍然需要迁移数据,对于数据量较大的业务,扩容 操作时间很长 很多PaaS和业务系统都有数据存储的需求,由于公司目 前没有 套统 的底层存储可复用,需要各个组件自己 设计并研发数据存储功能,解决数据副本冗余、 failover、数据同步 致性等复杂的通用存储技术问题, 存在较多的重复建设工作 当前各分布式存储产品架构由于不是存储计算分离架构, 经常会因为存储或计算的资源瓶颈而需要扩容,进而造 成另一方面资源的更大浪费,不能充分利用计算或存储 资源 目前的KV存储、对象存储、块存储服务,不能很好的 满足业务多样化的存储需求。例如块存储由于技术特 性限制,不能支持多个客户端共享访问,这种场景需 要分布式文件存储来支持 高可用、高性能、高可扩展的分布式存储底座服务 4
5. 整体架构 5
6. 核心设计目标 分布式文件存储 分布式对象存储 消息队列 搜索 分布式块存储 分布式KV 传统数据库 分布式数据库 高可靠 高可用 高性能 高可扩展 采用多副本技术,至少保证在一台机器或一个机房不可 用的情况下,数据仍不丢失 利用新一代软硬件结合技术,包括SPDK、RDMA等, 充分发挥新硬件能力,提供极致IO性能 为上层PaaS层提供统一存储,赋能上层在迁移时的零数 据丢失及秒级切换能力;支持跨AZ部署,提供AZ容灾能 力;单节点机器失效无感知 集群规模可扩展至数万节点,元数据支持水平扩展 MStore 6
7. 相关概念 • Blob(Binary Large Object):用户访问MStore的基本单位 • Chunk:MStore数据存储基本单元,一个Blob可以由多个Chunk组成,Chunk默认大小为64MB • Replica:副本,一个Chunk可以有多个副本 • LogBlob:只支持追加写的Blob类型,一个LogBlob可包含多个Chunk • ExtentBlob:支持随机写的Blob类型,一个ExtentBlob仅包含一个Chunk • PhysicalPool:在机器物理特性上一致或相近的一组数据存储节点的集合,不同PhysicalPool中的数据存储节 点物理隔离 • LogicalPool:对应于一个租户,一个LogicalPool中的数据存储于一个PhysicalPool中。任意一个Blob都属于某 一个LogicalPool 7
8. 整体架构 8
9. 基本读写流程 写流程 9
10. 基本读写流程 读流程 10
11. 重要特性 11
12. 重要特性 • 高性能 • 高可靠、高可用 • 高可扩展 12
13. 高性能 • 数据及请求拆分 • Client读写策略优化 • ChunkServer高性能 • RDMA • Client与ChunkServer间读写支持RDMA 13
14. 高性能 数据及请求拆分 subreq(off, len1) request(off, len) Clien t subreq(off2, len2) …… subreq(offx, leny) off,len Blob Chunk3 CS 1 Chunk2 Chunk3 CS 2 Chunk1 Chunk2 Chunk3 CS 3 Chunk1 Chunk2 Chunk1 CS 4 14
15. 高性能 Client读写策略优化 • t1 • Backup read read () read() 读副本择优 Clien t (AZ1) t3 t4 t2 req1 写请求合并 time CS1 (AZ1) req1(bak) • t5 req2 CS2 (AZ2) CS3 (AZ3) 15
16. 高性能 ChunkServer高性能 • 写请求合并 • • 合并多次连续的写请求,单次写盘 Raw FS 裸盘系统+SPDK Block Device Device 16
17. 高可靠、高可用 • 数据分布 • 读写异常处理 • 数据恢复 • Rebalance • QoS • 支持以租户(LogicalPool)为粒度的QoS • 支持数据复制流量的QoS 17
18. 高可靠、高可用 数据分布 LogicalPo ol1 (HOST) LogicalPo ol2 (AZ) PhysicalPool1 PhysicalPool2 AZ1 CS1 chunk y CS1 chunk x CS1 chunk y CS2 chunk CS3 chunk CS2 chunk CS3 z y CS2 chunk z CS1 CS2 chunk x chunk z CS3 chunk x AZ2 x CS3 chunk AZ1 CS1 CS5 CS2 chunk x CS3 AZ3 CS4 chunk x chunk x CS5 AZ2 CS2 chunk x CS3 CS6 chunk x AZ2 AZ1 CS1 CS4 x AZ3 CS6 AZ3 CS4 chunk x CS5 CS6 chunk x 18
19. 高可靠、高可用 读写异常处理 • LogBlob Chunk快速切换 • SDK读时异常副本规避 CS1 • 元数据节点重定向 CS2 chunk2 chunk1 切换 chunk3 DISCONNECTING CS3 CS4 CS5 19
20. 高可靠、高可用 数据恢复 • ChunkServer宕机、断网等导致不可用 • 磁盘只读等导致的磁盘不可用 • 磁盘坏块 • 主动下线ChunkServer、磁盘 • LogicalPool配置变更 chunkx chunkx chunky chunky chunkx chunkx chunky chunky 20
21. 高可靠、高可用 Rebalance • 自动Rebalance • • 磁盘剩余空间感知 • • 集群扩容 根据周期性心跳中的磁盘剩余空间情况动态调整数据迁入和迁出流 数据复制+删除 • • 与数据恢复一样,均通过数据复制的方式完成,优先级低于数据恢复 数据搬迁后删除冗余副本 21
22. 高可扩展性 ChunkServer平滑扩容 • • 理论上单集群可支持数万台ChunkServer 扩容不会导致大量数据搬迁,对读写影响小 磁盘动态上线 • 无需重启ChunkServer进程即可实现单机磁盘扩容 多MetaServer组 • 不同MetaServer组可共同管理相同的ChunkServer 22
23. 应用与实践 23
24. EBS on MStore 容器场景组件已接入 vdisk Client BlockServ er MStore Client segment1 BlockServ er MStore Client WAL WAL segment2 segment3 Seg met a entry entry entry LogBlob ExtentBlob MStore集 群 24
25. EFS on MStore 搜索场景、数据同步场景业务已接入 mount point dir1 Client file1 DataServ MStore er Client DataServ MStore er Partition1 SST (LSM-Tree) file2 manife st Partition2 SST (LSM-Tree) manife st Client Extent Map LogBlob ExtentBlob MStore集 群 25
26. 工程实践 • 质量保障 • 监控告警 • • • • 接口级别监控 多类目指标:性能、容量、内部状态 Trace:从业务侧至服务端的跨服务 Trace 告警:服务状态、性能、容量—— daily、weekly治理 混沌测试 长期运行 每周运行 • 代码质量 • • • • Clang-format (google c++ style) 静态代码检查:集成至PR流水线 PR至少2个reviewer通过 增量代码单元测试行覆盖率>=90% 每日运行 PR触发 长 稳 测 试 压力测试 稳定性测试 性能 测试 集成测试 单元测试 26
27. 未来规划 27
28. 未来规划 • 二三异步写 • RTC • io_uring • EC • 元数据备份 • Scrub • 更加丰富的长稳测试场景 28
29. Q & A 29
30. 更多技术干货 欢迎关注“美团技术团队” 30

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 18:55
浙ICP备14020137号-1 $Map of visitor$