RPC协议作用
RPC协议是基于TCP、UDP等底层协议传输,在应用层用于协定服务方与调用方如何通信的规范。通过统一的协议,可以让服务方与调用方可以正确解析互相发送的数据。
RPC序列化选择的维度
各种序列化方式的对比
优点 | 缺点 | |
JAVA原生 | 兼容性较好 | 性能较差,序列化后对象较大,不支持跨语言 |
JSON | 可读性好,支持跨语言 | 性能及空间开销较大 |
Hessian | 性能及空间开销小,效率高,较多语言支持 | 兼容性不太好(Linked 系列,LinkedHashMap、LinkedHashSet 等,但是可以通过扩展 CollectionDeserializer 类修复;Locale 类,可以通过扩展 ContextSerializerFactory 类修复;Byte/Short 反序列化的时候变成 Integer) |
Protobuf | 性能及空间开销小,效率高。通过IDL支持跨语言类型,效率高 |
单语言时需要定义IDL,如单纯java语言,可使用ProtoStuff。 不支持 null;ProtoStuff 不支持单纯的 Map、List 集合对象,需要包在对象里面。 |
原文:https://www.cnblogs.com/flyingaway/p/14761296.html