通讯协议序列化思考
由于我们现在的RPC框架原来的序列化方式太弱了,导致各种序列化问题。所以最近研究了一下相关的序列化方式。主要有:
二进制类的,一般采用TLV编码方式,如Protocol Buffers, Thrift。
文本类的,如JSON, XML。
混合型的,比如Avro,schema是JSON,data是二进制方式的。
序列化一般要么作为RPC传递,或者作为自描述的数据存储,比如数据库。不过后者由于需要存储多条,而且考虑到搜索和更新问题,所以对每条记录做了一定的组织,一般是B树组织结构。
事实上,实现一个简单的通讯协议序列化是非常简单的(通信协议之序列化)。关键在于一些细节问题,需要好好思考:
1. 性能与带宽
二进制协议最大的特点就是节省空间和带宽...