1 簡(jiǎn)單易用開發(fā)成本低
2 跨語(yǔ)言
3 輕量級(jí)數(shù)據(jù)交換
4 非冗長(zhǎng)性(對(duì)比xml標(biāo)簽簡(jiǎn)單括號(hào)閉環(huán))
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了伊吾免費(fèi)建站歡迎大家使用!
1 體積大,影響高并發(fā)
2 無(wú)版本檢查,自己做兼容
3 片段的創(chuàng)建和驗(yàn)證過程比一般的XML復(fù)雜
4 缺乏命名空間導(dǎo)致信息混合
總結(jié):最簡(jiǎn)單最通用的應(yīng)用協(xié)議,使用廣泛,開發(fā)效率高,性能相對(duì)較低,維護(hù)成本較高。
Protobuf是一種以有效并可擴(kuò)展的格式編碼結(jié)構(gòu)化數(shù)據(jù)的方式。
1 跨語(yǔ)言,可自定義數(shù)據(jù)結(jié)構(gòu)。
2 字段被編號(hào),新添加的字段不影響老結(jié)構(gòu)。解決了向后兼容問題。
3 自動(dòng)化生成代碼,簡(jiǎn)單易用。
4 二進(jìn)制消息,效率高,性能高。
5 Netty等框架集成了該協(xié)議,提供了編×××提高開發(fā)效率。
1 二進(jìn)制格式,可讀性差(抓包dump后的數(shù)據(jù)很難看懂)
2 對(duì)象冗余,字段很多,生成的類較大,占用空間。
3 默認(rèn)不具備動(dòng)態(tài)特性(可以通過動(dòng)態(tài)定義生成消息類型或者動(dòng)態(tài)編譯支持)
總結(jié):簡(jiǎn)單快速上手,高效兼容性強(qiáng),維護(hù)成本較高。
官網(wǎng)和指南
https://developers.google.com/protocol-buffers/
github
https://github.com/protocolbuffers/protobuf
netty 對(duì) protobuf 協(xié)議的解碼與包裝探究
https://www.cnblogs.com/tankaixiong/p/6366043.html
protobuf開發(fā)原則和缺陷詳解
https://my.oschina.net/cxh4905?tab=newest&catalogId=387288
1 序列化和RPC支持一站式解決,比pb更方便
2 跨語(yǔ)言,IDL接口定義語(yǔ)言,自動(dòng)生成多語(yǔ)言文件
3 省流量,體積較小
4 包含完整的客戶端/服務(wù)端堆棧,可快速實(shí)現(xiàn)RPC
5 為服務(wù)端提供了多種工作模式,如線程池模型、非阻塞模型
1 早期版本問題較大,0.7以前有兼容性問題
2 不支持雙通道
3 rpc方法非線程安全,服務(wù)器容易被掛死,需要串行化。
4 默認(rèn)不具備動(dòng)態(tài)特性(可以通過動(dòng)態(tài)定義生成消息類型或者動(dòng)態(tài)編譯支持)
5 開發(fā)環(huán)境、編譯較麻煩
總結(jié):跨語(yǔ)言、實(shí)現(xiàn)簡(jiǎn)單,初次使用較麻煩,需要避免使用問題和場(chǎng)景限制。
Thrift: The Missing Guide
https://diwakergupta.github.io/thrift-missing-guide/
和 Thrift 的一場(chǎng)美麗邂逅
https://www.cnblogs.com/cyfonly/p/6059374.html
由淺入深了解Thrift(一)——Thrift介紹與用法
https://blog.csdn.net/houjixin/article/details/42778335
1 跨語(yǔ)言,多語(yǔ)言支持(超多)
2 It’s like JSON.but fast and small.序列化反序列化效率高(比json快一倍),文件體積小,比json小一倍。
3 兼容json數(shù)據(jù)格式
1.缺乏復(fù)雜模型支持。msgpack對(duì)復(fù)雜的數(shù)據(jù)類型(List、Map)支持的不夠,序列化沒有問題,但是反序列化回來就很麻煩,尤其是對(duì)于java開發(fā)人員。
2.維護(hù)成本較高。msgpack通過value的順序來定位屬性的,需要在不同的語(yǔ)言中都要維護(hù)同樣的模型以及模型中屬性的順序。
3.不支持模型嵌套。msgpack無(wú)法支持在模型中包含和嵌套其他自定義的模型(如weibo模型中包含comment的列表)。
總結(jié):高性能但擴(kuò)展性較差維護(hù)成本較高。
官網(wǎng)
https://msgpack.org/
msgpack-java
https://github.com/msgpack/msgpack-java
MessagePack for C#譯文
https://www.cnblogs.com/stulzq/p/8039933.html
原理分析和使用
https://www.jianshu.com/p/8c24bef40e2f
code
https://www.programcreek.com/java-api-examples/?api=org.msgpack.MessagePack
序列化時(shí)間對(duì)比
序列化大小對(duì)比
go語(yǔ)言序列化性能比較
https://github.com/smallnest/gosercomp
各種 Java 的序列化庫(kù)的性能比較測(cè)試結(jié)果
http://developer.51cto.com/art/201506/480273.htm
新聞標(biāo)題:JSON、Protobuf、Thrift、MessagePack對(duì)比和開發(fā)指南
鏈接URL:http://vcdvsql.cn/article14/pdejde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、電子商務(wù)、虛擬主機(jī)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)