1、首先,就是Java序列化机制,好处是:基于JDK默认的序列化机制可以避免操作底层的字节数组,从而提升开发效率;其目的主要有两个:网络传输、对象持久化;
但是,对于网络传输来说,Java序列化机制有种种缺陷:
【1】无法跨语言:
【2】序列化后的码流太大:
自己编写一个User类(这里就不贴代码了),
然后分别对其实现:序列化、以及ByteBuffer对其进行编码,
然后对两者码流大小进行比较:采用JDK序列化机制编码后的二进制数组大小是二进制编码的5.29倍;
【3】序列化性能太低:
对【2】中的示例场景,分别对Java序列化和二进制编码进行性能测试,发现Java序列化的性能只有二进制编码的6.17%左右:
2、使用主流常用的编码器:
如:MessagePack、ProtoBuf、Marshalling
Netty与以上三个分别的结合使用,相关代码之后会补充;