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