RPC 调用 msgpack 序列化问题
问题
996 工作态,晚上上线,业务调用方反馈通过 JSF(Jingdong Service Framework)RPC 调用的返回参数异常,获取服务列表的所有服务 service_status 为 0(0 表示已删除)。
分析
系统迅速回滚,返回参数正常。CodeReview 发现 API 的 Vo 父对象新增了属性,而 RPC 传输的子 Vo 继承了父 Vo,虽然,新增的属性是放在父 Vo 的末尾,但为 JSF 的序列化方式为 msgpack,由于业务调用方未更新父 Vo,所以导致了子 Vo 反序列化的异常。

为什么 Vo 的反序列化会失败?而不是像 JSON、Hession 可以向下兼容?
首先,我们要先了解一下 msgpack 的原理。
msgpack
msgpack 用官方的话说,msgpack 是一种高效的二进制序列化方式。
基于官方的解释:JSON 为什么会变小?
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content