主要观点总结
本文介绍了字节跳动服务框架团队研发工程师在CloudWeGo技术沙龙暨三周年庆典中演讲的内容,关于ROG——高性能Go实现的项目。文章涵盖了ROG的诞生原因、进展、架构设计、收益来源、面临的挑战、未来规划及开源计划等关键信息。
关键观点总结
关键观点1: ROG项目的诞生
团队受到Rust良好性能的启发,考虑提升Go的性能。对比Rust和Go的优缺点,提出使用编译技术生成高性能可执行文件的想法,并计划通过重写Go的Runtime和GC组件,使用Rust和Go之间的FFI互调来提升性能。
关键观点2: ROG的进展与性能测试
团队已经测试了一些简单场景,如快排、二分和Simple Lisp,初步显示了ROG相比Go的性能优势。面对复杂场景如微服务,ROG在Kitex Benchmark测试中也有良好表现。
关键观点3: ROG的架构设计
介绍了ROG的编译流程,包括前端处理、中间语言处理、LLVM IR生成、后端处理等步骤。强调了对Go语言和Runtime & GC的重写。
关键观点4: 性能收益的来源
性能优势主要来源于三个部分:编译优化、跨语言LTO和FFI、以及Runtime & GC的重写。
关键观点5: 面临的挑战
介绍了在ROG项目实施过程中遇到的主要挑战,如解决TinyGo的不足、处理Safety FFI问题、支持CGO等。
关键观点6: 未来规划与宏的使用
计划支持CGO的FFI表达方式,并探索使用Rust宏提供更好开发体验和更高效的序列化方式。提到ROG的开源计划,包括在公司内部试用、稳定后再开源,并贡献给社区。
文章预览
本文根据字节跳动服务框架团队研发工程师在 CloudWeGo 技术沙龙暨三周年庆典中演讲内容《ROG——高性能 Go 实现》整理。 作者| 不愿意透露姓名的小刘市民 ROG 之缘起 ROG 的诞生是因为我们一部分业务使用 Rust 重写之后,获得了非常好的收益,比如 AVG、CPU、MEM、P99,这些数据表现非常好,大约节省了接近 50%的 CPU,内存大大降低。这个性能数据让人眼红,因此团队考虑既然 Rust 有这么好的性能,我们有没有办法提升一下用户在 Go 上的性能? 在和一些用户的对接中我们发现,让用户把 Go 业务通过 Rust 重写,难度其实非常大。很多用户会抱怨 Rust 的一些问题让他们很痛苦,比如,Rust 生命周期太复杂,泛型系统太复杂,报错看不懂,编程速度慢等等。因为这一系列问题,所以让用户把原来的 Go 项目通过 Rust 重写,对于用户来说是很难推动的事情。 于
………………………………