使用Avro

一直听说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挺有意思的,

这么看的确比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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值