我从MQ中订阅了来自Chain模块的数据,不是通过Java-SDK获取的。现在尝试用protobuf直接反序列化一直失败。在源码中发现微服务之间的通信数据前8个字节是保留字段,第8个字节才是payload字段,并且数据是先压缩、再protobuf序列化。请问这边的压缩算法具体是什么?源码中还未找到,谢谢!
Payload字段中的压缩/解压缩方法
压缩算法用的是snappy,代码在 https://github.com/citahub/cita-common/blob/develop/snappy/src/lib.rs
但是不是所有消息都是压缩的,只有消息超过一定大小(CITA_SKIP_COMPRESS_SIZE),压缩才会有收益。
具体调用压缩和解压缩的地方是在 https://github.com/citahub/cita-common/blob/develop/libproto/src/autoimpl.rs#L344
set_content和take_content
它们是Message结构的成员方法。这个Message结构是所有消息序列化之后,又封装了一层。