protobuf
定义
说到数据序列化,大家最熟悉的可能是 JSON 或 XML。不过,今天要聊的 protobuf 跟它们干的是同一类活儿——结构化数据格式。只不过,它是由 Google 定义的一种高效方案,专门用于网络通讯中的数据序列化与反序列化。翻译成大白话:序列化,就是把程序里的对象或数据结构转成一串二进制;反序列化,则是把这串二进制再还原回原来的对象。
特点
跟其他格式一比,protobuf 的优势就非常突出了:解析速度快(也就是序列化和反序列化的速度),占用的存储空间也小,而且兼容性还很棒。所以,用它来做数据存储或者网络通讯的数据载体,可以说是恰到好处。
RPC
RPC,全称 Remote Procedure Call Protocol,中文叫远程过程调用协议。说白了,就是让你像调用本地的函数一样,去调用远程服务器上的方法。现在越来越多的团队都在用 RPC 接口,不过接口写完之后,测试这一步可不能省——得确保调用够稳定才行。
gRPC
是什么
那 gRPC 又是啥?你可以把它理解成 Google 基于 RPC 封装的一个开源框架,底层跑在 HTTP/2 上。既然借了 HTTP/2 的力,自然也就继承了不少优点:二进制分帧传输,多路复用,服务端推送,还有头部压缩。这些特性让 gRPC 在性能上相当能打。
是怎么传输的?

从上图也能看明白:客户端只需要准备一个 gRPC Stub(为什么叫存根?可以理解成远程服务在本地的一个袋里),然后通过 Proto Request 向 gRPC Server 发起调用;服务端处理完之后,再通过 Proto Response 把结果返回给客户端。整个过程就像在调用本地方法一样自然。
小结
简单总结一下:RPC 是一种远程程序调用,让你像调用本地方法一样去调用远程方法;gRPC 是 Google 基于 HTTP/2 的 RPC 框架;protobuf 则是一种结构化数据格式——先写好 .proto 文件,再用 protoc 编译器就能生成多种语言的 RPC 服务代码。
JSON-RPC 接口
除了 gRPC,还有一种轻量级的 RPC 协议——JSON-RPC。它借助 HTTP 协议进行通信,数据格式用的是 JSON。用 Postman 这类工具就能轻松测试和调用。当然,如果你更偏爱国产工具,Apifox 也原生支持 JSON-RPC 接口,而且界面是中文的,上手非常友好。
使用 Apifox 发送 JSON-RPC 接口
用 Apifox 发送 JSON-RPC 接口非常方便,它支持中文显示,几乎不需要额外学习成本。

关于 Apifox
- 集成了 API 文档、API 调试、API Mock、API 自动化测试,是一站式 API 协作平台。
- 拥有更先进的 API 设计/开发/测试工具。
- 用一句话概括:Apifox = Postman + Swagger + Mock + JMeter。

