您好,登錄后才能下訂單哦!
這篇文章主要介紹“Dubbo序列化是什么意思”,在日常操作中,相信很多人在Dubbo序列化是什么意思問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Dubbo序列化是什么意思”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
Dubbo序列化支持java、compactedjava、nativejava、fastjson、fst、hessian2、kryo,其中默認(rèn)hessian2。其中java、compactedjava、nativejava屬于原生java的序列化。
整個(gè)Dubbo序列化的類設(shè)機(jī)機(jī)器優(yōu)雅,職責(zé)單一,其整體類圖如下:
主要分為三個(gè)維度進(jìn)行組織:Serialization(序列化策略)、DataInput(反序列化,二進(jìn)制->對(duì)象)、DataOutput(序列化,對(duì)象->二進(jìn)制流)。上述類圖的設(shè)計(jì)及其優(yōu)雅,遵循的設(shè)計(jì)原則大體為:
單一職責(zé),抽象出Input、Output、Serialization,從而抽象出3個(gè)維度的類繼承體系。
優(yōu)先使用類聚合,類在多個(gè)維度分別衍生出3個(gè)繼承體系,然后采用聚合,Serialization聚合input,output,典型的橋接模式。
本節(jié)只簡(jiǎn)單介紹各種序列化的基本特點(diǎn),將在后續(xù)章節(jié)中重點(diǎn)探討kryo、hession2序列化的編碼原理。
在這里我不再重復(fù)介紹kryo,如果是第一次接觸kryo,請(qǐng)?jiān)敿?xì)查看:《Kryo官方文檔中文翻譯》:https://blog.csdn.net/fanjunjaden/article/details/72823866,對(duì)kryo序列化機(jī)制有一個(gè)全貌的概念,看過(guò)上述材料后應(yīng)該知道kryo具備如下幾個(gè)典型的特點(diǎn)。
1、支持泛型
2、序列化字節(jié)序列中可包含類型,反序列化時(shí)無(wú)需傳入類型,對(duì)應(yīng)的API:
public void writeClassAndObject (Output output, Object object)
public Object readClassAndObject (Input input)
3、支持循環(huán)引用
4、類注冊(cè)機(jī)制,主要是在寫入類全路徑名時(shí),如果該類注冊(cè)了,會(huì)分配一個(gè)int類型的值代替字符串的全面,能減少序列化后二進(jìn)制流的大小。
5、Kryo對(duì)象非線程安全性,通常使用ThreadLocal、Kryo對(duì)象池。
到此,關(guān)于“Dubbo序列化是什么意思”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。