大資料:protobuf是啥玩意兒

發表於2019-05-11
protobuf使用者結構化資料往hbase裡存取只用。http://blog.csdn.net/caisini_vc/article/details/5599468
首先,protobuf是一個開源 專案(官方站點在“這裡”),而且是後臺很硬的開源專案。網上現有的大部分(至少80%)開源專案,要麼是某人單幹、要麼是幾個閒雜人等合夥搞。而protobuf則不然,它是鼎鼎大名的Google公司開發出來,並且在Google內部久經考驗的一個東東。由此可見,它的作者絕非一般閒雜人等可比。
那這個聽起來牛X的東東到底有啥用處捏?簡單地說,這個東東干的事兒其實和XML 差不多,也就是把某種資料結構的資訊,以某種格式儲存起來。主要用於資料儲存、傳輸協議格式等場合。有同學可能心理犯嘀咕了:放著好好的XML不用,幹嘛重新發明輪子啊?!先別急,後面俺自然會有說道。
話說到了去年(大約是08年7月),Google突然大發慈悲,把這個好東西貢獻給了開源社群。這下,像俺這種喜歡撿現成的傢伙可就有福啦!貌似喜歡撿現成的傢伙還蠻多滴,再加上Google的號召力,開源後不到一年,protobuf的人氣就已經很旺了。所以俺為了與時俱進,就單獨開個帖子來忽悠一把。
★protobuf有啥特色?
掃盲完了之後,就該聊一下技術 方面的話題了。由於這玩意兒釋出的時間較短(未滿週歲),所以俺接觸的時間也不長。今天在此是先學現賣,列位看官多多包涵:-)
◇效能好/效率高
現在,俺就來說說Google公司為啥放著好端端的XML不用,非要另起爐灶,重新造輪子。一個根本的原因是XML效能不夠好。
先說時間開銷:XML格式化(序列化)的開銷倒還好;但是XML解析(反序列化)的開銷就不敢恭維啦。俺之前經常碰到一些時間效能很敏感的場合,由於不堪忍受XML解析的速度,棄之如敝履。
再來看空間開銷:熟悉XML語法的同學應該知道,XML格式為了有較好的可讀性,引入了一些冗餘的文字資訊。所以空間開銷也不是太好(不過這點缺點,俺不常碰到)。
由於Google公司賴以吹噓的就是它的海量資料和海量處理能力。對於幾十萬、上百萬機器的叢集,動不動就是PB級的資料量,哪怕效能稍微提高0.1%也是相當可觀滴。所以Google自然無法容忍XML在效能上的明顯缺點。再加上Google從來就不缺造輪子的牛人,所以protobuf也就應運而生了。
Google對於效能的偏執,那可是出了名的。所以,俺對於Google搞出來protobuf是非常滴放心,效能上不敢說是最好,但肯定不會太差。
◇程式碼 生成機制
除了效能好,程式碼生成機制是主要吸引俺的地方。為了說明這個程式碼生成機制,俺舉個例子。
比如有個電子商務的系統(假設用C++實現),其中的模組A需要傳送大量的訂單資訊給模組B,通訊的方式使用socket。
假設訂單包括如下屬性:
具體內容,請點選檢視
回覆

相關文章