序列化

序列化与反序列化

序列化是将对象转换为二进制形式(如字节数组),通常用于网络传输数据持久化等目的。反序列化则是将这些字节数组还原成原始对象,主要用于完成远程调用

关键因素

  • 码流大小:影响网络带宽的占用。
  • 序列化性能:影响CPU资源的占用。
  • 跨语言支持:影响异构系统的对接和开发语言的切换。
序列化技术
优点
缺点
适用场景
Java默认序列化
-
无法跨语言、码流大、性能差
-
XML
人机可读性好、可指定名称
文件庞大、格式复杂、不包含类型信息
配置文件存储、数据转换
JSON
兼容性高、简单易读写、数据较小、可扩展性好
数据描述性差、不适合ms级别性能要求
跨防火墙访问、Web浏览器Ajax请求
Fastjson
接口简单易用、序列化速度快
注重速度牺牲标准和功能性、文档不全
协议交互、Web输出、Android客户端
Thrift
体积小、速度快、支持多语言和数据类型
使用者少、不安全、调试难、不支持持久层直接读写
分布式系统RPC
Avro
支持丰富数据类型、自我描述、提高解析速度
对静态类型语言用户不直观
Hadoop中的数据格式
Protobuf
码流小、性能高、结构化数据格式
需要工具生成代码、支持语言较少
高性能RPC、跨防火墙访问、应用层持久化
Protostuff
基于protobuf、无需.proto文件
-
高性能RPC、简化开发流程
JBoss Marshalling
直接序列化Java类
-
-
MessagePack
高效二进制序列化
-
-
Hessian
二进制轻量级远程调用
-
-
Kryo
基于protobuf、只支持Java
需要注册
-
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP