这三种框架都可以序列化+RPC
一、Protobuf
1. Protobuf是Google公司提供的序列化/反序列化框架
2. 特点如下:
a. 平台无关、语言无关
b. 二进制、数据自描述
c. 提供了完整详细的操作API
d. 高性能,比xml要快20-100倍
e. 尺寸小,比xml要小3-10倍,高可扩展性、
f. 数据自描述、前后兼容
二、Thrift
1. Thrift是Facebook公司提供的序列化/反序列化的框架,2007年贡献给了Apache
2. 特点如下:
a. 支持非常多的语言绑定
b. thrift文件生成目标代码,简单易用
c. 消息定义文件支持注释
d. 数据结构与传输表现的分离,支持多种消息格式
e. 包含完整的客户端/服务端堆栈,可快速实现RPC
f. 支持同步和异步通信
三、Avro
1. Avro是Apache提供的开源的序列化/反序列化框架
2. 特点如下:
a. 丰富的数据结构类型,8种基本数据类型以及6种复杂类型
b. 快速可压缩的二进制形式
c. 提供容器文件用于持久化数据
d. 远程过程调用RPC框架
简单的动态语言结合功能,Avro 和动态语言结合后,读写数据文件和使用 RPC协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。而代码生成作为一种可选的优化只值得在静态类型语言中实现