Curve文件系统元数据持久化方案设计key_value_pairs 其他说明 实现 1、inode、entry 的编码 2、KVStore Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft 存在的问题? redis 改造 vs 自己实现? redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: std::string filePtah; // WAL dump (WAL : curvefs.waldump : curvefs.dump) }; Q&A© XXX Page 9 of 12 单靠 redis 的 AOF 机制能否保证数据不丢失? 不能,因为 AOF 与 SET/DEL 这些操作不是同步进行的,即使刷入文件配置项 开启最高级别的 always 选项,也有可能丢失一个事件循环的数据,实现如下: 持久化更不能),结论就是单靠 redis 无法保证数据 100% 不丢失(这主要是 redis 基于性能考量,毕竟纯内存数据库,如果利用 WAL 每次写文件再 sync,那么性能就会下降很多) 所以,单靠 redis 的方案是不行了. redis 的高可用、高可扩方案? 主要是 redis cluster + 主从复制 (或者第三方 codis + 哨兵) redis cluster/codis0 码力 | 12 页 | 384.47 KB | 6 月前3
Curve设计要点3.7 2.423 4K随机写 4K随机读 38% 34.5% 测试环境:6台服务器*20块SATA SSD,E5-2660 v4,256G,3副本场景高可用 核心组件支持多实例部署,允许部分实例异常 MDS、Snapshotcloneserver 通过 etcd 选主,实现高可用高可用 chunkserver 使用raft,2N + 1 个副本允许 N 副本异常自治 • 自动故障恢复0 码力 | 35 页 | 2.03 MB | 6 月前3
Raft在Curve存储中的工程实践复制状态机,而且提供了一种通用的基础库。基 于braft,可以基于自己的业务逻辑构建自己的分布式系统。 • braft本身不提供server功能,需要业务自己实现状态机。 Node(一个raft实例) int init(const NodeOptions& options); void apply(const Task& task); void add_peer(const PeerId& peer chunkserver:采用raft协议3副本的方式保存块 设备上的数据。 • snapshotCloneServer:卷的快照克隆服务,持久 化到S3中。Curve块存储RAFT应用 数据分布 • 每个raft实例用一个copyset管理,copyset是个逻辑 概念。写入chunk的数据,由copyset对应的raft完成 3副本的写入。 • multi-raft:copyset和chunkserver是多对多的关系0 码力 | 29 页 | 2.20 MB | 6 月前3
MySQL 兼容性可以做到什么程度ONE Does进入 Kubernetes 生态 04 When in Rome, do as the Romans do.参数设置 容灾部署 CDC 备库重搭 备库重搭 SQL审计 只读实例0 码力 | 18 页 | 3.02 MB | 6 月前3
Curve 分布式存储设计核心设计Curve块存储 1. physical pool用于实现对机 器资源物理隔离 2. zone故障隔离的基本单元 3. server表示物理服务器 4. chunkserver物理服务器上 的服务实例 拓扑结构Curve块存储 1. Curve块存储将虚拟块设备 映射到文件 2. 每个文件包含的chunk分散 在集群的存储节点 3. chunkserver按照故障域分组 4. copyset中的节点属于不同的0 码力 | 20 页 | 4.13 MB | 6 月前3
共 5 条
- 1













