说明
系列文章:http://www.jianshu.com/p/594441fb9c9e
本文完全参考自《Netty权威指南(第2版)》,李林峰著。
Java 序列化
Java序列化从JDK 1.1就已经提供,但是有许多缺点:
- 无法跨语言,通信双端必须都是Java
- 序列化后的码流太大
- 序列化性能太低
业界主流的编解码框架
Google 的 Protobuf
Protobuf 是谷歌的开源协议,详细说明见:http://www.jianshu.com/p/8025dbe0121a
特点:
- 结构化数据存储格式
- 高效的编解码性能
- 语言无关、平台无关、扩展性好
- 官方支持Java、C++、Python三种语言
Facebook 的 Thrift
Thrift可以作为高性能的通信中间件使用,支持数据(对象)序列化和多种语言的RPC服务。
MessagePack 编解码
MessagePack是一个高效的二进制序列化框架,它像JSON一样支持不同语言间的数据交换,但是它的性能更快,序列化之后的码流更小。