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代码,赞啊。
2.XML、 JSON、ProtocolBuffer、Lua特点比较:
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
http://wiki.github.com/eishay/jvm-serializers/
转自:
http://hi.baidu.com/%B3%A3%B7%E1%B7%E5/blog/item/f8bf8921d327844eac34de0b.html