3 RPC框架中的序列化

2021-10-23 06:29:16 字數 516 閱讀 2114

網路傳輸的資料必須是二進位制資料,但呼叫方的出入參都是物件,所以需要把物件轉化成可傳輸的二進位制,並且要求演算法是可逆的,這個過程叫做序列化。服務提供方可以從二進位制資料中分割出不同的請求,根據請求型別和序列化型別,把二進位制的資料逆向還原成請求物件,這個過程叫反序列化

需要考慮下的因素,效能、效率以及效能開銷。

序列化之後的二進位制資料提及大小。序列化後的位元組資料體積越小,網路傳輸的資料量越小,傳輸資料越快,傳輸速度直接關係到請求相應的耗時。

同時要考慮序列化的 安全性,通用性以及相容性。

優先順序高低

安全性》通用性》相容性》效能》效率》空間開銷

物件過於複雜;

物件過於龐大。

物件有複雜的繼承關係 。

服務呼叫的穩定性和可靠性相對於效能和耗時更重要。對於rpc呼叫來說,最為耗時最耗效能的操作大多是服務提供者執行業務邏輯的操作,這是序列化的開銷對於服務整體的開銷相對影響比較小。

構造入參與返回值物件的注意點

基於jdk序列化的 BIO簡單RPC框架

具體實現步驟 定義requesthandler類,實現了runnable介面,即乙個連線對應乙個執行緒 定義main方法,建立rpcserver物件和service物件,rpcserver.start 開啟服務 rpc client的實現 自定義的invocationhandler類 定義main方...

Kryo java高效序列化框架

由於最近需要用到一些序列化,然後查了一些資料發現kryo這個框架比較高效。下面說一下使用的一些注意事項。在使用kryo時候首先匯入所需的依賴,或者在pom檔案中加入 com.esotericsoftwaregroupid kryoartifactid 3.0.3version dependency ...

Python中的序列化和反序列化

python中的序列化和反序列化通常有兩種模組的使用 1 pickle模組 2 json模組 1 序列化 就是把不可傳輸的物件轉換為可儲存或可傳輸的過程 2 反序列化 就是把在磁碟,等介質中的資料轉換為物件 描述 對於大多數應用程式來講,dump 和load 函式的使用就是你使用pickle模組所需...