接下来项目中会用到thrift:一个跨平台,支持多语言的,通过定义IDL文件,自动生成RPC客户端与服务端通信代码的工具(谈不上框架,后面学习中会记录下thrift学习相关的东西)
在查找thrift学习资料中,了解到与之类似的有google的protocol buffer,以及avro。
protocol buffer刚查找了一些资料,了解了下,pb是一种序列化与结构化数据的一种机制,具有跨平台、解析速度快、序列化数据体积小、扩展性高、使用简单的特点。pb相对于thrift 而言,是没有RPC代码自动生成的,但是官方提供RPC接口可供实现。 另外PB的序列化数据的体积在传输过程中相对于thrift也有一定的优势,相对于thrift的TCompactProtocol协议,PB的传输效果有一点点的优势,但是TCompactProtocol协议比PB在协议与其它方式产生的运行开销以及CPU与平均处理时间上,thrift的TCompactProtocol协议效果更好些。
相比thrift ,PB,avro可以提供简单的动态语言结合功能,Avro和动态语言结合后,读写数据文件和使用RPC协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。
avroj是一个数据序列化的系统,提供的特性如下:
2. 快速可压缩的二进制数据形式 3. 存储持久数据的文件容器 4. 远程过程调用RPC 5. 简单的动态语言结合功能,Avro和动态语言结合后,读写数据文件和使用RPC协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。( 具体avro与动态语言结合的特性,有时间会去研究下。)
下面是pb的一篇文章,以及google官方指南的地址,记下来,接下来会去了解学习。
介绍protocol buffers的一篇文章:
http://www.searchtb.com/2010/11/protocol-buffers%E7%9A%84%E5%BA%94%E7%94%A8%E4%B8%8E%E5%88%86%E6%9E%90.html
官方指南:
http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/proto.html
thrift接下来学习中会陆续更新。