天天看點

Dropbox 開源自研的 protobuf 代碼生成架構Dropbox 開源自研的 protobuf 代碼生成架構

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 的進化之路

高可用架構

改變網際網路的建構方式

下一篇: 邏輯卷