之前通信协议替换为protocbuf!新老交替,很多不同看法,也提出来一些负面因数:

  1、老的内部通信协议体已经有一段时间了,稳定熟悉!

  2、通过通信结构体进行交互,实际上并没有序列化和反序列化的过程!性能几乎零损耗

  3、通信异常直接可以通过日志打印出来,定位问题时候可以直接查看关键信息

  4、由于老代码用的是内部封装的通信结构体,几乎所有的老代码都直接或间接的引用了老通信协议体,替换工作量比较大

  也存在另外一种正面意见:

  1、老代码陈旧冗余,新增接口或修改接口让人头疼

  2、需要业务层考虑字节序问题

  3、由于是内存偏移操作,程序员风格的差异让整个协议文件变的很乱!更致命的是一旦发生错误定位起来非常困难

  4、另外还有一些内部通信体限制问题

  无论替换过程怎样,项目的车轮还在前进!protocbuf已经在产品中落地生根,一小段周期的接触,总结下:

  protocbuf是google的一个开源项目,很多互联网公司早就在用了,像百度、腾讯这些巨头,而且在github里面的关注度也是一直颇高。

  它也有很多的优势,从我的角度看最明显的是序列化速度快,而且序列化之后字节非常少。

  就我之前所接触的几种序列化,JSON、SAMP、ASN.1性能都不如protocbuf,ASN.1和protocbuf组织有点像,都是树状结构!

  但是ASN.1协议体除了TAG还需要一些辅助信息,对数据的编码也缺少压缩,像DCC、SOAP等网络协议性能更低。

  另外protocbuf还有缓存机制、结构体式接口、兼容性等等一系列的优点

  虽然protocbuf有着明显性能和压缩的优势,虽然这种网络通信里面至关重要,但是我们更关注其缺点:

  1、protocbuf只提供序列化和反序列化的能力,如果用在网络通信里面,需要再封装。

  2、protocbuf序列化之后可读性差,对抓包后面的码流分析起来非常困难,毕竟有时候工具不是万能的,手工是终极绝招

  3、protocbuf描述性文档比较少,目前也没有普遍推广

  另外是开发过程中的一些问题

  4、protocbuf repeated类型,如果想替换已经加入的一个子元素,那几乎要重写所有的元素

  5、protocbuf在没有数据传输的时候,序列化出来的长度是0.虽然这种做法提高了序列化性能和压缩了数据,但是在空数据的情况下,占位符对程序设计影响颇大

  6、protocbuf版本在hp主机上要修改之后才能用

  暂时就这么多吧,我也不知道还要多少坑等着我们,路过的兄弟请提点!

最新文章

  1. 【Swift】iOS UICollectionView 计算 Cell 大小的陷阱
  2. PHP获取某月天数
  3. SSH框架整合(XML)
  4. 专为控制打印设计的CSS样式
  5. C#如何根据配置实现动态窗体
  6. 对于Access数据库查询遇到空值的解决办法
  7. [MetaHook] BaseUI hook
  8. ceph placement group状态总结
  9. RCNN (Regions with CNN) 目标物检测 Fast RCNN的基础
  10. hdu 3068 最长回文子串 马拉车模板
  11. vim 代码
  12. 通过FTP将一个数据文件从A服务器下载到B服务器的整个过程
  13. Longest Substring Without Repeating Characters - 哈希与双指针
  14. linux中多线程解析
  15. HDU 4292Food(网络流的最大流量)
  16. js判断是否是正整数,js判断是否是数字
  17. C语言-知识点及学习路线
  18. iOS 英语
  19. linux文件相关的命令
  20. ubuntu设置网络

热门文章

  1. 什么是动态规划?动态规划的意义是什么?https://www.zhihu.com/question/23995189
  2. 洛谷 2016 战略游戏(树形DP)
  3. hdu1074之状压dp
  4. saltstack升级
  5. 10_CSS入门和高级技巧(8)
  6. 龙贝格算法 MATLAB实现
  7. RabbitMQ|异步
  8. 拒绝老土!暗黑风格半透平面化主题—InfinityFreedom正式发布
  9. 假如用王者荣耀的方式学习webpack
  10. Spring Cloud 系列之 Config 配置中心(二)