参与 R2CN 计划的开源项目

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

当前参与的开源项目

  1. Rk8s - Rust 重构 Kubernetes 项目
  2. Mega - Rust 重写 Git ,以及开源版 Google Piper 代码管理平台
  3. miniGU - Rust 实现的开源图数据库

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集成