Protocol Buffers 一种轻便高效的结构化数据存储格式

介绍

Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。

安装

安装过程中,参考了Google Protocol Buffer 的使用和原理Protobuf

了解到了下面几点:

  1. 该项目的 php 语言版本,可通过纯 php 包和本地 c 扩展来运行启动;
  2. 纯 php 包是为了提供在 php 平台上更广的可用性,而 c 扩展更注重性能;
  3. 两者的实现,提供了同一套 APIs ,应该是由同一套代码生成的;
  4. 如果用户想在他们两者之间切换,不需要重新修改/生成代码;
  5. 两者都实现了通过生成 php 代码来实现在 php 中的 message 和 enum 类型;
  6. 作者建议通过 php 来生成,支持 .proto 文件;
  7. 这个包的构建过程仅在当前目录安装扩展/包,其次还要安装该协议的编译包去最终完成 php 生成功能。

体会

了解之后,感觉实现起来还是比较麻烦,毕竟很多项目其实已经用了很久了,rpc 接口众多,一下子迁移起来其实是比较困难的。如果是新建的项目倒是可以尝试,但是每次都需要预先定义这些数据结构,其实也是带来一定的难度,因为数据结构可能会不断的变化。理论上 google 的这个协议是让不同的语言不必去例会数据结构,而只需要关注具体的数据。但是代码毕竟还是人来写的,其实用起来反而不如 json 这些标准化跨平台包含数据结构的格式。

感觉暂时还不适合在大项目中使用,毕竟开发不仅仅是一个人,而是一个团队。