Netty-序列化入门

Netty-序列化入门

Tags: Netty

摘要

Netty-序列化入门,Java序列化缺点,业界主流的编解码框架,Protobuf,Thrift

Java序列化的特点

无法跨语言
序列化后的码流太大
序列化性能太低

业界主流的编解码框架

Google的Protobuf

  • 结构化数据存储格式(XML,JSON等)
  • 高效的编解码性能
  • 语言无关、平台无关、扩展性好
  • 官方支持Java、C++和Python三种语言

Facebook的Thrift

  • 适用于搭建大型数据交换及存储的通用工具,对于大型系统中的内部数据传输,相对于JSON和XML在性能和传输大小上都有明显的优势。
  • Thrift主要有5部分,其中TProtocol:RPC的协议层,可以选择多种不同的对象序列化方式,如JSON和Binary。

JBoss Marshalling

  • 可拔插的类解析器,提供更加便捷的类加载定制策略,通过一个接口即可实现定制
  • 可拔插的对象替换技术,不需要通过继承的方式
  • 可拔插的预定义类缓存表,可以减少序列化的字节数组长度,提升常用类型的对象序列化性能
  • 无需实现java.io.Serializable接口,即可实现Java序列化
  • 通过缓存技术提升对象的序列化性能
  • 相比前面介绍的两种编解码框架,JBoss Marshalling更多是在JBoss内部使用,应用范围有限。JBoss Marshalling的使用非常简答,后续在介绍Netty的Marshalling解码器是会给出例程。