1.對微服務的理解 之前看到在群里的朋友門都在討論微服務,看到他們的討論,我也有了一些自己的理解,所謂微服務就是系統里的每個服務都 可以自由組合。自由組合這個就很厲害了,這樣一來,每個服務與服務之間基本的物理 耦合為0,橫向擴展整個系統就會非常非常靈活。 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不管是小數據量還是大數據量都保持比較穩定的性能