参与 R2CN 计划的开源项目

R2CN 计划欢迎各类开源项目加入,只要符合 R2CN 计划的范围,即可提交申请; 同时 R2CN 计划也会根据需要主动邀请开源项目加入或发起开源项目。

当前参与的开源项目

  1. Rk8s - Rust 重构 Kubernetes 项目
  2. Mega - Rust 重写 Git ,以及开源版 Google Piper 代码管理平台
  3. miniGU - Rust 实现的开源图数据库
  4. RustFS - Rust 实现的分布式对象存储,用于平替MinIO
  5. gm-quic - Rust 实现的 QUIC 协议

Rk8s - Rust 云原生项目

项目地址r2cn/Rk8s

项目背景

Kubernetes 作为云原生领域的事实标准,已经成为现代容器编排和微服务架构的核心基础设施。然而,随着云原生技术的快速发展和企业对性能、安全性要求的不断提升,传统的 Kubernetes 实现面临着一些挑战:

  • 性能瓶颈:Go 语言实现的 Kubernetes 在高并发场景下存在 GC 停顿和内存开销问题;
  • 资源消耗:控制平面组件的资源占用较高,不利于边缘计算等资源受限场景;
  • 复杂性:庞大的代码库增加了维护成本和学习门槛;

Rk8s 项目旨在使用 Rust 语言重构 Kubernetes 的核心组件,打造一个更加安全、高性能、轻量级的云原生编排平台,并且针对 RISC-V 进行适配。Rust 作为系统编程语言,具有内存安全、零成本抽象、无运行时开销等特性,非常适合构建高性能的基础设施软件。通过 Rust 重构,我们期望实现:

  • 内存安全:利用 Rust 的所有权系统消除内存泄漏和数据竞争问题
  • 极致性能:零成本抽象和编译时优化带来更高的运行效率
  • 更低资源占用:无 GC 的特性减少内存占用和延迟抖动
  • 精简架构:采用模块化设计,开发一个精简版本的 Kubernetes,提升代码可维护性和扩展性

项目架构与设计

Rk8s 采用模块化架构设计,保持与 Kubernetes 的 API 兼容性,同时充分发挥 Rust 语言的优势。整体架构分为以下几个核心层次:

控制平面 (Control Plane)

  • 统一进程API ServerSchedulerController Manager 在同一个进程 rks 中实现;
  • Xline 替代 Etcd:采用 Xline 替代传统的 etcd 实现跨数据中心的一致性;

数据平面 (Data Plane)

  • 统一进程:所有的功能统一在一个 rkl 进程中实现,包括 kubelet 和 CRI/CSI/CNI 等接口的实现;
  • 网络功能:在 Rk8s 中我们将实现一个 Rust 版本的 flannel , 提供基本的网络功能用于集群的测试;
  • 容器运行时接口Youki 是目前唯一的 Rust 实现的 CRI 运行时,在 Rk8s 中使用 Youki 作为容器运行时;
  • Docker 的基本功能:在 rkl 将实现 dockerdocker compose 的基本功能,rkb 项目将实现 docker build 的功能, distribution 是一个独立的镜像存储;

核心设计原则

  • 内存安全优先:利用 Rust 的借用检查器在编译时防止内存安全问题;
  • 零拷贝优化:在数据传输和序列化过程中最大化性能;
  • 异步并发:基于 async/await 模型处理大量并发请求;
  • 模块化架构:清晰的模块边界,便于测试、维护和功能扩展;
  • 有限兼容:不会对 Kubernetes 实现完全兼容的工作,而是尽量保持功能的类似;

Rk8s 项目的目标是将为云原生生态系统提供一个更加现代化、高性能的 Kubernetes 实现,特别适用于边缘计算、高性能计算和资源敏感的生产环境:

rk8s 是一个实验性的项目,目前处于项目的早期阶段,实习方向分为 存储网络虚拟化 三个方向,根据实习学生的不同背景和兴趣,选择不同的方向进行实习。

Mega - Rust Monorepo 引擎

项目地址web3infra-foundation/mega

子项目地址

项目背景

  • 单一代码仓(Monolithic/Monorepo)成为大规模研发的可行路径 - 大型组织在统一版本、原子提交、跨团队重构与共享工具链方面受益显著。Google Piper 的工程实践表明,单仓模式在具备配套工具的前提下可以支撑超大规模协作;
  • 当下开源协作以 Git/GitHub 为中心,存在集中化与碎片化的张力 - 以 “一个组织一个事实源” 的一体化代码管理有利于一致性与治理;同时,社区又需要跨平台、跨组织的去中心化协作能力;
  • Mega 项目的目标 - 在兼容 Git 的前提下,提供 “单仓管理 + 单体代码库治理 + 去中心化协作” 的一体化开源实现,面向企业/科研/大型社区的日常研发与开放协作;

项目架构与设计

  • Mono - 组织/团队级的一体化代码仓与协作平台(后端引擎 + Web UI),聚焦统一版本、权限治理、MR/Issue、Git/LFS 兼容、策略化合规等。
  • Mega - 开发者本地的独立 App,可相互连接,形成去中心化开源协作网络(以零信任网络与联邦式社交为基础设施)。
  • 技术目标
    • 100% Git 兼容的读写路径与迁移能力;
    • 集成 Buck2 作为平台默认的大型构建系统;
    • 对 “单仓/单体” 场景的高效目录/对象管理;
    • 面向大型组织的策略化权限与审计;
    • 渐进式引入去中心化能力(节点、对象分发、社交联邦);

Mega 实习项目任务方向:

  • Mono 协作平台相关功能的开发;
  • 集成 Buck2 作为构建系统;
  • 跨平台的去中心化 App 开发;

前端 React 实习方向:

如果有意参加前端页面的开发工作,请直接联系 yetianxing2014@gmail.com 申请中国科学院软件研究所的实习,无需参加 R2CN 实习。

miniGU - 图数据库

项目地址TuGraph-family/miniGU

项目背景

数据库技术是数据管理技术中的基础设施技术,嵌入式数据库因其轻量级易用和高性能的特性,受到开源社区开发者的欢迎,这一方向的标杆项目有DuckDB等。嵌入式数据库备受关注的原因有:

  • “大数据已死”:数据管理领域,用户的数据规模分布呈Powerlaw分布。且随着CPU、SSD等硬件的发展,大部分场景的数据规模并未超出单机可以处理的数据规模
  • 嵌入式数据库的优势:无状态数据库,免去运维成本,使用简单轻便,即使需要持久化数据库文件,可以手动触发io的方式实现。Database从service变成了job,在无强SLA要求的场景可以免去运维成本

嵌入式数据库适用于数据规模较小、无需复杂运维的场景,用户画像包括中小企业、开源社区开发者和数据分析师/科学家。miniGU是TuGraph社区发起的,旨在为开发者提供简单易用的支持深度关联数据分析的嵌入式图数据库。

项目架构与设计

miniGU采用如下原则进行设计和开发:

  • 模块化设计:为了更方便开源社区的使用习惯,项目采用模块化设计的方式
  • 语言选择:因为其出色的安全性、高开发效率和性能,项目选择Rust语言开发。 在此原则上,miniGU架构上还有如下的经典数据库模块:
  • 词法解析器
  • 语法解析器
  • 逻辑计划生成模块
  • 执行计划优化器
  • 执行引擎
  • 存储模块

近期拟发布任务以及实习方向:

  • 查询引擎方面
    • 某些语句的端到端实现(当前已有查询引擎的完整链路,未支持语句的实现可能涉及到词法语法的修改以及算子的实现)(此类场景占据大部分)
    • 基于基数估计的优化器
  • 图存储方面
    • 持久化存储支持(当前已有内存图存储实现)
    • 基于CSR结构的图存储MVCC实现
  • 多端支持
    • Python接口封装
    • WASM集成

RustFS - 分布式对象存储

项目地址RustFS/RustfsFS

项目背景

存储是整个计算机系统的底座,随着存储量的近年来不断的复合增长。在AI训推、数据湖、智慧工厂、智能制造等领域大量使用到对象存储。主要表现为以下几点:

  • 存储和计算分离,将存储和计算进行分离降低企业的存储成本;
  • AI训练前采集大量的非结构数据,变为半结构化数据,变为结构化数据, 对象存储已经支持了向量数据存储;
  • 结构化和非结构化数据进行分离,使数据库存储的使用块存储,而95%以上的非结构化数据使用对象存储降低企业的存储成本;
  • 现代数据湖中的半结构化数据、json数据、列式数据可以通过对象存储直接存储。

这个对象存储项目分成两个目标: 第一个目标:立足于解决传统存储降本和数据湖存储的目标; 第二个目标:支持RDMA、GDS、向量存储,支持AI 训练和推理领域。

RustFS结合了Rust语言的强大特性,打造了一个既安全又高性能的分布式存储解决方案,特别适合对性能和可靠性要求高的企业级应用。

项目架构与设计

RustFS采用如下原则进行设计和开发:

  • 无元数据中心设计:无元数据中心,可以方便的提升用户的部署难度,采用单机单盘的模式快速完成部署;
  • 语言选择:因为其出色的安全性、高开发效率和性能,项目选择Rust语言开发;
  • 云原生设计:非我核心功能,不参与开发,将周边的图表、监控、日志全部交于云原生的其他组件和软件支持。

技术目标:

  • 全面优化分布式的读写速度,让其成为全世界最快的对象存储;
  • 支持RDMA,供人工智能企业可以快速降低成本;
  • 支持GDS(GPU 直联存储),全面提升AI的整体训推速度;
  • 支持S3的向量存储的新特性。

近期拟发布任务以及实习方向:

  • 优化方向
    • 优化读写速度
    • 优化网络通信速度
  • 向量支持
    • 研究和实现S3向量支持
  • AI领域
    • RDMA网络支持
    • 使对象存储能够实现GPU直联存储支持

gm-quic - QUIC传输协议

项目地址genmeta/gm-quic

项目背景

网络作为连接计算机世界的纽带,通过互联互通实现信息的高速交流和资源共享, 自互联网诞生以来,TCP/IP协议、HTTP协议服务着互联网几十年而经久不衰。 近几年,随着QUIC协议的标准化,QUIC协议给互联网传输协议带来一波新的变化:

  • 原生安全,与TLS/1.3深度捆绑
  • 原生多路复用、独立流级别的拥塞与流量控制,彻底解决队头阻塞
  • 支持多路径传输,WiFi、移动网络以及它们的IPv4、IPv6可以同时作用于一条连接
  • 支持连接迁移,提升移动边缘设备网络体验
  • 0-RTT/1-RTT建连,减少首包延迟
  • 用户态实现,方便快速迭代拥塞控制与速率算法

gm-quic项目致力于用异步 Rust 实现一个工程化、可扩展、便于集成到上层应用 (如自定义 RPC、HTTP/3、游戏实时传输、边缘分发)的 QUIC 协议栈, 在安全性(内存安全/竞争规避)、性能(数据拷贝/异步IO/加解密)以及 可测试性(模拟丢包/时延/随机抖动)方面提供一套现代化传输基础设施。

项目架构与设计

gm-quic采用如下原则进行设计和开发:

  • Rust安全模型:避免内存越界/并发数据竞争
  • 原生异步:基于异步Rust和tokio运行时,充分发挥IO性能
  • 分层架构:QUIC内部也存在很多层,包括协议层、路由层、加解密层、流控层,通过分层架构可让复杂的QUIC逻辑变得简单清晰

技术目标:

  • 全面支持标准QUIC协议如无状态重置等功能,及其QUIC周边扩展如qlog、qnat等
  • 高效缓冲管理:通过Bytes/自定义缓冲区管理,降低内存拷贝开销
  • 可插拔:支持Reno、Cubic、BBRv3等拥塞控制算法,拥塞控制策略可动态更新替换
  • 可测试性:接入QUIC Interop runner,与其他QUIC实现充分交叉测试
  • 基于QUIC构建跨域互联全连接方案,支撑智能体网络、算力网络等网络安全可信、高效通信

近期拟发布任务与实习方向:

  • 连接管理
    • 连接保活定时心跳机制,心跳间隔妥善处理好与max_idle_timeout参数之间的关系
    • 优化:连接对方时,只需一个域名,无需传入IP,内部DNS自动获取目标地址
  • 连接内部统计
    • 每个连接独立地动态统计各自的所有流加在一起的,待发送数据大小、Inflight数据大小
  • 多路径协作
    • 当某一条路径,对方处于连续pto超时这种不确定状态时,应立即停止发送有效数据,并进行路径验证
    • 当待发送数据持续在高水位时,激活更多路径参与传输;反之,减少活跃路径。并且将各条路径,按照内网优于外网,IPv6优于IPv4,WiFi优于移动网络的原则下进行调度
    • 当所有路径都在路径验证时,对应用层给出WARN事件及时反馈,让应用层及时处理可能的潜在异常