成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Protobuf vs CBOR:新一代的二進制序列化格式

開發 前端
Protobuf 是 Google 開發的一個二進制序列化格式,與 JSON 相比,Protobuf 的數據非常精簡,甚至連數據的字段名都沒有。

 [[386183]]

在以前的文章中,我們講到了什么時候用 Yaml,什么時候用 JSON,什么時候用 Protobuf:

  • 人寫機器讀,用 Yaml
  • 機器寫,人讀,用 JSON
  • 機器寫,機器讀,用 JSON 或者 Protobuf

JSON 作為幾乎每一個語言都支持的序列化格式,在很多地方都得到了廣泛應用。但有個弊端,JSON 里面充斥了大量的大括號、中括號和雙引號,導致冗余的字符太多,數據量非常大,在對傳輸速度有高要求的場景下,數據量越大,占用的傳輸帶寬就越大,單位時間傳輸的數據也就越少。

Protobuf 是 Google 開發的一個二進制序列化格式,與 JSON 相比,Protobuf 的數據非常精簡,甚至連數據的字段名都沒有。例如有這樣一段數據:

  1. a = {'name''kingname''salary': 99999, 'address''上海''skill': ['Python''爬蟲''Golang']} 

如果用 Protobuf 來表示,那么數據的二進制形式是這樣的:

這個二進制數據只有值,但沒有字段名,所以要解析這些數據,必須在代碼里面額外把字段名帶上。所以需要定義一個xxx.proto文件,在里面標記每一個字段的信息。在任何時候任何語言中,需要序列化和反序列化的地方,都要提前使用protoc命令,基于這個.proto文件,生成一個xxx_pb2文件,通過從這個 xxx_pb2文件中導入數據對象來對數據進行處理。

因此,我們說,proto 格式,雖然確實精簡了網絡中的數據傳輸量,但卻給開發者增加了相當大的工作量。

而最近,又新出來一種二進制序列化格式:CBOR,它的數據比 JSON 小,但是開發起來又比 Protobuf 簡單得多。

我們來看看使用 CBOR 對上面的數據進行序列化操作。首先在 Python 中安裝CBOR:

  1. python3 -m pip install cbor2 

安裝完成以后,我們來對數據進行序列化:

  1. import cbor2 
  2. a = {'name''kingname''salary': 99999, 'address''上海''skill': ['Python''爬蟲''Golang']} 
  3.  
  4. result = cbor2.dumps(a) 
  5. print(result) 

運行效果如下圖所示:

注意,打印出來的是二進制數據,不是字符串。可以看到,數據是自帶字段名的,字段名與值之間會有特殊的字符進行分割,CBOR 能夠自動識別這些特殊符號,從而區分字段名和字段值。

經過我的測試,一個150MB 的大 JSON文件,讀入到內存,然后重新通過 CBOR 序列化以后寫文件,這個文件大小可以縮減到60MB 左右。雖然壓縮比例不如 Protobuf,可讀性不如 JSON;但是壓縮比例比 JSON 高,可讀性比 Protobuf 好,而且幾乎不增加額外工作量。

大家在寫微服務或者網站前后端通信的時候,可以考慮試一試 CBOR — Concise Binary Object Representation | Overview[1]。

參考資料

[1]CBOR — Concise Binary Object Representation | Overview: https://cbor.io/

 本文轉載自微信公眾號「未聞Code」,可以通過以下二維碼關注。轉載本文請聯系未聞Code公眾號。

 

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2011-06-01 14:26:11

序列化

2022-09-05 08:12:28

Google二進制Protobuf

2015-06-30 10:00:44

Hyper虛擬化云計算

2009-09-02 16:10:40

ADSL技術

2012-05-29 09:23:42

虛擬化微軟私有云

2010-02-07 15:50:33

Android手機

2012-07-02 10:36:19

菲亞特

2022-03-10 16:01:29

Playwright開源

2013-01-04 16:15:08

微軟ERPDynamics AX

2016-01-26 11:58:12

2009-02-27 09:37:33

Google二進制代碼

2010-05-05 14:33:55

虛擬化

2025-02-10 09:57:23

2012-07-25 13:19:16

ibmdw

2024-01-23 12:27:15

2012-08-30 09:34:08

VMware

2011-03-31 17:49:51

微軟嵌入式WindowsEmbe

2018-06-01 15:18:43

LinuxOrbital App開源

2010-06-17 16:54:49

新一代Hotmail

2017-10-19 16:21:02

SCM存儲技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久热久草| 五月天综合网 | 久色激情 | 一区二区三区免费 | 国产精品视频偷伦精品视频 | 亚洲国产精品一区在线观看 | 成人精品一区二区三区中文字幕 | 久久国产欧美日韩精品 | 国产91久久精品一区二区 | 日本亚洲欧美 | 毛片毛片毛片毛片 | 国产精品日韩欧美一区二区三区 | 亚洲精品久久久久久久久久久久久 | www国产精品 | 天天干天天爱天天操 | 久久三区 | 成人激情视频免费在线观看 | 国产成人精品a视频 | 精品国产一区二区三区在线观看 | av av在线 | 亚洲一级淫片 | 一区二区免费高清视频 | 久久久国产一区二区三区 | 国产精品视频专区 | 北条麻妃99精品青青久久 | 亚洲国产精品va在线看黑人 | 久草久草久草 | 国产精品久久久久久婷婷天堂 | 亚洲精品www | 精品美女久久久 | 91麻豆精品国产91久久久资源速度 | 午夜亚洲| 国产婷婷色综合av蜜臀av | 亚洲电影免费 | 久久高清 | 午夜不卡一区二区 | a毛片| 91视在线国内在线播放酒店 | 国产免费一区二区 | 国产精品一区久久久 | 成人av在线网站 |