Curve元数据节点高可用© XXX Page 1 of 30 Curve元数据节点高可用© XXX Page 2 of 30 1. 需求 2. 技术选型 3. etcd clientv3的concurrency介绍 3.1 etcd clientV3的concurrency模块构成 3.2 Campaign的流程 3.2.1 代码流程说明 3.2.2 举例说明Campagin流程 3.3 Observe的流程 Etcd集群与MDS1(当前leader)出现网络分区 4.2.5.1 事件一先发生 4.2.5.2 事件二先发生 4.2.6 异常情况4:Etcd集群的follower节点异常 4.2.7 各情况汇总 1. 需求 mds是元数据节点,负责空间分配,集群状态监控,集群节点间的资源均衡等,mds故障可能会导致client端无法写入。 因此,mds需要做高可用。满足多个mds, 但同时只有一个mds节点提供服务,称该提供服务 知的就是zookeeper和etcd, 考虑当前系统中mds有两个外部依赖模块,一是mysql, 用于存储集群拓扑的相关信息;二是etcd,用于存储文件的元数据信息。而etcd可以用于实现mds高可用,没必要引入其他组件。 使用etcd实现元数据节点的leader主要依赖于它的两个核心机制: TTL和CAS。TTL(time to live)指的是给一个key设置一个有效期,到期后key会被自动0 码力 | 30 页 | 2.42 MB | 6 月前3
Curve文件系统元数据管理of 24 Curve文件系统元数据管理(已实现)© XXX Page 2 of 24 1. 2. 3. 4. Inode 1、设计一个分布式文件系统需要考虑的点: 2、其他文件系统的调研总结 3、各内存结构体 4、curve文件系统的元数据内存组织 4.1 inode定义: 4.2 dentry的定义: 4.3 内存组织 5 元数据分片 5.1 分片方式一:i 1、设计一个分布式文件系统需要考虑的点: 文件系统的元数据是否全缓存? 元数据持久化在单独的元数据服务器上?在磁盘上?在volume上? inode+dentry方式?当前curve块存储的kv方式? 是否有单独的元数据管理服务器? 2、其他文件系统的调研总结 fs 中心化元数据 内存namespace元数据 内存空间分配元数据 元数据持久化 元数据扩展 小文件优化 空间管理单位 数据持久化 moosefs(mfs) 有元数据服务器 全内存 fsnode → hashtable(inode id) fsedge → hashtable (parent inode + name) 全内存 chunk → hashtable(chunk id) log + dump record 差 否 chunk 链式多副本 overwirte有数据不一致风险 chubaofs(cfs) 有元数据服务器 inode0 码力 | 24 页 | 204.67 KB | 6 月前3
Curve文件系统元数据Proto(接口定义)© XXX Page 1 of 15 curve文件系统元数据proto(代码接口定义,已实现)© XXX Page 2 of 15 1、代码结构和代码目录 curve文件系统是相对于curve块设备比较独立的一块,在当前curve项目的目录下,增加一个一级目录curvefs,curvefs下有自己独立的proto\src\test。 2、文件系统proto定义 2.1 mds.proto0 码力 | 15 页 | 80.33 KB | 6 月前3
Curve文件系统元数据持久化方案设计© XXX Page 1 of 12 元数据持久化© XXX Page 2 of 12 前言 Raft Log Raft Snapshot 持久化文件 key_value_pairs 其他说明 实现 1、inode、entry 的编码 2、KVStore Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft muliraft 存在的问题? redis 改造 vs 自己实现? redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 dump 到文件进行持久化© XXX Page 3 of 12 Raft Log +--- ------------+---------+ 持久化文件 字段 字节数 说明 CURVEFS 7 magic number(常量字符 "CURVEFS"),用于标识该文件为 curvefs 元数据持久化文件 version 4 文件版本号(当文件格式变化时,可以 100% 向后兼容加载旧版持久化文件) size 8 键值对数量 key_value_pairs / 键值对(当 size0 码力 | 12 页 | 384.47 KB | 6 月前3
古月《ROS入门21讲》4.编程极简基础.pdf0 码力 | 7 页 | 859.13 KB | 1 年前3
古月《ROS入门21讲》16.参数的使用与编程方法.pdf16.参数的使用与编程方法 主 讲 人 : 古 月 参数模型 创建功能包 参数命令行使用 ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 编程方法(C++) • • • parameter_config.cpp 配置代码编译规则 • • CMakeLists.txt 编译并运行发布者 编程方法(Python) • • • parameter_config.py 感谢观看0 码力 | 9 页 | 1.17 MB | 1 年前3
古月《ROS入门21讲》11.订阅者Subscriber的编程实现.pdf11.订阅者Subscriber的编程实现 主 讲 人 : 古 月 话题模型 创建订阅者代码(C++) • • • • pose_subscriber.cpp 配置订阅者代码编译规则 • • CMakeLists.txt 编译并运行订阅者 创建订阅者代码(Python) pose_subscriber.py • • • • 感谢观看 怕什么真理无穷,进一寸有一寸的欢喜0 码力 | 7 页 | 1.00 MB | 1 年前3
古月《ROS入门21讲》14.服务端Server的编程实现.pdf14.服务端Server的编程实现 主 讲 人 : 古 月 服务模型 创建服务器代码(C++) • • • • turtle_command_server.cpp 配置服务器代码编译规则 • • CMakeLists.txt 编译并运行服务器 创建服务器代码(Python) turtle_command_server.py • • • • 感谢观看 怕什么真理无穷,进一寸有一寸的欢喜0 码力 | 7 页 | 1.10 MB | 1 年前3
古月《ROS入门21讲》13.客户端Client的编程实现.pdf13.客户端Client的编程实现 主 讲 人 : 古 月 话题模型 创建功能包 创建客户端代码(C++) • • • • turtle_spawn.cpp 配置客户端代码编译规则 • • CMakeLists.txt 编译并运行客户端 创建客户端代码(Python) turtle_spawn.py • • • • 感谢观看 怕什么真理无穷,进一寸有一寸的欢喜0 码力 | 8 页 | 1.01 MB | 1 年前3
古月《ROS入门21讲》10.发布者Publisher的编程实现.pdf10.发布者Publisher的编程实现 主 讲 人 : 古 月 话题模型 创建功能包 创建发布者代码(C++) • • • • velocity_publisher.cpp 配置发布者代码编译规则 • • CMakeLists.txt 编译并运行发布者 创建发布者代码(Python) • • • • velocity_publisher.py 感谢观看0 码力 | 8 页 | 1.12 MB | 1 年前3
共 85 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9













