首页 > 其他 > 详细

使用Avro

时间:2014-02-25 04:36:04      阅读:516      评论:0      收藏:0      [点我收藏+]

一直听说avro不同于thrift,在hadoop,hbase广泛使用,逐渐替代了原来thrift的使用,就很好奇它有什么好处.

今天抽时间玩了一下,和大家分享下.

目前版本是1.7.6,其schema使用JSON,在RPC中客户端与服务器端在handshake时交换schema信息,而其rpc可以是http方式,也可以是netty2方式.

与thrift,protocol buffer区别在几方面:

1.Dynamic typing: 不必需生成代码(生成代码只是优化选项)

2.Untagged data: 因为schema已经有了,所以数据中只需较少类型信息.

3.No mannually-assigned field ids:因为schema是按field name描述的,不是按field id描述

logo挺有意思的,bubuko.com,布布扣

这么看的确比thrift和proto buffer更好用哈.

查看github上的avro rpc quickstart项目,可以看到使用比较简单,avro rpc的描述文件是这样的:

{"namespace": "example.proto",
 "protocol": "Mail",


 "types": [
     {"name": "Message", "type": "record",
      "fields": [
          {"name": "to",   "type": "string"},
          {"name": "from", "type": "string"},
          {"name": "body", "type": "string"}
      ]   
     }   
 ],


 "messages": {
     "send": {
         "request": [{"name": "message", "type": "Message"}],
         "response": "string"
     }   
 }
}

这里java的例子用的是生成代码的方式,需要使用maven的avro-maven-plugin插件.在Main.java中同时启动了server和client,可以看出rpc使用的是netty2.

python的例子使用的是http方式进行rpc,并且不生成代码,直接parse mail.avro文件.


参考:

http://avro.apache.org/docs/current/

https://github.com/phunt/avro-rpc-quickstart


使用Avro

原文:http://blog.csdn.net/jollyjumper/article/details/19775635

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!