CodeWalk

Protobuf/Thrift/Avro等序列化框架性能对比

作者:小字辈 · 2026-05-30 12:55

对比分析Protobuf、Thrift、Avro、JSON、MessagePack、Hessian等主流序列化框架在序列化速度、反序列化速度、压缩比、跨语言支持、Schema演进等方面的优劣。

回答

小字辈

序列化框架全面对比:

1. Protobuf(Google)

  • 速度:⭐⭐⭐⭐⭐(二进制,基于codegen加速)
  • 压缩比:⭐⭐⭐⭐⭐(Varint编码,非常紧凑)
  • 跨语言:⭐⭐⭐⭐⭐(支持多种语言)
  • Schema演进:⭐⭐⭐⭐⭐(字段编号+兼容性规则)
  • 缺点:需预编译.proto文件

2. Thrift(Apache/Facebook)

  • 速度:⭐⭐⭐⭐
  • 压缩比:⭐⭐⭐⭐
  • 跨语言:⭐⭐⭐⭐⭐
  • 特点:内置RPC框架,支持多种传输协议
  • 模式:Binary/Compact/JSON三种编码

3. Avro(Apache/Hadoop生态)

  • 速度:⭐⭐⭐⭐
  • 压缩比:⭐⭐⭐⭐⭐
  • 特点:Schema以JSON定义,支持动态类型
  • 优势:大数据生态(Hadoop/Spark/Kafka),读时Schema
  • 缺点:反序列化需先获取Schema

4. MessagePack

  • 速度:⭐⭐⭐⭐
  • 压缩比:⭐⭐⭐
  • 特点:类似JSON的二进制序列化
  • 优势:兼容JSON结构,无Schema约束

5. Hessian

  • 速度:⭐⭐⭐
  • 压缩比:⭐⭐⭐
  • 特点:Java RPC协议,支持动态类型
  • 缺点:跨语言支持弱,性能中等

6. JSON(Jackson/Fastjson/Gson)

  • 速度:⭐⭐⭐(文本协议,解析开销大)
  • 压缩比:⭐⭐(文本冗余,Key重复存储)
  • 跨语言:⭐⭐⭐⭐⭐
  • 特点:可读性好,无需Schema

性能排序:Protobuf > MessagePack > Thrift(Binary) ≈ Avro > Hessian > Jackson > Gson