基本概念
远程过程调用协议RPC
,如,两台服务器A,B,在服务器A上部署了一个应用,想要调用B服务器上应用提供的函数,可以通过RPC
协议调用b.ticket.get()
来直接调用。
gRPC
是一个高性能、通用的开源RPC
框架,由Google
主要面向移动应用开发并基于HTTP/2
协议标准设计,基于ProtoBuf
序列化协议开发,且支持多种开发语言。相较于REST
,gRPC
传输速率更快,更安全。
Protobuf
是Google
旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式,是一种独立和轻量级的数据交换格式。所以很适合用做数据存储和作为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的协议格式即同一proto
文件被编译成不同的语言版本,加入到各自的工程中去,用于RPC
系统和持续数据存储系统。这样不同语言就可以解析其他语言通过 protobuf
序列化的数据。相比Json
,Protobuf
有更高的转化效率,时间效率和空间效率。
当想把内存中的对象状态保存到一个文件中或数据库的时候或者想套接字在网络上传输对象的时候需要序列化
对象 --> 序列化 --> 传输或存储 --> 反序列化 --> 对象 (协议 数据格式 协议)
- 对象的序列化:把对象转化为字节序列的过程,封装到
body
中 - 对象的反序列化:把字节序列恢复为对象的过程
序列化后的两种格式:文本模式(可读的)和二进制模式(不可读)
主流序列化协议:xml
、json
、protobuf
xml
、json
以文本方式进行存储;protobuf
以二进制方式进行存储