Dropbox 开源自研的 protobuf 代码生成框架
近日,Dropbox 开源了自己开发的 protobuf 框架 pb-jelly。
早在 2015 年,当 Dropbox 在开发存储系统时,需要一个支持零拷贝序列化的框架,这促使他们创建了自己的库。从那以后,这个框架开始在 Dropbox 的多个项目中使用,包括 Sync Engine。除了零拷贝序列化,框架还提供了许多 Rust 风格的 proto 扩展。
pb-jelly 是一个面向 Rust 语言的 protobuf 代码生成框架,支持 proto2 和 proto3。
开发历史
pb-jelly 最初是在 2016 年为了满足 Dropbox 的存储系统(Magic Pocket)中大量字节的转换需求而实现。此前,Dropbox 使用的是 rust-protobuf(生成的 API 完全相同,便于迁移),但将 Rust struct 序列化为 proto 消息,然后在 RPC 层中再次序列化,意味着要进行多份拷贝(在 parse 阶段反过来也是一样)。增加这个实现,并将其端到端集成到 RPC 框架,有助于避免这些额外的副本。
多年来,这个版本已经成长和成熟,目前被用于 Dropbox 的多个项目,包括同步引擎,以及前面提到的 Magic Pocket。
Rust 生态系统中还存在其他的实现(如 prost 和 rust-protobuf),pb-jelly 也将成为 pb 生态重要的一部分。
参考阅读:
- 爱奇艺网络协程编写高并发应用实践
- Graal VM:云原生时代的Java
- 一个高效的定时任务系统
- 爱奇艺MySQL高可用方案概述
- 云原生网络代理 MOSN 的进化之路