Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GLCC 赛题] 使用纯异步 Rust 实现高性能可扩展的通用网关系统 #71

Open
cloudwegoIce opened this issue May 23, 2022 · 2 comments

Comments

@cloudwegoIce
Copy link

cloudwegoIce commented May 23, 2022

🚩GLCC 高校编程夏令营赛题
👏欢迎大家参与~

GLCC 是由中国计算机学会举办的高校开源编程夏令营活动,活动为项目准备了开源奖学金。请在以下链接中报名参与⬇️
报名链接: https://www.gitlink.org.cn/glcc/subjects/detail/287
关于issue相关问题、解题思路的答疑将在群内进行

image

1、题目描述
目前生产环境中大量 Nginx 作为入口网关。而由于 Nginx 使用 C 语言编写,且高度耦合底层系统调用,所以在可扩展性上较为欠缺,二次开发成本较高,且组件不易复用。多年来尽管拥有能力极强的贡献者,还是产生了很多由于内存安全导致的漏洞,影响生产环境安全性。
近年来 Caddy 补足了 Nginx 的上述问题,并集成 ACME 大大提高了易用性,但是使用 Golang 开发在降低二次开发难度的同时也带来了一系列的性能问题(有 Go 编译器本身的原因,也有 GC 和网络模型的原因,会导致在大规格机器上表现较差),不具备大规模生产可用性。
Rust 语言兼具了性能和内存安全,对于 Gateway 是最理想的语言。基于我们开源的 Monoio,可以在不牺牲性能的前提下,做到对平台(Linux、Windows 等)、底层系统调用(如 io_uring 与 epoll)的屏蔽。
使用 Rust 开发纯异步的通用网关系统,可以为生产环境提供可证明的安全性、最佳的性能和可扩展性。

2、编码任务

  • 基于 Monoio 完善 HTTP 框架
  • 实现可插拔 Gateway 主框架,并实现 TCP / h1 / h2 组件
  • ACME 支持(类似 Caddy)
  • QUIC 支持

3、技能要求和编程语言
Rust 语言、网络编程

4、预期完成结果

  • 提供可扩展的生产可用的 Gateway
  • 较完善的 TCP / h1 / h2 / QUIC / ACME 组件支持
@cloudwegoIce cloudwegoIce changed the title 使用纯异步 Rust 实现高性能可扩展的通用网关系统 [GLCC 赛题] 使用纯异步 Rust 实现高性能可扩展的通用网关系统 May 30, 2022
@PeakerChen
Copy link

Gateway roadmap?

@ihciah
Copy link
Member

ihciah commented Dec 29, 2023

Gateway roadmap?

Now this project is under development internally and will be open-sourced soon(within 2 months). I will post it here once open-sourced.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants