在netty项目中使用protobuf编解码(一):protobuf与其他主流编解码方案的对比

为什么选择protobuf

目前java常用的编解码方案有:

xml
java序列化
xml
json
msgPack
protobuf

选择编解码方案的主要维度:
1.编码后占用空间:

xml,java序列化 out!

2.编解码速度,占用内存:

xml,java序列化 out!out!

3.多种编程语言支持:

java序列化 out!out!out!
xml,json best!
msgPack,protobuf good!

4.是否追求可读性:

json,xml good!
msgPack,protobuf bad!

5.社区关注度

以下是截止目前github上的数据
MsgPack:
在这里插入图片描述
msgPack关注度不少,但截止目前github最近一次更新是2018年。慎选。

Protobuf:
在这里插入图片描述
Flatbuffers:
在这里插入图片描述
可以看出主流的几个编解码方案github关注度都挺高,其中protobuf关注度度最高。

性能对比

综合上面各个维度的权衡,protobuf、msgPack都是比较有前途的编解码方案。如果要兼顾可读性的话,json编解码方式还是可以的。

从网上查了下集中编解码方案的性能对比。找到一个19年的文章,只有有限的实验对照,个人认为不严谨。仅做参考。
链接:【优化】序列化库的选择(FlatBuffers,ProtoBuf,MessagePack,Json)
另外一篇实验了json,protobuf和msgPack间的性能比较,从小文件,大文件,请求数量,编解码速度,错误率等多个维度进行了对照。结论是msgPack和protobuf都明显优于json,msgPack在小文件下更有优势。
链接:The need for speed — Experimenting with message serialization

netty上编解码方案选择

优先选protobuf。无他,netty对protobuf编解码方案做了非常漂亮的集成,其次protobuf本身也足够优秀。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值