REST、SOAP、protocolbuf、thrift、avro

@(JAVA)[hbase, hadoop, storm]

为提供异构环境或者跨语言的通信,需要一个中间协议进行转换,常用的有2大类:

一是传统的明文协议,如REST/SOAP等,这类协议最常用的方式是通过XML/JSON方式进行数据交互,然后通过解释这些文件得到实际所需的数据。其优点是内容可读,缺点是需要在大量的冗余信息,如XML的头,标签等内容。这对于有大量交互的情况时,会浪费大量的带宽。

第二种是protocolbuf、thrift、avro等二进制RPC层。最早是google实现的protocol buffer,但由于google并未将之开源,因此后来facebook写了一套thrift。最后,hadoop项目的创建者Doug Cutting写了一套avro。它们的功能都类似,细节肯定有不同之处。

举个例子,用户如何通过python来访问hbase的基本原理:

  1. hbase启动一个thrift服务
  2. 客户端使用python的API对表进行访问
  3. 这个API会被转化为某种格式(如REST的JSON,或者thrift的二进制),并发送至thift服务器
  4. thrift服务器解释这个JSON文件(或者其它格式),然后转化为内部的API(如HTable)
  5. 通过hbase的内部实现(java)来访问真正的数据。

protocol buffer与thrift/avro的最大不同在于后者有自己的RPC实现,因此可以启动server,而protocol buffer只能依托于另一个server。

REST、SOAP、protocolbuf、thrift、avro相关推荐

  1. 谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解

    2019独角兽企业重金招聘Python工程师标准>>> SOA: 维基百科解释:SOA:面向服务的软件架构(Service Oriented Architecture),是一种计算机 ...

  2. 阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别

    什么是RPC RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC使 ...

  3. 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别

    内容大纲: 1.介绍Restful.SOAP.RPC.SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了 ...

  4. Restful、SOAP、RPC、SOA、微服务之间的区别

    一.介绍Restful.SOAP.RPC.SOA以及微服务 1.1.什么是Restful? Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或 ...

  5. 【转载】谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解

    转载自:https://blog.csdn.net/tantexian/article/details/48196453 SOA: 维基百科解释:SOA:面向服务的软件架构(Service Orien ...

  6. SOA、SOAP、RPC、REST、DUBBO的区别与联系

    1.SOA SOA(面向服务的软件架构.Service Oriented Architecture),是一种软件设计模式,主要应用于不同应用组件之间通过某种协议来互操作.例如典型的 通信网络协议.因此 ...

  7. 物联网应用层协议选择和分析--MQTT、CoAP 、HTTP、XMPP、SoAP

    物联网应用层协议选择和分析--MQTT.CoAP .HTTP.XMPP.SoAP MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)最早 ...

  8. Web services详解 :入门必看 | WSDL、SOAP

    文章目录 概念 交互过程 Web services 三种基本元素: SEI和CXF WSDL 概念 WSDL文档结构 `` **Operation**(操作) `` ***binding*** 元素 ...

  9. 开源组件系列(5):数据的序列化(Thrift、Protobuf、Avro)

    (一)数据序列化的意义 当我们需要将采集的日志存入文件或者是传输到下一个系统时,需要将数据对象转化为字节流格式,也就是数据的序列化过程.通常情况下,搭建一套数据仓库系统,会经历如下四个阶段: 1.没有 ...

最新文章

  1. 全球及中国商业座机电话行业投资潜力及竞争格局展望报告2021-2027年版
  2. 编辑流程图_如何使用ProcessOn快速绘制一张高颜值流程图?
  3. Spotlight on unix 安装
  4. php 上传图片并生成缩略图,php 上传图片并生成缩略图
  5. uwp之拍照(使用后置摄像头)
  6. (专升本)Internet(计算机网络系统)
  7. Multisim14 - 运行10版本文件时数码管一直显示为0的问题
  8. phper must-have
  9. CTE 递归查询全解
  10. STM32----DMA控制器
  11. centos linux安装网卡驱动,如何在CentOS系统下安装网卡驱动
  12. 使用libimobiledevice在linux上挂载iphone6
  13. 小学计算机课题研究方案,《小学信息技术课堂有效教学的探究》课题研究方案...
  14. 链接、图像、列表、计数器
  15. 用图片制作radio单选按钮
  16. 从程序员代码“呼救”大破传销组织_聊掌握一门编程语言的重要性!
  17. 白色相簿2 coda篇各结局概率分析
  18. 微信开放平台绑定各移动应用、网站应用、公众号、小程序、第三方的个数
  19. github上操作部署
  20. 调用顺丰API实现电商专递下单和获取面单功能

热门文章

  1. 【floyd模板】哈利·波特的考试 (25 分)
  2. ValueError: XPath error: Invalid expression in //*[@id=‘info‘]/div/p[1]/test()_Python系列学习笔记
  3. CopyOnWriteArrayList的addIfAbsent()方法
  4. php论坛有哪些_建网站的软件哪个好?建网站的软件有哪些?
  5. php识别名片,用户信息名片怎么利用PHP实现自动生成
  6. java的基础语法是什么_java语法基础
  7. Java 枚举7常见种用法
  8. activity5.1初始密码
  9. html5生日时间怎么写代码,用JavaScript写得比较日期,计算生日的函数,
  10. 微x怎么设置主题_红人堂:抖音直播预告文案怎么写?5个小技巧提高你的文案吸引力!...