前言
我们了解到RPC框架中,数据转化为字节流的或者将字节流转换成能读取的固定格式时,需要进行序列化和反序列化,序列化和反序列化的速度也会影响远程调用的效率。
在Dubbo中,支持多种序列化方式,dubbo-serialization模块可以看到支持的方式。
使用的时候,有些序列化包是要自己引入的,比如gson。
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-serialization-gson -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-serialization-gson</artifactId>
<version>2.7.13</version>
</dependency>
然后配置序列化方式就可以了。
dubbo:
protocol:
port: 20881
name: dubbo
serialization: gson
1. hessian2
hessian是一种跨语言的高效二进制序列化方式。但这里实际不是原生的hessian2序列化,而是阿里修改过的,它是dubbo RPC默认启用的序列化方式。
2. avro
Avro列化Avro 可以将数据结构或对象转化成便于存储或传输的格式。Avro设计之初就用来支持数据密集型应用,适合于远程或本地大规模数据的存储和交换。
特点:
- 丰富的数据结构类型;
- 快速可压缩的二进制数据形式,对数据二进制序列化后可以节约数据存储空间和网络传输带宽;
- 存储持久数据的文件容器;
- 可以实现远程过程调用RPC;
- 简单的动态语言结合功能。
3. fastjson
Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
主要特点:
- 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
- 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
- 零依赖(没有依赖其它任何类库除了JDK)
4. fst
FSTfast-serialization 是重新实现的 Java 快速对象序列化的开发包。序列化速度更快(2-10倍)、体积更小,而且兼容 JDK 原生的序列化。
5. gson
Google Gson是一个简单的基于Java的库,用于将Java对象序列化为JSON,反之亦然。 它是由Google开发的一个开源库。
特点
- 易于使用 - Gson API提供了一个高级外观来简化常用的用例。
- 无需创建映射 - Gson API为大部分要序列化的对象提供了默认映射。
- 性能优 - Gson速度相当快,内存占用量低。
- 它适用于大型对象图或系统。
- 干净JSON - Gson创建一个干净而紧凑的JSON结果,它易于阅读。
- 无依赖性—Gson库不需要JDK以外的任何其他库。开源 - Gson库是开源的; 它是免费提供的。
6. jdk
JDK自带序列化。
7. kryo
Kryo 是一个快速高效的Java对象图形序列化框架,主要特点是性能、高效和易用。该项目用来序列化对象到文件、数据库或者网络。
8. protobuf
Protocol Buffers(又名 protobuf)是 Google 的语言中立、平台中立、可扩展的结构化数据序列化机制。
9. protostuff
protostuff是一个 java 序列化库,内置支持向前向后兼容性(模式演变)和验证。
- 效率,速度和内存
- 灵活,支持可插拔格式
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: