关于序列化与反序列化MessagePack的实践 | 京东云技术团队

💡 原文中文,约14800字,阅读约需36分钟。
📝

内容提要

在进行序列化操作之前,通过jvisualvm和async-profiler工具进行了系统压测和性能分析。序列化是将对象转换为字节序列的过程,常用于对象持久化和网络传输。不同的序列化方式有各自的优缺点,如JDK序列化体积大、性能低,JSON解析耗时,Protobuf需要额外配置环境变量。MsgPack序列化效率高,体积小,但对复杂模型支持不足。根据项目需求选择合适的序列化方式。

🎯

关键要点

  • 在进行序列化操作之前,通过jvisualvm和async-profiler工具进行了系统压测和性能分析。
  • 序列化是将对象转换为字节序列的过程,主要用于对象持久化和网络传输。
  • 不同的序列化方式有各自的优缺点,如JDK序列化体积大、性能低,JSON解析耗时,Protobuf需要额外配置环境变量。
  • MsgPack序列化效率高,体积小,但对复杂模型支持不足。
  • 根据项目需求选择合适的序列化方式。
  • 序列化的目的是将对象变成字节序列,方便持久化存储和网络传输。
  • 在选择序列化方式时需考虑编码后的字节数组大小、开发工作量、性能、安全性、占用空间大小和可维护性。
  • MessagePack在老项目中表现良好,序列化反序列化效率高,文件体积小。
  • JDK序列化是Java默认的序列化方式,但性能较差,不支持跨语言。
  • JSON格式简单易用,但在解析时耗时且占用内存较大。
  • Protobuf是一种语言无关、平台无关的序列化方法,适合对传输性能有较高要求的系统。
  • MsgPack的缺点包括缺乏复杂模型支持和维护成本较高。
  • 使用MsgPack需要配置相应的maven依赖,并进行二次加工以支持不同数据类型的读写。
➡️

继续阅读