自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony啃論文成長計劃---Flatbuffers應用于MQTT協(xié)議

系統(tǒng) OpenHarmony
我們今天要講的開源技術Flatbuffers,是在2014年,Google 員工 Wouter van Oortmerssen 為了解決游戲中性能的問題,于是開發(fā)出了這個序列化類庫。

??想了解更多內(nèi)容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區(qū)??

??https://ost.51cto.com??

大家好! 我是深圳技術大學FSR實驗室的同學,在OpenHarmony成長計劃啃論文俱樂部,學習研究JSON相關的技術,并且我是第二組的成員。

場景匯總

Flatbuffers:Flatbuffers作為MQTT協(xié)議數(shù)據(jù)傳輸格式的性能分析。

JSON作為MQTT協(xié)議數(shù)據(jù)交換格式有很多缺點,比如處理的時間長等,而Google最近引入了一種名為Flatbuffers的新數(shù)據(jù)格式,與其他數(shù)據(jù)格式相比,F(xiàn)latbuffers具有更好的數(shù)據(jù)格傳輸性能。

本文將引用文獻討論通過 MQTT 發(fā)布/訂閱通信模型測試 Flatbuffers 與其他數(shù)據(jù)格式之間的性能差異。

技術發(fā)展時間及應用

https://github.com/google/flatbuffers。

我們今天要講的開源技術Flatbuffers,是在2014年,Google 員工 Wouter van Oortmerssen 為了解決游戲中性能的問題,于是開發(fā)出了這個序列化類庫。

Flatbuffers概述

FlatBuffers 是一個開源的、跨平臺的、高效的、提供了多種語言接口的序列化類庫。目前該類庫提供C++, C#, C, Go, Java, JavaScript, PHP, and Python語言接口。

特點:

  • 無需解碼, FlatBuffers的不同之處在于,它在一個平面二進制緩沖區(qū)中表示分層數(shù)據(jù),這樣就可以直接訪問它,而不需要解碼。
  • 擴展性、靈活性較高,類庫中支持的可選字段可以具有很好的前向/后向兼容能力。
  • 跨平臺,支持C++11、Java,而不需要任何依賴庫;在最新的gcc、clang、vs2010等編譯器上工作良好。

MQTT協(xié)議

MQTT協(xié)議是一個基于客戶端-服務器的消息發(fā)布/訂閱傳輸協(xié)議,工作在TCP/IP協(xié)議上。

它是一個輕量,簡單,開放且易于實現(xiàn)的一個協(xié)議,通常應用于機器與機器(M2M)之間通信和物聯(lián)網(wǎng)(IoT)設備。

并且不需要很多帶寬,而且開源,所以很多庫都支持使用這種協(xié)議,MQTT比HTTP 1.1協(xié)議輕,當用于實時發(fā)送數(shù)據(jù)時是個不錯的選擇。

在發(fā)布/訂閱者通信中,MQTT模型充當代理,如圖。

MQTT具有以下特點:

  • 簡易高效,MQTT一般用于處理資源較少的設備通信。
  • 不需要管理員,它可以自動響應一些數(shù)據(jù),或者本身不需要的數(shù)據(jù)。
  • 最大限度地減少了數(shù)據(jù)地發(fā)送,保持較小的帶寬頻率。
  • 比較靈活,可以處理所有類型數(shù)據(jù)。

場景介紹

  • 在一個具有許多傳感器數(shù)據(jù)的物聯(lián)網(wǎng)設備中,使用MQTT協(xié)議發(fā)送傳感器數(shù)據(jù)到其他終端。

在使用MQTT發(fā)送數(shù)據(jù)之前,需要先進行預處理和數(shù)據(jù)轉換,即將JSON數(shù)據(jù)的IoT傳感器數(shù)據(jù)轉換為其他幾種數(shù)據(jù)格式,通過Flatbuffer類庫處理過后存入緩沖區(qū),然后將緩沖區(qū)保存到包含BIN數(shù)據(jù)的文件中,除了具有BIN格式的數(shù)據(jù)外,還有其他數(shù)據(jù)格式,例如Json,CSV和XML。

處理過后的文件大小如下:

性能比較

有效負載(Payload)

CSV 數(shù)據(jù)格式擁有最小有效負載,其值為 0.9955 個字符/字節(jié)。而XML有效負載值最大,值為 0.9985。有效負載越大,文件大小就越大,所以有效負載值會影響文件的大小。

計算公式:

等待時間(Latency)

首先是發(fā)送數(shù)據(jù)的等待時間(Delivery Latency),可以看到Json是發(fā)送時間最快的,接著是XML,而 CSV 和Flatbuffer需要比其他數(shù)據(jù)格式花費更長的時間。也表明了Flatbuffer序列化過程對傳遞時的性能相對其他格式較差。如上圖:

然后是接收數(shù)據(jù)的等待時間(Processing Latency)。通過上圖可以看到,在接收數(shù)據(jù)的時候出現(xiàn)了相反的結果,F(xiàn)latbuffer 顯示出了最佳性能。其原因也是Flatbuffer 的一個很重要的特點,就是訂閱者接收信息時不需要反序列化(即不需要解碼)。

吞吐量(Throughput)

發(fā)送數(shù)據(jù)的吞吐量(Delivery Throughput)比較如下圖:

接收數(shù)據(jù)的吞吐量(Processing Throughput)比較如下圖:

可以看到XML不過是發(fā)送還是接收數(shù)據(jù)都具備很高的吞吐量,原因就是他的文件大小較小且低延遲。而Flatbuffer處于中規(guī)中矩的位置。

總結

通過以上各項測量指標對比我們可以發(fā)現(xiàn),F(xiàn)latbuffers 的有效負載值(Payload)非常小,因此效率很高。測量等待時間(Latency)時,接收數(shù)據(jù)的時候所需要的等待解析時間是非常短的,但是在發(fā)送數(shù)據(jù)序列化的等待時間較長。測量吞吐量(Throughput)`時其表現(xiàn)也是中規(guī)中矩。

從結論上來看,F(xiàn)latbuffers 序列化類庫在MQTT協(xié)議中用在數(shù)據(jù)存儲上會非常優(yōu)秀,但是用在數(shù)據(jù)發(fā)送上,相比于其他數(shù)據(jù)格式性能還是不太優(yōu)秀。

參考文獻

①.Flatbuffers Implementation on MQTT Publish/Subscribe Communication as Data Delivery Format。

②.A Survey of JSON-compatible Binary Serialization Specifications。

??想了解更多內(nèi)容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區(qū)??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關推薦

2022-03-31 16:13:27

Avro數(shù)據(jù)序列化系統(tǒng)Harmony

2022-02-16 16:28:22

RPC鴻蒙操作系統(tǒng)

2022-03-22 15:04:20

中間件分布式軟件鴻蒙

2022-03-08 15:23:20

序列化反序列化鴻蒙

2022-02-24 16:32:26

OpenHarmon壓縮編碼鴻蒙

2022-03-28 15:17:12

JSONXMLHarmony

2022-03-28 15:28:42

分布式軟總線通訊Harmony

2022-03-30 14:43:00

Harmony分布式軟總線通訊

2022-05-20 14:21:50

物聯(lián)網(wǎng)通信協(xié)議

2022-08-05 19:55:20

學術科研鴻蒙

2022-02-10 14:57:46

OpenHarmon鴻蒙操作系統(tǒng)

2022-02-10 15:33:05

OpenHarmon應用開發(fā)操作系統(tǒng)

2023-06-30 00:04:37

CPU調度程序

2010-07-09 14:39:31

HART通訊協(xié)議

2022-08-22 17:36:13

啃論文方法啃論文俱樂部

2022-04-20 20:37:58

鴻蒙操作系統(tǒng)

2023-10-30 00:14:34

Agent提示工程LLM

2011-01-15 12:34:37

紅旗IVI

2016-08-18 10:34:40

云存儲

2022-05-13 23:03:25

大數(shù)據(jù)Big Data巨量資料
點贊
收藏

51CTO技術棧公眾號