Curvine:Rust编写的高性能分布式缓存系统

banq


Curvine 是一个用 Rust 编写的高性能、并发分布式缓存系统,专为低延迟和高吞吐量工作负载设计。

️ 架构设计

Curvine 采用主从架构:

  • 主节点:负责元数据管理、工作节点协调和负载均衡
  • 工作节点:负责数据存储和处理
  • 客户端:通过 RPC 与主节点和工作节点通信

该系统使用 Raft 共识算法确保元数据一致性,并支持多种存储策略(内存、SSD、HDD)以优化性能和成本。


应用场景

  • 场景1: 数据洗牌加速
  • 场景2: 热表数据加速
  • 场景3: 训练加速
  • 场景4: 模型分发
  • 场景5: 多云数据缓存

性能表现

Curvine 在高并发场景下表现优异,支持:

  • 高吞吐量数据读写
  • 低延迟操作
  • 大规模并发连接


核心特性

  • 高性能 RPC 框架:基于 Tokio 的异步通信框架,支持高并发请求处理。
  • 分布式架构:采用 Master-Worker 架构设计,支持水平扩展。
  • 多级缓存:支持内存、SSD 和 HDD 的多级缓存策略。
  • FUSE 接口:提供 FUSE 文件系统接口,可无缝集成到现有系统中。
  • 底层存储集成:支持与多种底层存储系统集成。
  • Raft 共识:采用 Raft 算法确保数据一致性与高可用性。
  • 监控与指标:内置监控与性能指标收集功能。
  • Web 界面:提供 Web 管理界面,便于系统监控与管理。

模块化架构

Curvine 采用模块化设计,主要由以下核心组件构成:

  • orpc: 一个支持异步 RPC 调用的高性能网络通信框架
  • curvine-common: 包含协议定义、错误处理和通用工具的共享库
  • curvine-server: 服务端组件,包含 Master 和 Worker 实现
  • curvine-client: 提供与服务器交互 API 的客户端库
  • curvine-fuse: FUSE 文件系统接口,支持将 Curvine 挂载为本地文件系统
  • curvine-libsdk: 支持多语言访问的 SDK 库
  • curvine-web: Web 管理界面和 API
  • curvine-tests: 测试框架与性能基准测试工具

系统要求

  • Rust 1.80+
  • Linux 或 macOS (Windows 支持有限)
  • FUSE 库 (用于文件系统功能)

️ 缓存文件系统访问
Rust API (原生集成推荐)

use curvine_common::conf::ClusterConf;
use curvine_common::fs::Path;
use std::sync::Arc;

let conf = ClusterConf::from(conf_path);
let rt = Arc::new(conf.client_rpc_conf().create_runtime());
let fs = CurvineFileSystem::with_rt(conf, rt)?;

let path = Path::from_str("/dir")?;
fs.mkdir(&path).await?;