CurveFS方案设计© XXX Page 1 of 14 CurveFS方案设计(总体设计,只实现了部分)© XXX Page 2 of 14 时间 修订人 修订内容 2021-03-23 李小翠 初稿(背景,调研,架构设计) 2021-03-30 李小翠 增加快照部分 2021-04-13 李小翠、陈威 补充元数据数据结构 2021-04-19 李小翠、吴汉卿、许超杰等 补充文件空间分配,讨论与确认 背景 背景 调研 开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 文件空间管理 开发计划及安排 背景 为更好的支持云原生的场景,Curve需要支持高性能通用文件系统,其中高性能主要是适配云原生数据库的场景。当前Curve是实现了块存储,向上 结果是合理的,分布式的元数据设 调研测试 计会涉及到多次rpc的交互。这里需要确认的一点是:我们需要怎样的元数据节点的性能? 可行性分析 方案对比 根据上述调研和测试结果,我们考虑了三种curvefs的元数据设计方案: CurveFS kv方案设计 curve实现块设备时,元数据不是扁平化的设计,而是采用来有目录层级的 namespace 方式,namespace 已经实现了 fs 元数0 码力 | 14 页 | 619.32 KB | 6 月前3
CurveFS rename 接口实现方案rename 接口实现方案(已实现,选用方案二)© XXX Page 2 of 15 1. 2. 3. 4. 1. 2. 1. 3. 1. 2. 背景 方案调研 Chubaofs Juicefs 方案实现 方案一:chubaofs 方案二:事务方案 方案三:利用 KV 自带的分布式事务 Q&A 1. 是否需要实现跨文件系统的 rename 存在) 4. 当 2 个操作的 dentry 属于同一个 copyset 有什么不一样? 背景 当前 curvefs 并没有实现 rename 接口,本文档是对 rename 接口实现的调研及方案设计。 rename 操作,主要操作的是 dentry,如 rename /dir1/file1 /dir2/file2,主要有 2 个步骤:(1) 删除 file1 的 dentry,(2) 增加 inodeid 等同 file1 的 inode id)。 关于 rename 接口的实现,主要调研了 chubaofs 和 juicefs,而 rename 的实现难点主要在于其原子性的保证。 方案调研 Chubaofs chubaofs 中的 rename 实现不是原子性的,它是通 用创建源文件的硬连接,然后删除源文件的方式来实现的,主要有以下 4 步 : 将源文件的 nlink 加一0 码力 | 15 页 | 555.93 KB | 6 月前3
Curve文件系统空间分配方案© XXX Page 1 of 11 Curve文件系统空间分配方案(基于块的方案,已实现)© XXX Page 2 of 11 背景 本地文件系统空间分配相关特性 局部性 延迟分配/Allocate-on-flush Inline file/data 空间分配 整体设计 空间分配流程 特殊情况 空间回收 小文件处理 并发问题 文件系统扩容 接口设计 RPC接口 空间分配器接口 背景 根据 ,文件系统基于当前的块进行实现,所以需要设计基于块的空间分配器,用于分配并存储文件数据。 CurveFS方案设计(总体设计,只实现了部分) 本地文件系统空间分配相关特性 局部性 尽量分配连续的磁盘空间,存储文件的数据。这一特性主要是针对HDD进行的优化,降低磁盘寻道时间。 延迟分配/Allocate-on-flush 在sync/flush之前,尽可能多的积累更多的文件数0 码力 | 11 页 | 159.17 KB | 6 月前3
Curve支持S3 数据缓存方案© XXX Page 1 of 9 Curve支持S3 数据缓存方案© XXX Page 2 of 9 版本 时间 修改者 修改内容 1.0 2021/8/18 胡遥 初稿 背景 整体设计 元数据采用2层索引 对象名设计 读写缓存分离 缓存层级 对外接口 后台刷数据线程 本地磁盘缓存 关键数据结构 详细设计 Write流程 Read流程 ReleaseCache流程 因此需要通过Cache模块解决以上2个问题。 整体设计 整个dataCache的设计思路,在写场景下能将数据尽可能的合并后flush到s3上,在读场景上,能够预读1个block大小,减少顺序读对于底层s3的访问频次。从这个思路上该缓存方案主要针对的场景是顺序写和顺序 读,而对于随机写和随机读来说也会有一定性能提升,但效果可能不会太好。 元数据采用2层索引 由于chunk大小是固定的(默认64M),所以Inode中采用map方案。 写缓存一旦flush即释放,读缓存采用可设置的策略进行淘汰(默认LRU),对于小io进行block级别的预读。 即读写缓存相互没影响不相关, 缓存层级 缓存层级分为fs->file->chunk->datacache 0 码力 | 9 页 | 179.72 KB | 6 月前3
云原生 DevOps 平台 Zadig 产品介绍云原⽣ DevOps 平台 企业咨询 产业数字化 研发加速度 产品介绍 01 公司介绍 KodeRover 是国内云原⽣ DevOps 领域的领军企业,帮助企业提升产 研⼯程化⽔平,加速产业数字化进程,快速响应市场需求。核⼼团 队由国内外云计算、DevOps、⼯程运筹学领域专家组成,已连续完 成由盈动和经纬领投的天使轮/PreA 轮融资。公司旗舰产品云原⽣ DevOps 平台 Zadig 正 正成为软件研发的新标配,软件交付领域的规则 制定者,开启了软件交付 3.0 时代。 02 产品介绍 公司⾃主研发的旗舰产品 Zadig 在 GitHub 上核⼼开源,⽤平台⼯程 ⽀撑软件研发全⽣命周期,让产研⾼效协同,稳定迭代。Zadig 内 置了 K8s YAML、Helm Chart、主机等复杂场景最佳实践,适⽤云原 ⽣转型/上容器云、研发效能提升、⼤规模微服务环境治理、研发 数字化转型等应 团队借鉴学习的。” Zadig 理念 & 应⽤ Zadig 具备丰富的开放能⼒ 可以集成⼀切 Zadig 产品特性 路特斯某运维团队,抛弃传统⼯具,⽤ Zadig 将研发重复性事务⾃动 化、平台化,⼤幅度缩短新项⽬投产时间,轻盈应对全球多云复杂交 付场景。践⾏“SIMPLIFY,THEN ADD LIGHTNESS”哲学,⽤软件研发能⼒赛 出 F1 性能! 极氪某部⻔,使⽤ Zadig 实现软件研发0 码力 | 8 页 | 18.50 MB | 1 年前3
CurveFS对接S3方案设计© XXX Page 1 of 11 curvefs对接s3方案设计(过程文档)© XXX Page 2 of 11 时间 修订人 修订内容 2021-05-20 胡遥 初稿 2021-07-20 胡遥 细化write和read流程 整体架构 整体思路 接口和关键数据结构 mds.proto client端数据结构 metaserver.proto space相关数据结构和proto0 码力 | 11 页 | 145.77 KB | 6 月前3
CurveFS S3本地缓存盘方案Curvefs-S3 本地写缓存盘方案© XXX Page 2 of 9 背景 方案设计 主要数据结构定义 方案设计思考 POC验证 背景 当前,s3客户端在写底层存储的时候是直接写入远端对象存储,由于写远端时延相对会较高,所以为了提升性能,引入了写本地缓存盘方案。也即要写底层存储时,先把数据写到本地缓存硬盘,然后再把本地缓存 硬盘中的数据异步上传到远端对象存储。 方案设计© XXX Page 3 int loadAllCacheReadFile() {}; private: std::string CacheReadDir_;© XXX Page 8 of 9 }; 方案设计思考 本地硬盘如何管理 借用linux本地文件系统进行管理,存储进本地硬盘的内容以文件的形式来表现。 配置一个目录用于本地硬盘的文件管理,对作为缓存盘的本地硬盘进行格式化并挂载到该目录(如0 码力 | 9 页 | 150.46 KB | 6 月前3
Curve文件系统元数据持久化方案设计key_value_pairs 其他说明 实现 1、inode、entry 的编码 2、KVStore Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft 存在的问题? redis 改造 vs 自己实现? redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: 无法保证数据 100% 不丢失(这主要是 redis 基于性能考量,毕竟纯内存数据库,如果利用 WAL 每次写文件再 sync,那么性能就会下降很多) 所以,单靠 redis 的方案是不行了. redis 的高可用、高可扩方案? 主要是 redis cluster + 主从复制 (或者第三方 codis + 哨兵) redis cluster/codis 主要解决扩展性的问题,它会进行分片,每个0 码力 | 12 页 | 384.47 KB | 6 月前3
爱奇艺 CDN 运维平台实践-张强爱奇艺CDN运维平台实践 张强 爱奇艺基础架构部 研发总监 爱奇艺CDN运维平台实践 张强 爱奇艺基础架构部 研发总监 自我介绍 Ø 2009~2014: 在Intel中国研究中心从事移动OS相关开发工作,先后负责过移动OS Package Manager、工具链等模块的设计与研发工作 Ø 2014年加入爱奇艺,主导了CDN数据平台、CDN调度平台、CDN运维平台研发上线, 目前负责CDN相关产品开发和运维工作 目前负责CDN相关产品开发和运维工作 01 爱奇艺CDN概况 02 运维痛点分析 03 运维平台架构设计 04 平台应用&实践 05 总结&展望 目录 01 爱奇艺CDN概况 数据增长趋势 节点分层策略 CDN 节点特点 爱奇艺CDN数据增长趋势 2014 2019 2015 2018 2016 2017 CDN设备量增长8倍 分布区域增长10倍 带宽增长20倍 爱奇艺CDN节点分层 日常软件、配置升级不可控 l 一些案例: Ø 数据统计 l 实时性差 l 迭代效率低 l 开发繁琐 Ø 设备管理 03 运维平台设计 架构演进大事记 整体架构设计 通用代理服务集群设计(Promise) 运维任务模型设计 应用配置管理 权限管理 运维平台Fast 整体架构 API接入层 通用代理服务(Promise) HTTP传输 ZMQ-Proxy KCP-Proxy 任务模板0 码力 | 34 页 | 1.75 MB | 1 年前3
Zadig 面向开发者的云原生 DevOps 平台面向开发者的云原生 DevOps 平台 角色: 产品 / 架构 开发 测试 运维 运维 / 开发 技术支持 事件 需求设计 架构设计 拆任务、写代码 代码集成 xN 单元测试验证 xN 代码扫描 xN 自测、联调 xN 集成验证 xN 写测试用例 系统验证 xN 自动化测试 xN 性能测试 xN 安全测试 xN 数据变更 xN 重视开发者体验,工程师不再做脏活累活 传统 DevOps 体系 Zadig 云原生 DevOps 平台 高人效 低人效 低人效 / 低质量 / 低效率 / 高成 本: 人淹没在系统的海洋里,无数平台手工切换 高人效 / 高质量 / 高效率 / 低成 本: 人在系统之外 / 上,复杂性下沉到单一平台 希望 工程师不再花时间在开发写代码之外的脏活累活,比如服务部署、找环境,服务编排等 Infra 优 化 、 开 发 者 体 验 增 强 2023 年 面向生态伙伴开放场景 面向开发者提供 IDE 插件 / 自测环境 通用工作流广泛链接生态赋能开发者 企业解决方案和最佳实践内置 发布 AI 增强解决方案 企 业 开 放 性 、 A I 能 力 增 强 产品发展历程 高频极速迭代: Zadig 开源 29 个月共迭代 21 个版本 “ ” 开发者常处于 今天发版、明早升级0 码力 | 59 页 | 81.43 MB | 1 年前3
共 128 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13













