美团分布式⽂件存储EFS

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 美团分布式文件存储EFS 美团基础技术部
2. 自我介绍 • 2015年毕业于华中科技大学 • 2015年入职美团,从事分布式KV缓存Squirrel相关研发工作 • 目前主要负责分布式文件存储相关工作
3. ·EFS简介 目录 ·架构设计 ·落地实践 ·未来规划
4. 01·EFS简介
5. EFS(Elastic File System) 一个兼容POSIX接口、高可扩展、高可用的分布式文件存储服务 EFS支持完全兼容POSIX接口的文件系统语义,完 备的目录树功能以及文件随机读写特性的支持,可以更 方便的让PaaS服务实现其存储计算分离的架构改造。同 时,分层的架构设计中每一个存储引擎对接底层MStore 的所有存储节点,并且对每个文件都进行分片并发处 理,使得它可以轻松实现极高的并发和吞吐,满足高性 能文件存储需求。 ES DTS HULK EBS EFS …… MStore
6. Why EFS 缺乏文件系统接口的数据共享存储服务 像客服录音、无人配送地图等业务场景,需要上传之后在多个业务机器共享。对象存储可以做到数据共享,但是不 支持文件系统接口,业务对接成本较高。块存储可以支持文件系统方式访问,但是无法支持多点挂载,做不到数据 共享。 PaaS系统对接MStore完成存储计算分离的成本高 MStore不支持目录树,而且对随机读写的支持并不完备,PaaS对接的研发成本很高。虽然直接对接MStore可以 实现更低的端到端访问延迟,但是对很多延迟不敏感的PaaS来说,如何降低研发成本和系统复杂度才是他们考虑 的重点。 缺乏AI机器学习等场景需要的高性能文件系统 在AI机器学习等业务场景,有许多框架会依赖分布式文件系统来做模型和特征存储,并且在这些场景下,文件系统 的并发和吞吐能力,将直接影响其上任务的运行效率。
7. 02·架构设计
8. 设计目标 文件系统 共享:多点挂载 随机读写 分布式高可用
9. 整体架构 Meta MetaServer Client MetaServer (主) Raft MetaServer EFS Data DataServer DataServer MStore DataServer MStore
10. Client Fuse User FileSystem 用户在接入的时候,除了业务本身为了向共享存储做的 代码改造,其他文件系统相关操作无需任何修改。内核 下定制开发文件系统难度较高,在用户空间实现文件系 统开发简单,开发周期短,且方便调试。即使代码有 bug,也不会导致系统崩溃。目前业界开源的文件系 统,moosefs、cephfs、juicefs、chubaofs等都是基 于fuse实现文件系统的接入, 其中cephfs支持内核态的 客户端。 User Application VFS FuseLibrary FuseDriver Kernel FileSystem LocalStorage
11. Client EFS-Client open(“/mnt/fuse/file”,O_CREATE | create():rpc MetaServer O_RDWR) efs_create() /mnt/fuse libfuse User fuse_create_open() pipe Kernel VFS Fuse DataServer
12. Meta设计 元数据存储 Client 侧实现了FUSE 的文件操作接口,但实际上相关的元数据信息都是存储在MetaServer,如何高效的处理文 件系统元数据是首先要解决的问题。 高可用 MetaServer保存了整个文件系统的元信息,它的可用性至关重要; 同时,MetaServer也负责DataServer的高可用调度、生命周期管理。 Placement 作为Client 与 DataServer的桥梁,MetaServer保存了文件具体需要在哪个DataServer上处理的相关信息。
13. MetaServer Raft组保证元数据的高可用 MetaServer (主) RocksDB MetaServer RocksDB Raft 元数据KV存储 Client Session管理 MetaServer RocksDB DataServer生命周期管理 回收站管理 InodeTable DirTable Column Family Key Value volume {type, mode, uid, …} i$inode Column Family Key volume Value d$inode$name {inode, type}
14. MetaServer(回收站) .trash • rename 到 trash/current 目录下 • 后台定期将文件归档到分钟级目录(代表什么时候可以直 接删除) • 回收站内仅支持查看/删除 current yyyyMMddhhmm yyyyMMddhhmm
15. MetaServer(Placement) Volume(Inode 0 ~ ∞) Volume Range Inode(0~100000) Inode(100000~200000) GroupIndex = inode % GroupCount Group Group_0 Group_1 Group_2 Group_3 DataServer DataServer Inode……. (Inode 与 Group 的映射规则) MetaServer事先决策 Group 映射到具体的DataServer DataServer DataServer
16. Data设计 存储引擎 类LSM-tree的存储引擎,EFS通过将随机写转为顺序写来支持随机写操作。 高可用 一方面,DataServer的无状态,保证了在任一DataServer宕机的情况下可以由另外一个DataServer去重新负责相 关的数据读写;另一方面,通过主备模式进一步的减小其中的不可用时间。
17. DataServer(引擎) Rotate 2.Update Index WriteRPC Group Key : inode, o set, length Value : blob_id, blob_o set UpdateTable ImmTable 1.Write Data (inode, o set, length, data) WriteAheadLog(LogBlob) WAL … WAL WAL WAL Dumped Dumped 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k … 4k 4k 异步Dump ExtentBlob(4k) ExtentBlob ExtentBlob(16K) ExtentBlob ExtentBlob ExtentBlob(64M) ExtentTable (LSM-tree)
18. DataServer(主备) WAL-64 WAL-65 WAL-66 WAL-67 WAL-68 WAL-69 ImmTable WAL-70 WAL-71 UpdateTable ExtentTable(LSM-tree) SST wal LogBlob的最新数据 数据冗余 在另外的一个进程中读打开LogBlob,无法获 取最新的数据,需要写打开的客户端来传递最 新⻓度 时间序上,我们根据SST中保存的ExtentBlob 数据,加上相对更多的 WAL 数据就能恢复出 全量数据。
19. DataServer(主备) WriteRPC 同步索引 Group(主) Update ReadRPC Imm Extent Group(备) Update Imm Extent ReadOnly ReadWrite MStore 扩展读能力 提高可用性 在热备节点上提供读能力,一方面扩展了 Group的读能力;另一方面DataServer可以多 机房部署,从而实现业务节点的机房就近读。 在DataServer故障的时候,可以在备节点上更快的 启动主Group(切换到主只需要追加WAL少量的最 新数据索引即可),缩短了系统不可用时间
20. 03·落地实践
21. DTS(数据传输服务) 改造前 Binlog Reader RingBu er (in memory) BinLog (in disk) Binlog Reader(备) Writer RingBu er (in memory) Writer BinLog (in disk) Writer 输入到下游 输入到下游 输入到下游
22. DTS(数据传输服务) 改造后 Writer Binlog Writer Reader 输入到下游 输入到下游 RingBu er (in memory) Writer BinLog (in EFS) 输入到下游
23. ElasticSearch 1.Write Primary 3.Write 2.Write Local Engine 1.Write 6.Update Index 3.Write Primary .定期 sync index 3.Update Index .定期 sync index 5.Response Replica Replica Replica Replica 2.Write EFS 4.Write Local Engine 4.Write Local Engine EFS
24. 04·未来规划
25. 可用性提升 增加故障场景下的可用性演练,提升各种极端场景下系统的可用性 降成本 优化存储引擎,充分利用底层LogBlob的压缩特性,来实现降成本的需求。 云原生 可以帮助业务更加便捷的接入存算分离的架构 性能优化 优化海量小文件场景下的读写性能 可观测 持续迭代EFS可观测性,构建全链路监控
26. Q&A
27. 更多技术干货 欢迎关注“美团技术团队” 美团存储团队 招聘岗位请扫码

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