當(dāng)前位置:首頁(yè) > IT技術(shù) > 其他 > 正文

應(yīng)用層協(xié)議設(shè)計(jì)
2022-04-25 22:55:03



應(yīng)用協(xié)議概述

應(yīng)用層協(xié)議設(shè)計(jì)_redis

  • 在對(duì)外提供網(wǎng)絡(luò)服務(wù)時(shí),服務(wù)端和客戶端需要遵循同一套數(shù)據(jù) 通訊協(xié)議
  • 每個(gè)系統(tǒng)不一樣,提供的服務(wù)也不一樣,因此每個(gè)系統(tǒng)都要有 自己的應(yīng)用協(xié)議
  • 流式傳輸解決粘包和半包問(wèn)題

一個(gè)協(xié)議設(shè)計(jì)案例

應(yīng)用層協(xié)議設(shè)計(jì)_redis_02

具體的代碼

應(yīng)用層協(xié)議設(shè)計(jì)_linux服務(wù)器開(kāi)發(fā)_03

應(yīng)用層協(xié)議設(shè)計(jì)_linux服務(wù)器開(kāi)發(fā)_04

應(yīng)用層協(xié)議設(shè)計(jì)_redis_05

協(xié)議設(shè)計(jì)的種類(lèi)

二進(jìn)制協(xié)議

比如網(wǎng)絡(luò)通信運(yùn)輸層中的tcp協(xié)議,rtsp,rtmp,rtp。

明文的文本協(xié)議

比如應(yīng)用層的http、redis協(xié)議。

混合協(xié)議(二進(jìn)制+明文)

很多企業(yè)產(chǎn)品都采用這個(gè)。

固定邊界協(xié)議

能夠明確得知一個(gè)協(xié)議報(bào)文的長(zhǎng)度,這樣的協(xié)議易于解析,比如tcp協(xié)議。

模糊邊界協(xié)議

無(wú)法明確得知一個(gè)協(xié)議報(bào)文的長(zhǎng)度,這樣的協(xié)議解析較為復(fù)雜,通常需要通過(guò)某些 特定的字節(jié)來(lái)界定報(bào)文是否結(jié)束,比如http協(xié)議。

應(yīng)用層協(xié)議設(shè)計(jì)_后端_06

應(yīng)用層協(xié)議設(shè)計(jì)_linux服務(wù)器開(kāi)發(fā)_07

應(yīng)用層協(xié)議設(shè)計(jì)_linux服務(wù)器開(kāi)發(fā)_08

??https://cloud.tencent.com/developer/article/1038381??

redis協(xié)議

https://xargin.com/redis-protocal/

應(yīng)用層協(xié)議設(shè)計(jì)_linux服務(wù)器開(kāi)發(fā)_09

協(xié)議設(shè)計(jì)的注意事項(xiàng)

大小端

應(yīng)用層協(xié)議設(shè)計(jì)_后端_10

字節(jié)對(duì)齊

任何變量,不管是堆變量還是棧變量都對(duì)應(yīng)著操作系統(tǒng)中的一塊內(nèi)存,由于內(nèi)存對(duì)齊的要求程序中

的變量并不是緊湊存儲(chǔ)的,例如一個(gè)c語(yǔ)言的結(jié)構(gòu)體Test在內(nèi)存中的布局可能如下圖所示。

struct Test
{
char a; char b; int32_t c;
};

應(yīng)用層協(xié)議設(shè)計(jì)_架構(gòu)師_11

結(jié)構(gòu)體操作的變量便宜

應(yīng)用層協(xié)議設(shè)計(jì)_架構(gòu)師_12

協(xié)議設(shè)計(jì)的優(yōu)劣評(píng)判

Netyy中的實(shí)現(xiàn)

高效的

快速的打包解包減少對(duì)cpu的占用,高數(shù)據(jù)壓縮率降低對(duì)網(wǎng)絡(luò)帶寬的占用。

簡(jiǎn)單的

易于人的理解、程序的解析。

易于擴(kuò)展的

對(duì)可預(yù)知的變更,有足夠的彈性用于擴(kuò)展。

容易兼容的

? 向前兼容,對(duì)于舊協(xié)議發(fā)出的報(bào)文,能使用新協(xié)議進(jìn)行解析,只是新協(xié)議支持的新功能不能使用。

? 向后兼容,對(duì)于新協(xié)議發(fā)出的報(bào)文,能使用舊協(xié)議進(jìn)行解析,只是新協(xié)議支持的新功能不能使用。

架構(gòu)師體系

應(yīng)用層協(xié)議設(shè)計(jì)_后端_13


????



本文摘自 :https://blog.51cto.com/u

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >