Curve文件系统元数据持久化方案设计Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft 存在的问题? redis 改造 vs 自己实现? redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 中有许多数据结构可供使用,如 (哈希、列表、set、sort_set),但对于目前的需求来说,我们内存数据结构使用的是 C++ STL 中的哈希表(unsorted_map),之后有可能根据需求换成 B+ 树或跳表,但是 redis 中的这些数据结构我们是不需要的 另外,如果 C++ 中的哈希表在后期使用中发现性能不达标的话(特别是在 rehash 扩桶的时候),我们可以把 redis 中的哈希表借鉴过来用(redis 中的哈希表借鉴过来用(redis 中的哈希实现很独立,单独的文件 t_hash.c,其性能表现也非常好) redis 哈希表实现主要优点参考以下 总的来说,我们只是参考 redis 持久化实现,而 redis 中的大头(各类数据结构、模块化、主从复制、集群等这些都是我们目前不需要的),因此去改造 redis 感觉不是很划算 redis 中哈希表实现的优点? 主要是当哈希表需要扩桶的时候,rehash 过程中 redis0 码力 | 12 页 | 384.47 KB | 6 月前3
新一代云原生分布式存储要素 — 数据分布 无中心节点:哈希算法 INPUT (Offset, Len) HASH HASH mod 72 (DiskNums) (0, 4MB) 163342856 2 58 (4MB, 8MB) 759463473 9 3 (8MB, 16MB) 342165799 5 51 • 映射信息无需记录,直接通过计算获得 • 伪随机算法在服务器数量特别大的时候接近均衡 OSD:Object Storage Device, 管理一个磁盘的进程架构简介 — 数据放置 使用多级哈希的方式 使用CRUSH算法根据pgid获得指定的副本个数的id osd.1, osd.2, osd.3 对ObjectID进行哈希并取模(复制组数量)得到pgid head_D35c9011 根据 offset, len, name.. 生成ObjectID0 码力 | 29 页 | 2.46 MB | 6 月前3
Curve文件系统元数据管理→ skip list (key是name,每个目录下一个) 计算出来的 binlog,随时间会越来越大 差 DG Master/Slave glusterfs 无中心化服务器 dht算法 hash 扩展时大量迁移 client缓存 inode→ hashtable(gfid) dentry→ hashtable(name) inode扩展属性字段 和写数据一样 好 用多台元数据服务器需要对元数据进行合理的分片。 当前的一个可行方案是按照inodeid进行分片。分片算法如何设计,热点如何解决下半年细化,当前简单按照算法为 serverid = (inodeid / inode_per_segment) mod metaserver_num 进行分片。分片算法的具体实现不影响下面的讨论。 比如说分片规则按照每个分片管100个inodeid,如果有3个meta0 码力 | 24 页 | 204.67 KB | 6 月前3
Curve 分布式存储设计KVM块存储服务 3. iSCSI协议 4. 容器云块存储(CSI) 应用场景Curve块存储 1. 高可用性/高可靠性 (易运维) 2. RAFT一致性协议 3. CopySet分配算法 4. 拓扑结构 5. 高性能 6. chunkfilepool (降低写放大) 7. data stripe (增大并发) 8. zerocopy 9. 云原生 核心设计Curve块存储0 码力 | 20 页 | 4.13 MB | 6 月前3
Raft在Curve存储中的工程实践然后把执⾏的结果返回给客户端。 • 提供命令在多个节点之间有序复制和执行,当多个节 点初始状态一致的时候,保证节点之间状态一致。 raft日志复制RAFT协议简介 raft配置变更 • 配置:加入一致性算法的服务器集合。 • 集群的配置不可避免会发生变更,比如替换宕机的机器。 直接配置变更可能出现双主问题 • 共同一致(joint consensus) • 集群先切换到一个过渡的配置(old +0 码力 | 29 页 | 2.20 MB | 6 月前3
Curve质量监控与运维 - 网易数帆实现思路 开发 大需求 设计文档 POC 开发 7/33设计文档规范 设计文档需要具备以下内容: 修订记录 审批记录 系统介绍 相关调研 架构 重要流程 关键算法 接口 数据库设计 非功能特性设计 参考文献 8/33代码编写规范 Curve代码编写规范遵循Google Style Guides(https://google.github0 码力 | 33 页 | 2.64 MB | 6 月前3
共 6 条
- 1













