偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JSON, Protobuf, Thrift和MessagePack的優(yōu)缺點(diǎn)對(duì)比

開(kāi)發(fā)
最近咱們公司內(nèi)部搞了個(gè)技術(shù)交流,討論起了序列化協(xié)議怎么選。我覺(jué)得這話(huà)題挺有意思的,就順手整理了一下現(xiàn)在主流的序列化協(xié)議的優(yōu)缺點(diǎn)。這樣一來(lái),以后查起來(lái)也方便。

最近咱們公司內(nèi)部搞了個(gè)技術(shù)交流,討論起了序列化協(xié)議怎么選。我覺(jué)得這話(huà)題挺有意思的,就順手整理了一下現(xiàn)在主流的序列化協(xié)議的優(yōu)缺點(diǎn)。這樣一來(lái),以后查起來(lái)也方便。

JSON

先說(shuō)說(shuō) JSON,這貨讀起來(lái)挺舒服,用起來(lái)也簡(jiǎn)單。擴(kuò)展性和兼容性都不錯(cuò),能在不同語(yǔ)言之間傳來(lái)傳去結(jié)構(gòu)化數(shù)據(jù)。

但 JSON 也有缺點(diǎn),比如體積大,影響性能,尤其是高并發(fā)的時(shí)候。還有就是缺乏命名空間,有時(shí)候信息會(huì)亂成一團(tuán)。

總結(jié)起來(lái),JSON 是個(gè)簡(jiǎn)單通用的應(yīng)用協(xié)議,用得挺廣,開(kāi)發(fā)效率挺高,但性能一般,維護(hù)成本也偏高。

Protobuf

接下來(lái)是 Protobuf,這貨是個(gè)高性能、易擴(kuò)展的序列化框架。

優(yōu)點(diǎn)很明顯,跨語(yǔ)言,向后兼容,新增字段不影響已有的協(xié)議。代碼自動(dòng)生成,用起來(lái)簡(jiǎn)單。二進(jìn)制消息,效率高,性能好。而且安全性也不錯(cuò),只寫(xiě)字段號(hào),編碼成二進(jìn)制,破解難度大。

缺點(diǎn)嘛,二進(jìn)制消息可讀性差,字段冗余,類(lèi)文件會(huì)越來(lái)越大,維護(hù)成本高。而且 Protobuf 只管序列化和反序列化,RPC 功能得另請(qǐng)高明。

RPC 是啥?就是遠(yuǎn)程過(guò)程調(diào)用,一個(gè)機(jī)器(客戶(hù)端)調(diào)用另一個(gè)機(jī)器(服務(wù)器)上的函數(shù)或方法,然后拿到結(jié)果。RPC 會(huì)隱藏底層通信細(xì)節(jié),不用你直接處理 Socket 或 Http 通信,用起來(lái)就像調(diào)用本地函數(shù)一樣。

總結(jié) Protobuf,上手簡(jiǎn)單,高效,兼容性強(qiáng),但維護(hù)成本也高。

Thrift

Thrift 是 Facebook 2007年開(kāi)發(fā)的跨語(yǔ)言 RPC 框架,支持多語(yǔ)言編譯,提供多種服務(wù)器工作模式。

優(yōu)點(diǎn)是序列化和 RPC 一站式解決,比 Protobuf 方便??缯Z(yǔ)言,IDL 接口定義語(yǔ)言,自動(dòng)生成多語(yǔ)言文件。省流量,體積小。包含完整的客戶(hù)端/服務(wù)端堆棧,RPC 實(shí)現(xiàn)起來(lái)快。服務(wù)端有多種工作模式,比如線(xiàn)程池、非阻塞模型。

缺點(diǎn)是不支持雙通道,RPC 方法非線(xiàn)程安全,服務(wù)器容易被掛死,需要串行化。默認(rèn)不具備動(dòng)態(tài)特性,開(kāi)發(fā)環(huán)境和編譯有點(diǎn)麻煩。

總結(jié) Thrift,跨語(yǔ)言,實(shí)現(xiàn)簡(jiǎn)單,但初次使用有點(diǎn)麻煩,得注意使用問(wèn)題和場(chǎng)景限制。

MessagePack

MessagePack 是一種高效的二進(jìn)制序列化格式。

優(yōu)點(diǎn)是跨語(yǔ)言,多語(yǔ)言支持。序列化反序列化效率高,文件體積小,比 JSON 小一倍,還兼容 JSON 數(shù)據(jù)格式。

缺點(diǎn)是缺乏復(fù)雜模型支持,對(duì)復(fù)雜數(shù)據(jù)類(lèi)型(List、Map)支持不夠。序列化沒(méi)問(wèn)題,但反序列化回來(lái)就麻煩了,尤其是對(duì) Java 開(kāi)發(fā)人員來(lái)說(shuō)。維護(hù)成本也高,因?yàn)?MessagePack 通過(guò)值的順序來(lái)定位屬性,不同語(yǔ)言中都得維護(hù)一樣的模型和屬性順序。還不支持模型嵌套。

總結(jié) MessagePack,性能高,但擴(kuò)展性差,維護(hù)成本高。

哦,對(duì)了,在整理的時(shí)候我還有點(diǎn)疑問(wèn)。有人說(shuō) MessagePack 的序列化和反序列化效率是 Protobuf 的 4 倍,我個(gè)人表示懷疑。后續(xù)的文章可能會(huì)對(duì)這兩個(gè)協(xié)議做個(gè)細(xì)致的對(duì)比。

好了,今天的分享就到這兒,希望對(duì)你有幫助。有啥問(wèn)題咱們?cè)儆懻摚?/p>

責(zé)任編輯:華軒 來(lái)源: 科學(xué)隨想錄
相關(guān)推薦

2016-09-08 14:50:59

AndroidiPhoneiOS

2024-01-04 08:00:22

時(shí)序數(shù)據(jù)庫(kù)項(xiàng)目

2013-05-07 10:09:07

2016-08-10 08:14:13

虛擬主機(jī)海外主機(jī)

2010-06-01 19:33:53

SVN與CVS優(yōu)缺點(diǎn)

2011-08-19 09:21:42

2019-10-31 11:16:57

Web框架Angular

2021-09-13 10:27:34

云備份云恢復(fù)云計(jì)算

2017-11-17 10:46:13

NginxApache服務(wù)器

2019-02-26 15:23:01

數(shù)據(jù)安全磁盤(pán)

2013-03-19 12:51:59

VDI網(wǎng)絡(luò)虛擬化虛擬化技術(shù)

2010-06-19 14:19:18

RIP路由協(xié)議

2024-08-27 08:29:49

2021-10-09 09:52:17

云存儲(chǔ)公共云遷移

2019-01-24 13:40:58

機(jī)器學(xué)習(xí)深度學(xué)習(xí)人工智能

2013-06-26 10:25:39

2010-05-19 16:15:05

SVN與CVS

2021-09-08 09:00:00

DevOps開(kāi)發(fā)IT

2023-07-06 16:08:52

物聯(lián)網(wǎng)人工智能

2009-09-04 08:33:25

VirtualBox虛
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)