07、Dubbo基础:Dubbo3.0支持的多种序列化方式

前言

我们了解到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 序列化库,内置支持向前向后兼容性(模式演变)和验证。

  • 效率,速度和内存
  • 灵活,支持可插拔格式

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: