GLCC 开源编程夏令营开营 — CloudWeGo 精选优质赛题等你来解答!

GLCC 开源编程夏令营开营 — CloudWeGo 精选优质赛题等你来解答!_第1张图片

随着开源文化的普及,越来越多的高校开发者参与到了 CloudWeGo 开源社区的建设中来,也有越来越多的高校 Contributors 成为了社区发展的中流砥柱。

为了更好地帮助高校开发者找到参与项目的方向,更有针对性、更有挑战性地参与到社区项目开发中,字节跳动基础架构团队的 CloudWeGo 开源项目精选了 5 个优质赛题,参与 2022 届 Gitlink 开源夏令营(GLCC)。

01 GLCC活动介绍

GLCC 是在 CCF 中国计算机学会指导下,由 CCF 开源发展委员会(CCF ODC)举办的面向全国高校学生的暑期编程活动。活动将覆盖近千所高校,并联合各大开源基金会、开源企业、开源社区和开源专家,旨在鼓励青年学生通过参加真实的开源软件开发,提升自身技术能力,为开源社区输送优秀人才。

活动已经收到来自 OpenMMLab、百度、阿里巴巴、亚马逊云科技、蚂蚁金服、滴滴、九州云、字节跳动基础架构、腾讯等 45 个企业/社区的 110 个课题,覆盖人工智能、操作系统、云原生、大数据、前端开发、数据库、运维、DevOps、系统工具等 30 多个技术领域。

活动官网:https://www.gitlink.org.cn/glcc

02 预期收获

高价值开发任务和一对一导师辅导

CloudWeGo 团队充分认可高校开发者的实力,不希望仅提供成长性较低的文档翻译、组件开发的赛题,更希望能够真正帮助高校开发者参与到社区真实的开发任务中。

我们精心筛选了 2 轮赛题,保证 5 个赛题都能够满足 “高成长性、高趣味性、高挑战性”的要求 ,让每个开发任务不仅仅只是竞赛,完成的每个任务,都会完成社区用户的真实诉求,带来真正的使用价值。例如,一直在社区备受关注的热门话题:“Kitex 什么时候支持 Windows” ,也是本次夏令营的赛题之一。

每个赛题,都会有 1 - 2 个导师持续跟进,指导开发任务进行,导师会提供在赛题开发过程中需要的帮助。

GLCC 开源编程夏令营开营 — CloudWeGo 精选优质赛题等你来解答!_第2张图片

来自 GLCC 的丰厚奖金、证书和实习机会

入选同学完成开源任务后可获得 CCF GLCC 活动的丰厚奖金和结项证书。优秀开发者将有机会获得字节跳动实习和内推机会。

GLCC 开源编程夏令营开营 — CloudWeGo 精选优质赛题等你来解答!_第3张图片

03 赛题信息

子项目 Kitex
题目名称:为 Kitex 适配 Windows

1. 题目描述

Kitex 是字节跳动开源的 Golang RPC 框架,支持 Thrift 和 Protobuf 的编解码协议,配套了同名的命令行代码生成工具 Kitex,底层使用了 Netpoll 做网络传输层。目前 Kitex 和 Netpoll 仅支持在 Linux 平台上的使用,尚未支持 Windows。

2. 编码任务

  • 实现 Netpoll 和 Kitex 对 Windows 的适配和支持;
  • 不应对 Netpoll 和 Kitex 的 API、抽象层次做大范围的不兼容变更。

3. 技能要求和编程语言

  • 熟悉 Windows 和 Linux 平台的网络编程;
  • Golang。

尽可能不要使用 CGO,如果确实不可或缺,需要用文档详细说明。如果使用了其他开源项目的代码,必须明确标注并遵循原有许可证。

4. 预期完成结果

可以在 Windows 上使用 Kitex 生成代码、创建并启动服务,编写客户端进行调用,短连接、长连接和多路复用模式都能正确运行。

Github Issue链接: https://github.com/cloudwego/kitex/issues/469

报名链接: https://www.gitlink.org.cn/glcc/subjects/detail/35


子项目 Netpoll
题目名称:使用 Io_uring 实现 Netpoll I/O 轮询器

1. 题目描述

Netpoll 是字节自研的 Golang RPC 网络库,默认使用 Epoll 作为 I/O 轮询器,同时支持扩展实现。

Io_uring 是近年来提出的高效异步 I/O 内核接口,我们希望使用 Io_uring 实现(不同于 Epoll 的)Netpoll I/O 轮询器,提供更优秀的性能。

2. 编码任务

  • 整理 Io_uring Golang 版本 SDK;
  • 设计并实现几种可能的轮询器;
  • 性能测试和方案优化。

3. 技能要求和编程语言

Golang

4. 预期完成结果

实现高性能的 Io_uring I/O 轮询器。

Github Issue链接: https://github.com/cloudwego/netpoll/issues/151

报名链接: https://www.gitlink.org.cn/glcc/subjects/detail/98


子项目 Frugal
题目名称:SSA 后端 Auto-vectorization Pass 的实现

1. 题目描述

Frugal 是字节自研的一款高性能 Thrift 库,旨在使用 JIT 技术来加速 Thrift 的编解码过程。由于 Thrift 采用了大端序,而 x86_64 等常见的处理器架构均为小端序,因此对于 List 这一类的数据类型需要一个循环来实现小端到大端的转换。而这个过程如果能够利用 SIMD 指令的话,可以极大的提高性能。

2. 编码任务

  • 实现一个 SSA 后端的 Auto-vectorization Pass;
  • 输入原始的 CFG,输出 Vectorize 之后的 CFG;
  • IR 表示形式使用 Frugal SSA IR (Internal/Atm/Ssa 目录);
  • 该 Pass 的运行顺序在 Fusion 之后,在 Final TDCE 之前;
  • CPU 架构为 x86_64,SIMD 指令使用 AVX / AVX-2 指令集。

3. 技能要求和编程语言

  • 编译原理;
  • x86_64 指令集知识;
  • 实现语言为 Go。

4. 预期完成结果

能够识别并且将 CFG 中的 Load-swap-store 循环替换为正确的 SIMD 指令。

GitHub Issue 链接: https://github.com/cloudwego/frugal/issues/5

报名链接: https://www.gitlink.org.cn/glcc/subjects/detail/161


子项目 Sonic
题目名称:开发 Arm64汇编到 Go Plan9 汇编转换工具

1. 题目描述

Sonic 是字节自研的一款高性能 JSON 库,其底层文本处理算子采用 C 语言开发,并基于 Go-assembly 机制结合汇编转换工具(Asm2asm)嵌入到 Go 语言接口中。但是当前的 Asm2asm 工具仅支持 x86-64 到 Plan9 的转换,限制了 Sonic 在 Arm 架构环境下的使用。随着 Arm 架构芯片的流行,Sonic 计划支持Arm架构,Asm2asm 工具支持 Arm64 到 Plan9 的转换也在规划之中。

2. 编码任务

  • 实现一个 ARMv8-A 汇编到 Go plan9 汇编的转换工具;
  • 支持命令行交互(Linux or MacOSX),最好可以直接对原始 C 文件调用Clang(或 GCC)生成汇编,参考 https://github.com/bytedance/sonic/blob/main/Makefile;
  • 自动生成对应的 Go 函数接口及其单测(可选)。

3. 技能要求和编程语言

  • ARMv8-A 汇编;
  • Go plan9 汇编 (https://go.dev/doc/asm);
  • 编译原理,可以借助第三方 Lib 做前端解析处理;
  • 实现语言不限。

4. 预期完成结果

将纯 C 实现的文件(Sonic/Native/xx.c) 转换为 Go Arm64 汇编文件(Sonic/Internal/Native/xx_arm64.s),并且在 Arm64 环境下可跑通 Go 代码单测(Sonic/Internal/Native/Native_amd64_test.go)。

GitHub 链接:

  • Sonic - https://github.com/bytedance/sonic
  • Asm2asm - https://github.com/chenzhuoyu/asm2asm

Github Issue 链接: https://github.com/bytedance/sonic/issues/231

报名链接: https://www.gitlink.org.cn/glcc/subjects/detail/224


子项目 Monoio
题目名称:使用纯异步 Rust 实现高性能可扩展的通用网关系统

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. 预期完成结果

  • 基于 Monoio 完善 HTTP 框架;
  • 提供可扩展的生产可用的 Gateway;
  • 较完善的 TCP / h1 / h2 / QUIC / ACME 组件支持。

Github Issue 链接: https://github.com/bytedance/monoio/issues/71

报名链接: https://www.gitlink.org.cn/glcc/subjects/detail/287

04 活动时间安排

活动开放报名时间:5 月 26 日- 6 月 24 日。

GLCC 开源编程夏令营开营 — CloudWeGo 精选优质赛题等你来解答!_第4张图片

05 参与方式

1、扫码加入夏令营活动交流群 和 CloudWeGo 社区交流群,我们在群内进行赛题讲解、报名指导和入选信息公布。

扫描左侧二维码,加入夏令营活动交流群。夏令营活动赛题讲解、活动指导和活动通知将在此群发布。

扫描右侧二维码,加入 CloudWeGo 社区交流群。此群发布社区动态、新闻,也是开发者日常交流群。
GLCC 开源编程夏令营开营 — CloudWeGo 精选优质赛题等你来解答!_第5张图片2、选择赛题,点击报名链接,填报大赛报名信息,申领赛题。审核入选后即可在导师指导下开始赛题开发。


项目地址

GitHub:https://github.com/cloudwego

官网:www.cloudwego.io

活动预告

5 月,CloudWeGo 社区第一期源码解读活动已经上线,欢迎大家持续关注并积极参与。活动地址:https://github.com/cloudwego/community/issues/24

你可能感兴趣的:(架构,golang)