大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Dubbo序列化與反序列化

Dubbo序列化與反序列化

更新時間:2021-09-08 11:45:29 來源:動力節(jié)點(diǎn) 瀏覽2631次

序列化:把對象轉(zhuǎn)換為字節(jié)序列的過程稱為對象的序列化。

反序列化:把字節(jié)序列恢復(fù)為對象的過程稱為對象的反序列化。

Dubbo是 Alibaba 開源的分布式服務(wù)框架遠(yuǎn)程調(diào)用框架,現(xiàn)在已捐贈給 apache 軟件基本會。因此 dubbo 調(diào)用是需要跨 JVM,需要進(jìn)行網(wǎng)絡(luò)通信。這就需要使用到序列化與反序列化。在 dubbo 中定義了 ObjectInput、ObjectOutput 與 Serialization 來進(jìn)行數(shù)據(jù)的序列化與反序列化。

1.Serialization 定義

下面我們來看一下 Serialization 的接口定義:

@SPI("hessian2")
public interface Serialization {
    byte getContentTypeId();
    String getContentType();
    @Adaptive
    ObjectOutput serialize(URL url, OutputStream output) throws IOException;
    @Adaptive
    ObjectInput deserialize(URL url, InputStream input) throws IOException;
}

這個接口里面定義了 4 個方法:

getContentTypeId:獲取序列化 ContextType 的 id。

getContentType:獲取到序列化的 ContentType。

serialize:創(chuàng)建一個 ObjectOutput (序列化器),用于把對象轉(zhuǎn)換序列化字節(jié)序列.

deserialize:創(chuàng)建一個 ObjectInput (反序列化器),用于把字節(jié)序列恢復(fù)成對象.

2.支持多種序列化

dubbo 支持多種序列化方式并且序列化是和協(xié)議相對應(yīng)的。比如:dubbo協(xié)議的 dubbo, hessian2,java,compactedjava,rmi協(xié)議缺省為java,以及http協(xié)議的json等。

dubbo序列化:阿里尚未開發(fā)成熟的高效java序列化實(shí)現(xiàn),阿里不建議在生產(chǎn)環(huán)境使用它

hessian2序列化:hessian是一種跨語言的高效二進(jìn)制序列化方式。但這里實(shí)際不是原生的hessian2序列化,而是阿里修改過的hessian lite,它是dubbo RPC默認(rèn)啟用的序列化方式

json序列化:目前有兩種實(shí)現(xiàn),一種是采用的阿里的fastjson庫,另一種是采用dubbo中自己實(shí)現(xiàn)的簡單json庫,但其實(shí)現(xiàn)都不是特別成熟,而且json這種文本序列化性能一般不如上面兩種二進(jìn)制序列化。

java序列化:主要是采用JDK自帶的Java序列化實(shí)現(xiàn),性能很不理想。

這四種主要序列化方式的性能從上到下依次遞減。對于dubbo RPC這種追求高性能的遠(yuǎn)程調(diào)用方式來說,實(shí)際上只有1、2兩種高效序列化方式比較般配,而第1個 dubbo 序列化由于還不成熟,所以實(shí)際只剩下2可用,所以dubbo RPC默認(rèn)采用 hessian2 序列化。

但 hessian 是一個比較老的序列化實(shí)現(xiàn)了,而且它是跨語言的,所以不是單獨(dú)針對java進(jìn)行優(yōu)化的。而dubbo RPC實(shí)際上完全是一種Java to Java的遠(yuǎn)程調(diào)用,其實(shí)沒有必要采用跨語言的序列化方式(當(dāng)然肯定也不排斥跨語言的序列化)。

最近幾年,各種新的高效序列化方式層出不窮,不斷刷新序列化性能的上限,最典型的包括:

專門針對Java語言的:Kryo,F(xiàn)ST等等

跨語言的:Protostuff,ProtoBuf,Thrift,Avro,MsgPack等等

這些序列化方式的性能多數(shù)都顯著優(yōu)于 hessian2 (甚至包括尚未成熟的dubbo序列化)。所以我們可以

為 dubbo 引入 Kryo 和 FST 這兩種高效 Java 來優(yōu)化 dubbo 的序列化。

使用Kryo和FST非常簡單,只需要在dubbo RPC的XML配置中添加一個屬性即可:

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

或者

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

3.序列化擴(kuò)展

可以通過擴(kuò)展 Serialization、ObjectInput、ObjectOutput 來進(jìn)行 dubbo 序列化的擴(kuò)展。

擴(kuò)展示例

Maven 項目結(jié)構(gòu):

src
 |-main
    |-java
        |-com
            |-xxx
                |-XxxSerialization.java (實(shí)現(xiàn)Serialization接口)
                |-XxxObjectInput.java (實(shí)現(xiàn)ObjectInput接口)
                |-XxxObjectOutput.java (實(shí)現(xiàn)ObjectOutput接口)
    |-resources
        |-META-INF
            |-dubbo
                |-com.alibaba.dubbo.common.serialize.Serialization (純文本文件,內(nèi)容為:xxx=com.xxx.XxxSerialization)

XxxSerialization.java:

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

并且通過以下配置來使用新的擴(kuò)展。

<!-- 協(xié)議的序列化方式 -->
<dubbo:protocol serialization="xxx" />
<!-- 缺省值設(shè)置,當(dāng)<dubbo:protocol>沒有配置serialization時,使用此配置 -->
<dubbo:provider serialization="xxx" />

以上就是動力節(jié)點(diǎn)小編介紹的"Dubbo序列化與反序列化",希望對大家有幫助,想了解更多可查看Dubbo教程。動力節(jié)點(diǎn)在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 男人资源在线 | 久久久影视 | 精品国产一区二区麻豆 | 国产成人精品视频一区二区不卡 | 四虎永久地址入口 | 亚洲一区欧美日韩 | 国产永久免费高清动作片www | 欧美在线一区二区三区精品 | 亚洲久久| 九九久久久久午夜精选 | 日韩在线视频网址 | 久久精品在线免费观看 | 天天综合网色 | 国产精品亚洲一区二区三区正片 | 极品美女一级毛片免费 | 亚洲aa| 国产在线观看一区精品 | 国产精品高清一区二区 | 七次郎在线成人精品 | 伊人第一页 | 精品在线一区二区三区 | 四虎在线影院 | 乱人伦99久久| 伊人久久婷婷丁香六月综合基地 | 日韩在线一区二区 | 黄视频网站免费看 | 伊人亚洲综合网 | 色综合五月婷婷 | 精品小视频在线 | 99视频在线国产 | 天天射天天操天天干 | 一级黄色片免费 | 全部无卡免费的毛片在线看 | 成年超爽大片免费视频播放 | 中文字幕一区二区三区 精品 | 丁香综合在线 | 免费福利网站在线观看 | 欧美一级艳片爽快片 | 久久久这里只有精品加勒比 | 新久草| 国产三级做爰高清视频a |