欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

微服务框架surging学习之路——序列化

程序员文章站 2022-08-31 17:06:10
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.每种序列化组件的性能对比

一张图就可以说明问题

微服务框架surging学习之路——序列化

通过上图,可以发现messagepack不管是小数据量还是大数据量都保持比较稳定的性能