Avro 初识

Avro是什么?

Apache Avro是一个数据序列化工具,主要用于将类对象或其它结构形式的数据转化为用于传输的通用的格式,如二进制、json、xml等,并且它是跨语言支持的。

为什么会有Avro?  

先来看下传统的RPC的情况,在跨平台和跨语言的情况下,模块之间的交互和调用过程如下图:


单纯的看就是序列化和反序列化的问题,发送端将对象序列化为二进制格式的数据,然后接收端反序列化接收到的二进制数据,恢复对象。可这个过程需要解决以下问题

1、序列化问题: 使用什么方法将对象序列化为用于传输的通用的格式,如二进制、json、xml。

2、类型问题:  不同语言的数据类型的差异。

3、调用问题: 不同语言的方法调用的差异。

这个过程对于不同的RPC 调用都需要编写不同的发送端和接收端的代码,且使用时也较为复杂。

接着WebService的出现解决了上述问题,它不再需要提供各种不同的序列化和反序列化操作,而是提供一种通用的,任何机器都可以理解的文本语言,如XML、JSON、SOAP协议等,以及后来的基于Http协议的Restful WebService,也是类似的思路,只是角度不同,是操作最简化了。

但当大数据时代到来时,大家发现基于XML,甚至JSON的文本协议的方案的传输效率成了瓶颈,于是Google和Facebook,又开始研究基于二进制的RPC方案,才产生了PB、Thrift、Avro等这些中间件。

参考http://www.cnblogs.com/fxjwind/archive/2013/05/16/3082219.html

Avro的功能特点

它支持多种语言、具有丰富的数据类型、具有动态的Schema、支持排序、主要用于Hadoop的MapReduce编程。

优缺点

Avro最大的特点就是动态schema, schema变化后不需要重新编译client和server的代码;再加上Hadoop的结合。缺点是使用起来较复杂。



另详见:http://blog.csdn.net/qiruiduni/article/details/49250225#t0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值