title: Avro——从入门到放弃 layout: post date: 2017-06-18 tag:

  • java
  • avro

近期尝试寻找一个支持异步RPC比较好的整体解决方案。我希望能尽量简单,不需要一上来就考虑分布式。异步调用支持的足够完整。其实我最熟悉的还是tomcat,但是servlet在支持异步上面有先天劣势,尽管tomcat从开发到调优都已十分方便且成熟,但是在异步调用这里,肯定是不如netty的。不是tomcat实现的不好,而是受限于servlet标准。

所以就想找一个好的替代品。以前就知道有Avro这号东西的,对标的其他开源项目有protocol buffer和thrift。具体就不介绍了,简单说来就是,Avro更像是序列化数据结构这个领域的终结品。诞生于Hadoop,目的在于成为Hadoop中序列化数据结构的基础实现,替代protobuf和thrift。

于是呼,我就写了个demo project,但是到最后也没有完成…Avro也不是啥新项目,也存在有些日子了,实在想不清为什么文档会那么差。整个文档就没有涉及异步rpc的事情!我是手动翻阅maillist和jira tickets才找到的。然后写出来的demo中,居然不能异步调用。尽管在客户端确实是调用的异步方法,但是到server这边居然还是走的同步的实现-。- 我在网上也确实看到有一个人遇到了相同的问题,各种尝试均以失败告终。

文档真的太重要了。也许Avro存在的目的就是为了服务于Hadoop,反正RPC的功能我是放弃了,不过序列化数据结构我还是会用的。确实是个好东西。