微服務框架surging學習之路——序列化


1.對微服務的理解

  之前看到在群里的朋友門都在討論微服務,看到他們的討論,我也有了一些自己的理解,所謂微服務就是系統里的每個服務都 可以自由組合。自由組合這個就很厲害了,這樣一來,每個服務與服務之間基本的物理 耦合為0,橫向擴展整個系統就會非常非常靈活。

surging的厲害之處也恰恰是可以做到這些,所以surging 是.net core 里面一個非常不錯的微服務框架。

2.surging的序列化方式

2.1 json.Net

surging 使用的是Newtonsoft.Json, 它是基於json格式的序列化和反序列化的組件

json.net 有以下優點:

       侵入性:可以不添加attribute,就能進行序列化操作

       靈活性:可以靈活性配置,比如允許被序列化的成員自定義名字,屏蔽的非序列化屬性成員

       可讀性: 數據格式比較簡單, 易於讀寫

       依賴性:可以序列化成JObject,無需依賴對象進行序列化和泛型化。

2.2 protobuf

surging 使用的是protobuf-net, 它是基於二進制格式的序列化和反序列化的組件

protobuf 有以下優點:

     性能高 : 序列化后體積相比Json和XML很小,適合RPC二進制傳輸
   跨語言:支持跨平台多語言
        兼容性:消息格式升級和兼容性還不錯
        速度快 :序列化反序列化速度很快,快於Json的處理速度

2.3 messagepack

messagepack:surging 使用的是MessagePack-CSharp, 它是基於二進制格式的序列化和反序列化的組件

messagepack有以下優點:

      性能高:序列化后體積相比Json和XML很小,適合RPC二進制傳輸
   跨語言:支持跨平台多語言
        兼容性:消息格式升級和兼容性還不錯
        速度快 :序列化反序列化速度很快,快於Json的處理速度

 

針對於protobuf和messagepack都是基於二進制格式的序列化和反序列化,優點都一樣,但是基於messagepack的MessagePack-CSharp組件侵入性更小,可以不需要加attribute,而且性能上更優.

 3.每種序列化組件的性能對比

一張圖就可以說明問題

通過上圖,可以發現messagepack不管是小數據量還是大數據量都保持比較穩定的性能


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM