目录
一、跨语言的序列化方案
事实上的跨语言序列化方案只有三个: protobuf, thrift, json。
- json体积太大,并且缺少类型信息,实际上只用在RESTful接口上,并没有看到RPC框架会默认选json做序列化的。
国内一些大公司的使用情况:
-
protobuf ,腾迅,百度等
-
thrift,小米,美团等
-
hessian, 阿里用的是自己维护的版本,有js/cpp的实现,因为阿里主用java,更多是历史原因。
二、Protobuf介绍
Protobuf(下文称为 PB)是一种常见的数据序列化方式,常常用于后台微服务之间传递数据
当你使用静态编译的protobuf类时,性能通常是最佳的,因为所有的序列化和反序列化逻辑都是预先生成和优化的。
DynamicMessage
则用于在运行时处理没有编译时生成的代码的protobuf消息。它提供了一种灵活的方法来动态地处理消息,但通常以牺牲一些性能为代价。
protobuf不支持在运行时编译.proto
文件。所有的类都需要在编译时生成。但是,你可以使用