Google protobuf:
优点

二进制消息,性能好/效率高(空间和时间效率都很不错)
    proto文件生成目标代码,简单易用
    序列化反序列化直接对应程序中的数据类,不需要解析后在进行映射(XML,JSON都是这种方式)
    支持向前兼容(新加字段采用默认值)和向后兼容(忽略新加字段),简化升级
    支持多种语言(可以把proto文件看做IDL文件)
    Netty等一些框架集成

缺点

官方只支持C++,JAVA和Python语言绑定
    二进制可读性差(貌似提供了Text_Fromat功能)
    二进制不具有自描述特性
    默认不具备动态特性(可以通过动态定义生成消息类型或者动态编译支持)
    只涉及序列化和反序列化技术,不涉及RPC功能(类似XML或者JSON的解析器)

Apache Thrift:
应用

Facebook的开源的日志收集系统(scribe: https://github.com/facebook/scribe)
    淘宝的实时数据传输平台(TimeTunnel http://code.taobao.org/p/TimeTunnel/wiki/index)
    Evernote开放接口(https://github.com/evernote/evernote-thrift)
    Quora(http://www.quora.com/Apache-Thrift)
    HBase( http://abloz.com/hbase/book.html#thrift )
    …

优点

支持非常多的语言绑定
    thrift文件生成目标代码,简单易用
    消息定义文件支持注释
    数据结构与传输表现的分离,支持多种消息格式
    包含完整的客户端/服务端堆栈,可快速实现RPC
    支持同步和异步通信

缺点

和protobuf一样不支持动态特性

Apache Avro:
应用

Hadoop RPC (http://hadoop.apache.org/#What+Is+Apache+Hadoop%3F)

优点

二进制消息,性能好/效率高
    使用JSON描述模式
    模式和数据统一存储,消息自描述,不需要生成stub代码(支持生成IDL)
    RPC调用在握手阶段交换模式定义
    包含完整的客户端/服务端堆栈,可快速实现RPC
    支持同步和异步通信
    支持动态消息
    模式定义允许定义数据的排序(序列化时会遵循这个顺序)
    提供了基于Jetty内核的服务基于Netty的服务

缺点

只支持Avro自己的序列化格式
    语言绑定不如Thrift丰富

三种通用应用层协议protobuf、thrift、avro对比相关推荐

  1. 三种主流流媒体协议比较

    一.介绍 在流媒体协议中,常用的流媒体协议主要有 HTTP协议,RTSP协议和RTMP协议. 在国内视频网站多采用HTTP+MP4或者HTTP+FLV协议传输视频,而国外使用RTMP,RTSP等专门的 ...

  2. vrrp路由器三种状态_VRRP协议具体解释

    Contents                                                                                             ...

  3. 三种流行防火墙配置方案分析与对比

    当我们尽情地在Internet上畅游时,往往把网络的安全问题抛在脑后.其实危险无处不在,防火墙是网络安全的一个重要防护措施,用于对网络和系统的保护.监控通过防火墙的数据,根据管理员的要求,允许和禁止特 ...

  4. 三种基本排序的实现及其效率对比:冒泡排序、选择排序和插入排序

    1 public class ThreeTypesOfBaseSort { 2 // ========================== 三种基本排序的效率对比 ================== ...

  5. 三种通用方法——惠普电脑硬盘数据恢复

    随着当今数字时代的到来,人们对于计算机硬盘上存储的数据越来越重视.然而,电脑硬盘也时常会发生数据丢失的情况,这时候就需要进行数据恢复.惠普电脑是市面上比较常见的品牌之一,因此本文将从惠普电脑硬盘数据恢 ...

  6. poll函数_I/O--多路复用的三种机制Select,Poll和Epoll对比

    I/O多路复用(multiplexing)的本质是通过一种机制(系统内核缓冲I/O数据),让单个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作 ...

  7. html页面滚动导致阴影出现,三种处理滚动穿透问题方案的对比

    背景 产品有三宝,弹窗,浮层加引导: 设计有三宝,透明,阴影加圆角: 运营有三宝,短信,推送加红包: 程序员有一宝,这个做不了. 随着移动端市场的份额越大,需求就越多样化.我们今天讨论的是移动端的滚动 ...

  8. [架构之路-43]:目标系统 - 系统软件 - Linux下的网络通信-3-TCP/IP协议族:IP、TCP/UDP/SCTP、Socket、应用层协议

    目录 第1章 TCP/IP协议简介 1.1 简介 1.2 协议栈 1.3 IP网络 第2章 IP协议 2.1 简介 2.2 IP功能 2.4 IP V4地址 2.5 IP V6地址 2.6 IPV4地 ...

  9. 三种组播×××承载方案对比

    方案一:基于PIM-SM/mGRE的承载方案 如图所示,公网运行PIM-SM协议,且PE 1.PE2和PE 3都支持mVRF实例. 不同的mVRF站点加入到同一个组播域(MD)中,通过MD内自动建立的 ...

最新文章

  1. exit函数_全面深入了解 Python 魔法函数
  2. 细说 #pragma pack(n)
  3. mysql ansi quotes_mysql ANSI_QUOTES 这个sql_mode的作用(字段可以使用双引号)
  4. java和python混合编程_浅谈C++与Java混合编程
  5. 国家开放大学2021春1080工程数学(本)题目
  6. 7-227 PAT排名汇总 (25 分)
  7. gentoo 安装mongodb
  8. 从Nginx、Apache工作原理看为什么Nginx比Apache高效!
  9. 漂亮的代码6:增加字符串后的数字
  10. 为什么不敢和别人竞争_孩子在学校不敢竞争?你该怎么做
  11. Hibernate 主键策略
  12. IE和ff下javascript解释的区别
  13. 计算机网络与综合布线系统设计,计算机网络综合布线系统设计
  14. android分辨率修改器,安卓分辨率一键修改器
  15. 几款少儿编程软件介绍
  16. CodeForce Round#49 untitled (Hdu 5339)
  17. MySQL--查询5天之内过生日的同事中的闰年2月29日问题的解决过程
  18. ogre研究之第一个程序
  19. 完全不懂SEO怎样入手做网站优化
  20. MAC上完美的PDF阅读器+批注编辑软件——PDF Expert

热门文章

  1. Python程序开发——第八章 文件
  2. 什么是抽象类?抽象类的作用_揭秘!Java 泛型背后到底是什么?
  3. php算法在线刷题,c,算法_每日一道算法:leetcode 刷题碰到的问题。,c,算法 - phpStudy...
  4. aem是什么意思_一台400匹的宽体RX7不装转子引擎,那装的是什么?
  5. word2vec模型评估_【新书】从Word2Vec到BERT的自然语言处理嵌入进展,附下载
  6. php echo中的点是什么?,php编程中echo用逗号和用点号连接的区别,echo逗号_PHP教程...
  7. idea 升级到2020后 无法启动_IDEA 2020 无法启动的解决办法(启动崩盘)附IDEA 2020 新功能...
  8. java调用存储过程 sql server_Java中调用SQL Server存储过程示例
  9. arm linux 添加ntp服务,嵌入式linux添加NTP服务
  10. mysql 查询相同字段值的个数_好文 | MySQL 索引B+树原理,以及建索引的几大原则...