概念:

序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

在Dubbo RPC中,同时支持多种序列化方式:

  • dubbo序列化,阿里尚不成熟的java序列化实现。
  • hessian2序列化:hessian是一种跨语言的高效二进制的序列化方式,但这里实际不是原生的hessian2序列化,而是阿里修改过的hessian lite,它是dubbo RPC默认启用的序列化方式。
  • json序列化:目前有两种实现,一种是采用的阿里的fastjson库,另一种是采用dubbo中自已实现的简单json库,一般情况下,json这种文本序列化性能不如二进制序列化。
  • java序列化:主要是采用JDK自带的java序列化实现,性能很不理想。

最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括:

专门针对Java语言的:Kryo,FST等等
跨语言的:Protostuff,ProtoBuf,Thrift,Avro,MsgPack等等
这些序列化方式的性能多数都显著优于 hessian2 (甚至包括尚未成熟的dubbo序列化)。所以我们可以
为 dubbo 引入 Kryo 和 FST 这两种高效 Java 来优化 dubbo 的序列化。

使用Kryo和FST非常简单,只需要在dubbo RPC的XML配置中添加一个属性即可:

<dubbo:protocol name="dubbo" serialization="kryo"/>

或者

<dubbo:protocol name="dubbo" serialization="fst"/>

可以通过扩展 Serialization、ObjectInput、ObjectOutput 来进行 dubbo 序列化的扩展。

package com.xxx;import com.alibaba.dubbo.common.serialize.Serialization;
import com.alibaba.dubbo.common.serialize.ObjectInput;
import com.alibaba.dubbo.common.serialize.ObjectOutput;public class XxxSerialization implements Serialization {public ObjectOutput serialize(Parameters parameters, OutputStream output) throws IOException {return new XxxObjectOutput(output);}public ObjectInput deserialize(Parameters parameters, InputStream input) throws IOException {return new XxxObjectInput(input);}
}

META-INF/dubbo/com.alibaba.dubbo.common.serialize.Serialization:

xxx=com.xxx.XxxSerialization

并且通过以下配置来使用新的扩展:

<!-- 协议的序列化方式 -->
<dubbo:protocol serialization="xxx" />
<!-- 缺省值设置,当<dubbo:protocol>没有配置serialization时,使用此配置 -->
<dubbo:provider serialization="xxx" />

Dubbo-接口数据序列化Serialization相关推荐

  1. 魔方APP项目-04-用户模块API接口、Marshmallow,基本构造器(Schema),Schema数据序列化、Schema数据反序列化、反序列化对数据验证、模型构造器(ModelSchema)

    用户模块 当前开发的项目属于社交类型项目,所以关于用户的信息和功能直接贯穿了整个项目.所以此处实现用户模块功能,我们先把用户基本信息构建起来,并通过基本信息实现用户注册登录相关功能,后面遇到业务再继续 ...

  2. mysql xa 序列化_MYSQL 的数据序列化Api接口详情

    MYSQL 的数据序列化Api接口详情 发布时间:2020-04-29 17:02:59 来源:亿速云 阅读:158 作者:三月 本文主要给大家介绍MYSQL 的数据序列化Api接口详情,文章内容都是 ...

  3. Dubbo的多种序列化算法

    RPC 框架需要通过网络通信实现跨 JVM 的调用.既然需要网络通信,那就必然会使用到序列化与反序列化的相关技术,Dubbo 也不例外. 1 JDK序列化操作 1.1 实现 Serializable ...

  4. dubbo接口测试_Django测试工具平台之Dubbo接口请求 + 前端

    前言 本章内容主要完成以下几个内容: 1.记录Dubbo接口请求 2.搜索请求记录 3.前端页面完成 4.项目第一阶段展示 项目展示中主要演示在本地如何启动项目,进行调试.如果需要部署线上环境,可以去 ...

  5. 常用模块(数据序列化 json、pickle、shelve)

    本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Py ...

  6. python读取序列5之后的数据_Python 基本功: 5. 数据序列化

    这篇文章紧接着前篇:多多教Python:Python 基本功: 4. 读写文件​zhuanlan.zhihu.com 仔细阅读的小伙伴会发现,在基本功4 里最后的一个示例中,我们读取解析了文件中的内容 ...

  7. python、java大作战,python测试dubbo接口

    很多小伙伴都反映公司要求测dubbo(dubbo是一个java的分布式开源框架)接口,不会写java代码,怎么测,能不能用python来调dubbo接口.当然是可以的了,最近研究了一下,很简单,分享给 ...

  8. SpringBoot 接口数据加解密技巧,so easy!

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...

  9. Dubbo接口级服务发现-数据结构

    目录 Dubbo服务治理易用性的原理: URL地址数据划分: Dubbo接口级服务发现---易用性的代价 Proposal,适应云原生.更大规模集群的服务发现类型. Dubbo3应用级服务发现---基 ...

  10. 调用dubbo接口出现多次

    2019独角兽企业重金招聘Python工程师标准>>> 调用一次dubbo接口,断点在dubbo显示三次数据,网上发现dubbo的机制问题,https://blog.csdn.net ...

最新文章

  1. MTK tee.img的打包原理介绍
  2. Scala是完全面向函数式的编程语言体现点
  3. php学习_数组 2013.01.04
  4. visio任意区域填充斜线阴影_DX12渲染管线(6) - 级联阴影与距离场阴影
  5. Spring Cloud各组件超时
  6. linux 串口读取陀螺仪,stm32读取陀螺仪MPU6050发送数据到串口
  7. 阿里云李刚:下一代低延时的直播CDN
  8. 东华大学java期末_东华大学数据结构期末复习题!.doc
  9. [XJOI]noip44 T3还有这种操作
  10. linux两台服务器间复制文件scp
  11. day73 中间件 以及模板引擎
  12. java基础总结07-异常
  13. Android开发框架整理
  14. 51单片机c语言的延时程序,51单片机延时程序
  15. 为什么普通人做量化交易会亏钱?
  16. arcgis构造工具没了_在arcgis中如何调出数据显示工具栏
  17. 用一块荣耀智慧屏,组成未来世界的万花筒
  18. PTA每日一题-Python-身份证校验
  19. 2016.3.24 OneZero站立会议
  20. Micropython教程之TPYBoard DIY电子时钟(萝卜学科编程教育)

热门文章

  1. 性能优化,进无止境---内存篇
  2. python实现 文件排版
  3. YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(下)
  4. 个人安卓学习笔记---搭建Androd开发环境
  5. latex系列---Latex参考文献的引用
  6. 前端杂谈: CSS 权重 (Specificity)
  7. IIS-网站报500.19错误代码0x8007000d问题解决
  8. javascript-原生javascript实现类似节奏大师小游戏
  9. nginx ajax 错误500,聊聊nginx报错499问题
  10. CSR CVC4.3.1消回声调试向导