远程调用,意味着需要通过网络传输,那么对象就需要序列化为二进制。
典型的几种序列化框架:
- JDK原生序列化
- JSON【空间开销大、需要反射解决类型】
- Hessian【不支持LinkedHashMap/Set、Byte/Short反序列化为Integer】
序列化框架原理
设计一种协议,将(对象类型,属性类型,属性值)按照固定格式写入二进制字节流。
RPC框架在序列化方面需要注意的问题
- 对象过于复杂
- 对象过大
- 使用序列化框架不支持的类型
- 对象继承关系复杂
总之,对象庞大复杂,类型不被支持,会出现序列化问题。因此,在使用RPC框架时,入参和返回值要构造的尽量简单。