Dropbox 开源自研的 protobuf 代码生成框架

高可用架构 2020-09-17 14:00

近日,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 生态重要的一部分。


更多了解 pb-jeey:https://github.com/dropbox/pb-jelly


参考阅读:


技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。


高可用架构
改变互联网的构建方式

长按二维码 关注「高可用架构」公众号
推荐阅读