四月 14, 2011

RPC 数据交换格式

Written by

RPC简称远程调用,说白了就是不同机器之间的交流通信,不同平台之间的交流通信,牵涉到机器间的交流通信,就要做到跟平台无关,不论是linux,windows也好都可以进行相互间的交流,跟语言无关,不论是C,C++,java等,都能够近可能多的表达出够准确的意思,也就是说,数据交换的格式定义在分布式数据通讯当中很重要,传统的xml,json都能满足上述的功能需求,而对于一个大型的分布式应用,定义一种高效,更少的传输数据量,更快的解释和生成速度满足系统间的调用需求,对资源的节省十分可观,由此各个公司纷纷推出各自内部进行数据通讯的rpc数据格式。
目前使用最多的莫过于xml和json,而且它们相应的支持的语言和平台更多是一种通用的标准,像soap,rest等都采用了xml进行数据通讯,而json常用作WEB程序客户端跟服务器端进行数据通讯的一种交换格式。目前很火热的莫过于Google Protocol Buffer( 简称 Protobuf) ,Protobuf是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API(摘抄自wikipedia)。facebook相应的也推出自己的一个叫thrift的rpc数据交换格式,thrift属于facebook.com技术核心框架之一,使用不同开发语言开发的系统可以通过该框架实现彼此间的通讯,开发者只需编辑一份 thrift脚本,即可自动获得与其它开发语言的代码进行数据通讯,它的数据文件定义格式跟Protobuf很像。Avro是著名的分布式计算框架hadoop采用的一种分布式的数据通讯格式,相应的可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。BSON是一种类似于json的一种数据格式,目前著名的nosql软件mongodb采用该格式进行数据通讯。最近看到日本的nosql大会上介绍了一个叫kumofs的分布式存储软件,它当中采用一个叫MessagePack的数据格式进行数据交换,从作者的介绍来看,它支持的功能要比上述的格式要多,支持异步rpc,Parallel Pipelining,Thrift IDL,动态的数据类型,连接池,延迟返回,事件驱动I/O类型等,而且作者号称速度要比其它的数据格式小,解释和生成速度快。具体可参照文档

rpc数据交换格式多,相应的的选择的余力也就更大,到底那一种选择那一种,传统的xml,json也够用,新奇的也很有诱惑力,关键在于那一种适合你当前的需求。

本文转自:http://blog.netzhou.net/?p=101

转载请注明原作者及出处!

Category : .NetC/C++C#Linux/Unix

Tags :

Comments

One Response

  1. itfanr说道:

    NFS使用的XDR也是一种格式吧?

发表评论

电子邮件地址不会被公开。

Proudly powered by WordPress and Sweet Tech Theme