小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

強(qiáng)列建議將Protobuf作為你的即時(shí)通訊應(yīng)用數(shù)據(jù)傳輸格式

 WindySky 2019-01-22

前言


即時(shí)通訊應(yīng)用(包括IM聊天應(yīng)用、實(shí)時(shí)消息推送應(yīng)用等)在選擇數(shù)據(jù)傳輸格式的時(shí)候,相信沒有真正實(shí)踐過的人,都會(huì)猶豫該怎么選擇。在即時(shí)通訊開發(fā)者同行的眼里,怎么選擇其實(shí)是個(gè)極富爭(zhēng)議話題。不過本文作者強(qiáng)烈建議將Protobuf作為您的即時(shí)通訊應(yīng)用的首選通訊協(xié)議格式,理由請(qǐng)見下文。

據(jù)說(shuō),手機(jī)QQ的數(shù)據(jù)傳輸協(xié)議已在使用Protobuf了,而從官方流出資料來(lái)看微信早就在使用Protobuf(而且為了盡可能地壓縮流量,甚至對(duì)Protobuf進(jìn)行了極致優(yōu)化)。

論壇里有另一個(gè)篇關(guān)于即時(shí)通訊數(shù)據(jù)傳輸格式選擇的文章,可以參考一下:《如何選擇即時(shí)通訊應(yīng)用的數(shù)據(jù)傳輸格式》。

更多資料


Protobuf官方主頁(yè):https://github.com/52im/protobuf
移動(dòng)端IM開發(fā)問題:http://www./thread-133-1-1.html
即時(shí)通訊綜合性資料:http://www./forum.php?mod=collection&action=view&ctid=10
即時(shí)通訊安全性資料:http://www./forum.php?mod=collection&action=view&ctid=6
實(shí)時(shí)音視頻開發(fā)資料:http://www./forum.php?mod=collection&action=view&ctid=4
即時(shí)通訊的架構(gòu)設(shè)計(jì):http://www./forum.php?mod=collection&action=view&ctid=7
更多資料精選請(qǐng)查看:http://www./forum.php?mod=collection&op=all

Protobuf簡(jiǎn)介


一條消息數(shù)據(jù),用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二進(jìn)制序列化的10分之一,總體看來(lái)ProtoBuf的優(yōu)勢(shì)還是很明顯的。

protobuf是google提供的一個(gè)開源序列化框架,類似于XML,JSON這樣的數(shù)據(jù)表示語(yǔ)言,詳情訪問protobuf的google官方網(wǎng)站。

protobuf在google中是一個(gè)比較核心的基礎(chǔ)庫(kù),作為分布式運(yùn)算涉及到大量的不同業(yè)務(wù)消息的傳遞,如何高效簡(jiǎn)潔的表示、操作這些業(yè)務(wù)消息在google這樣的大規(guī)模應(yīng)用中是至關(guān)重要的。而protobuf這樣的庫(kù)正好是在效率、數(shù)據(jù)大小、易用性之間取得了很好的平衡。

詳情請(qǐng)參見Protobuf官方主頁(yè):https://github.com/52im/protobuf。

Protobuf簡(jiǎn)單總結(jié)


  • 靈活、高效:
    靈活(方便接口更新)、高效(效率經(jīng)過google的優(yōu)化,傳輸效率比普通的XML等高很多);
  • 易于使用:
    開發(fā)人員通過按照一定的語(yǔ)法定義結(jié)構(gòu)化的消息格式,然后送給命令行工具,工具將自動(dòng)生成相關(guān)的類,可以支持java、c++、python等語(yǔ)言環(huán)境。通過將這些類包含在項(xiàng)目中,可以很輕松的調(diào)用相關(guān)方法來(lái)完成業(yè)務(wù)消息的序列化與反序列化工作。
  • 語(yǔ)言支持
    原生支持c++,java,python等。

Protobuf支持的開發(fā)語(yǔ)言


截止目前,Protobuf官方工程主頁(yè)上顯示的已支持的開發(fā)語(yǔ)言多達(dá)10種,分別有:C++、Java、Python、Objective-C、C#、JavaNano、JavaScript、Ruby、Go、PHP,基本上主流的語(yǔ)言都已支持。

強(qiáng)列建議將Protobuf作為你的即時(shí)通訊應(yīng)用數(shù)據(jù)傳輸格式_QQ20160502-0.png

詳情請(qǐng)參見Protobuf的官方工程主頁(yè):https://github.com/52im/protobuf

個(gè)人總結(jié)的適用Protobuf的場(chǎng)合


  • 需要和其它系統(tǒng)做消息交換的,對(duì)消息大小很敏感的。那么protobuf適合了,它語(yǔ)言無(wú)關(guān),消息空間相對(duì)xml和json等節(jié)省很多。
  • 小數(shù)據(jù)的場(chǎng)合。如果你是大數(shù)據(jù),用它并不適合。
  • 項(xiàng)目語(yǔ)言是c++,java,python的,因?yàn)樗鼈兛梢允褂胓oogle的源生類庫(kù),序列化和反序列化的效率非常高。其它的語(yǔ)言需要第三方或者自己寫,序列化和反序列化的效率不保證。

總體而言,protobuf還是非常好用的,被很多開源系統(tǒng)用于數(shù)據(jù)通信的工具,在google也是核心的基礎(chǔ)庫(kù)。

寫在最后


此外,F(xiàn)acebook的thrift據(jù)說(shuō)也很有特色,2007年由Facebook開發(fā),之后在2008年加到Apache計(jì)劃中。是一個(gè)跨語(yǔ)言的輕量級(jí)RPC消息和數(shù)據(jù)交換框架,Thrift能生成的語(yǔ)言有: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml,這是它的一大優(yōu)點(diǎn)。

關(guān)于Thrift工程,詳見官方主頁(yè):http://thrift./

全站即時(shí)通訊技術(shù)資料分類


[1] 網(wǎng)絡(luò)編程基礎(chǔ)資料:
TCP/IP詳解 - 第11章·UDP:用戶數(shù)據(jù)報(bào)協(xié)議
TCP/IP詳解 - 第17章·TCP:傳輸控制協(xié)議
TCP/IP詳解 - 第18章·TCP連接的建立與終止
TCP/IP詳解 - 第21章·TCP的超時(shí)與重傳
理論經(jīng)典:TCP協(xié)議的3次握手與4次揮手過程詳解
理論聯(lián)系實(shí)際:Wireshark抓包分析TCP 3次握手、4次揮手過程
計(jì)算機(jī)網(wǎng)絡(luò)通訊協(xié)議關(guān)系圖(中文珍藏版)
NAT詳解:基本原理、穿越技術(shù)(P2P打洞)、端口老化等
UDP中一個(gè)包的大小最大能多大?
Java新一代網(wǎng)絡(luò)編程模型AIO原理及Linux系統(tǒng)AIO介紹
NIO框架入門(三):iOS與MINA2、Netty4的跨平臺(tái)UDP雙向通信實(shí)戰(zhàn)
NIO框架入門(四):Android與MINA2、Netty4的跨平臺(tái)UDP雙向通信實(shí)戰(zhàn)
>> 更多同類文章 ……

[2] 有關(guān)IM/推送的通信格式、協(xié)議的選擇:
為什么QQ用的是UDP協(xié)議而不是TCP協(xié)議?
移動(dòng)端即時(shí)通訊協(xié)議選擇:UDP還是TCP?
如何選擇即時(shí)通訊應(yīng)用的數(shù)據(jù)傳輸格式
強(qiáng)列建議將Protobuf作為你的即時(shí)通訊應(yīng)用數(shù)據(jù)傳輸格式
移動(dòng)端IM開發(fā)需要面對(duì)的技術(shù)問題(含通信協(xié)議選擇)
簡(jiǎn)述移動(dòng)端IM開發(fā)的那些坑:架構(gòu)設(shè)計(jì)、通信協(xié)議和客戶端
理論聯(lián)系實(shí)際:一套典型的IM通信協(xié)議設(shè)計(jì)詳解
58到家實(shí)時(shí)消息系統(tǒng)的協(xié)議設(shè)計(jì)等技術(shù)實(shí)踐分享
>> 更多同類文章 ……

[3] 有關(guān)IM/推送的心跳?;钐幚恚?/strong>
Android進(jìn)程?;钤斀猓阂黄恼陆鉀Q你的所有疑問
Android端消息推送總結(jié):實(shí)現(xiàn)原理、心跳?;?、遇到的問題等
為何基于TCP協(xié)議的移動(dòng)端IM仍然需要心跳?;顧C(jī)制?
微信團(tuán)隊(duì)原創(chuàng)分享:Android版微信后臺(tái)?;顚?shí)戰(zhàn)分享(進(jìn)程?;钇?
微信團(tuán)隊(duì)原創(chuàng)分享:Android版微信后臺(tái)保活實(shí)戰(zhàn)分享(網(wǎng)絡(luò)?;钇?
移動(dòng)端IM實(shí)踐:實(shí)現(xiàn)Android版微信的智能心跳機(jī)制
移動(dòng)端IM實(shí)踐:WhatsApp、Line、微信的心跳策略分析
>> 更多同類文章 ……

[4] 有關(guān)WEB端即時(shí)通訊開發(fā):
新手入門貼:史上最全Web端即時(shí)通訊技術(shù)原理詳解
Web端即時(shí)通訊技術(shù)盤點(diǎn):短輪詢、Comet、Websocket、SSE
SSE技術(shù)詳解:一種全新的HTML5服務(wù)器推送事件技術(shù)
Comet技術(shù)詳解:基于HTTP長(zhǎng)連接的Web端實(shí)時(shí)通信技術(shù)
WebSocket詳解(一):初步認(rèn)識(shí)WebSocket技術(shù)
socket.io實(shí)現(xiàn)消息推送的一點(diǎn)實(shí)踐及思路
>> 更多同類文章 ……

[5] 有關(guān)IM架構(gòu)設(shè)計(jì):
淺談IM系統(tǒng)的架構(gòu)設(shè)計(jì)
簡(jiǎn)述移動(dòng)端IM開發(fā)的那些坑:架構(gòu)設(shè)計(jì)、通信協(xié)議和客戶端
一套原創(chuàng)分布式即時(shí)通訊(IM)系統(tǒng)理論架構(gòu)方案
從零到卓越:京東客服即時(shí)通訊系統(tǒng)的技術(shù)架構(gòu)演進(jìn)歷程
蘑菇街即時(shí)通訊/IM服務(wù)器開發(fā)之架構(gòu)選擇
騰訊QQ1.4億在線用戶的技術(shù)挑戰(zhàn)和架構(gòu)演進(jìn)之路PPT
微信技術(shù)總監(jiān)談架構(gòu):微信之道——大道至簡(jiǎn)(演講全文)
如何解讀《微信技術(shù)總監(jiān)談架構(gòu):微信之道——大道至簡(jiǎn)》
快速裂變:見證微信強(qiáng)大后臺(tái)架構(gòu)從0到1的演進(jìn)歷程(一)
17年的實(shí)踐:騰訊海量產(chǎn)品的技術(shù)方法論
>> 更多同類文章 ……

[6] 有關(guān)IM安全的文章:
即時(shí)通訊安全篇(一):正確地理解和使用Android端加密算法
即時(shí)通訊安全篇(二):探討組合加密算法在IM中的應(yīng)用
即時(shí)通訊安全篇(三):常用加解密算法與通訊安全講解
即時(shí)通訊安全篇(四):實(shí)例分析Android中密鑰硬編碼的風(fēng)險(xiǎn)
傳輸層安全協(xié)議SSL/TLS的Java平臺(tái)實(shí)現(xiàn)簡(jiǎn)介和Demo演示
理論聯(lián)系實(shí)際:一套典型的IM通信協(xié)議設(shè)計(jì)詳解(含安全層設(shè)計(jì))
微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解
來(lái)自阿里OpenIM:打造安全可靠即時(shí)通訊服務(wù)的技術(shù)實(shí)踐分享
>> 更多同類文章 ……

[7] 有關(guān)實(shí)時(shí)音視頻開發(fā):
即時(shí)通訊音視頻開發(fā)(一):視頻編解碼之理論概述
即時(shí)通訊音視頻開發(fā)(二):視頻編解碼之?dāng)?shù)字視頻介紹
即時(shí)通訊音視頻開發(fā)(三):視頻編解碼之編碼基礎(chǔ)
即時(shí)通訊音視頻開發(fā)(四):視頻編解碼之預(yù)測(cè)技術(shù)介紹
即時(shí)通訊音視頻開發(fā)(五):認(rèn)識(shí)主流視頻編碼技術(shù)H.264
即時(shí)通訊音視頻開發(fā)(六):如何開始音頻編解碼技術(shù)的學(xué)習(xí)
即時(shí)通訊音視頻開發(fā)(七):音頻基礎(chǔ)及編碼原理入門
即時(shí)通訊音視頻開發(fā)(八):常見的實(shí)時(shí)語(yǔ)音通訊編碼標(biāo)準(zhǔn)
即時(shí)通訊音視頻開發(fā)(九):實(shí)時(shí)語(yǔ)音通訊的回音及回音消除概述
即時(shí)通訊音視頻開發(fā)(十):實(shí)時(shí)語(yǔ)音通訊的回音消除技術(shù)詳解
即時(shí)通訊音視頻開發(fā)(十一):實(shí)時(shí)語(yǔ)音通訊丟包補(bǔ)償技術(shù)詳解
即時(shí)通訊音視頻開發(fā)(十二):多人實(shí)時(shí)音視頻聊天架構(gòu)探討
即時(shí)通訊音視頻開發(fā)(十三):實(shí)時(shí)視頻編碼H.264的特點(diǎn)與優(yōu)勢(shì)
即時(shí)通訊音視頻開發(fā)(十四):實(shí)時(shí)音視頻數(shù)據(jù)傳輸協(xié)議介紹
即時(shí)通訊音視頻開發(fā)(十五):聊聊P2P與實(shí)時(shí)音視頻的應(yīng)用情況
即時(shí)通訊音視頻開發(fā)(十六):移動(dòng)端實(shí)時(shí)音視頻開發(fā)的幾個(gè)建議
即時(shí)通訊音視頻開發(fā)(十七):視頻編碼H.264、V8的前世今生
簡(jiǎn)述開源實(shí)時(shí)音視頻技術(shù)WebRTC的優(yōu)缺點(diǎn)
良心分享:WebRTC 零基礎(chǔ)開發(fā)者教程(中文)
>> 更多同類文章 ……

[8] IM開發(fā)綜合文章:
移動(dòng)端IM開發(fā)需要面對(duì)的技術(shù)問題
開發(fā)IM是自己設(shè)計(jì)協(xié)議用字節(jié)流好還是字符流好?
請(qǐng)問有人知道語(yǔ)音留言聊天的主流實(shí)現(xiàn)方式嗎?
IM系統(tǒng)中如何保證消息的可靠投遞(即QoS機(jī)制)
談?wù)勔苿?dòng)端 IM 開發(fā)中登錄請(qǐng)求的優(yōu)化
完全自已開發(fā)的IM該如何設(shè)計(jì)“失敗重試”機(jī)制?
微信對(duì)網(wǎng)絡(luò)影響的技術(shù)試驗(yàn)及分析(論文全文)
即時(shí)通訊系統(tǒng)的原理、技術(shù)和應(yīng)用(技術(shù)論文)
開源IM工程“蘑菇街TeamTalk”的現(xiàn)狀:一場(chǎng)有始無(wú)終的開源秀
>> 更多同類文章 ……

[9] 開源移動(dòng)端IM技術(shù)框架資料:
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:快速入門
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:常見問題解答
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:壓力測(cè)試報(bào)告
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:Android版Demo使用幫助
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:Java版Demo使用幫助
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:iOS版Demo使用幫助
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:Android客戶端開發(fā)指南
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:Java客戶端開發(fā)指南
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:iOS客戶端開發(fā)指南
開源移動(dòng)端IM技術(shù)框架MobileIMSDK:Server端開發(fā)指南
>> 更多同類文章 ……

[10] 有關(guān)推送技術(shù)的文章:
iOS的推送服務(wù)APNs詳解:設(shè)計(jì)思路、技術(shù)原理及缺陷等
Android端消息推送總結(jié):實(shí)現(xiàn)原理、心跳?;?、遇到的問題等
掃盲貼:認(rèn)識(shí)MQTT通信協(xié)議
一個(gè)基于MQTT通信協(xié)議的完整Android推送Demo
求教android消息推送:GCM、XMPP、MQTT三種方案的優(yōu)劣
移動(dòng)端實(shí)時(shí)消息推送技術(shù)淺析
掃盲貼:淺談iOS和Android后臺(tái)實(shí)時(shí)消息推送的原理和區(qū)別
絕對(duì)干貨:基于Netty實(shí)現(xiàn)海量接入的推送服務(wù)技術(shù)要點(diǎn)
移動(dòng)端IM實(shí)踐:谷歌消息推送服務(wù)(GCM)研究(來(lái)自微信)
為何微信、QQ這樣的IM工具不使用GCM服務(wù)推送消息?
>> 更多同類文章 ……

[11] 更多即時(shí)通訊技術(shù)好文分類:
http://www./forum.php?mod=collection&op=all

(原文鏈接:http://blog.sina.com.cn/s/blog_406127500102uy6e.html,有刪節(jié)和修改)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多