2013年6月18日星期二

FreeWheel的架构 -- Protocol Buffer by Google

FreeWheel的架构 中提到由于其日志的巨量,由TextLog转成了Binary Log  by Google protocol buffer .

1. Google Protocol buffer 和 Xml 比较

一   都可以用来定义结构化数据,protocol buffer 更简单
   如果我们要xml来定义结构化数据,通常我们会这样:
<struct>
       <field type="int">1<field>
       <field type="stirng">a<field>
</struct>
    如果使用protocol buffer,可以这样做:
     message struct {
        required int32 field1;
        required string field2;
     }
     可以看出google的protocol buffer预定义了一些类型,常用类似于C的struct的语法来定义结构化数据。这里我们可以看出,protocol buffer 更实用

二 序列化
    protocol buffer 可以在硬盘上保存结构化的数据,不同的系统都可以读取,比如 C++生成一个protocol buffer,并将其写入到硬盘, 另一个JAVA程序就可以读取了。 XML 那就不更不用说了,C++,java都可以解析和生成。protocol buffer主要是比较高效,大小是同样功能XML的30%,解析速度是XML的20~100倍。

三   RPC
    Xml-rpc 使用XML来交换数据,比如soap, web service。我个人觉得xml-rpc的效率比较低。我们也可以使用protocol buffer 来作为rpc的数据交换格式.

    Protocol buffer是一套用过来对数据结构进行encoding的东东,Google内部都是用这个东西来保存数据,做RPC。这个东西最大的好处就是数据结构 的序列话,并且是支持Java, C++和python,就是说你用Protocol Buffer规定的格式定义一个数据结构,用它提供的proto compiler可以把这个数据结构的定义转成C++/Java/Python代码,赞啊。

http://www.cnblogs.com/visoeclipse/archive/2009/08/28/1555942.html

3. JSon vs PB:
http://blog.csdn.net/sudaobo/archive/2010/04/01/5439994.aspx
http://www.4feets.com/2009/08/serializing-data-json-vs-protocol-buffers/

4. Thrift vs PB:
http://stuartsierra.com/2008/07/10/thrift-vs-protocol-buffers


转自:

没有评论:

发表评论