国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

既然有HTTP協(xié)議,為什么還要有RPC?

這篇具有很好參考價(jià)值的文章主要介紹了既然有HTTP協(xié)議,為什么還要有RPC?。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

既然有HTTP協(xié)議,為什么還要有RPC?

我想起了我剛工作的時(shí)候,第一次接觸RPC協(xié)議,當(dāng)時(shí)就很懵,我HTTP協(xié)議用得好好的,為什么還要用RPC協(xié)議?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-707982.html

于是就到網(wǎng)上去搜。

?

不少解釋顯得非常官方,我相信大家在各種平臺(tái)上也都看到過,解釋了又好像沒解釋,都在用一個(gè)我們不認(rèn)識(shí)的概念去解釋另外一個(gè)我們不認(rèn)識(shí)的概念,懂的人不需要看,不懂的人看了還是不懂。

?

這種看了,又好像沒看的感覺,云里霧里很難受,我懂。

?

為了避免大家有強(qiáng)烈的審丑疲勞,今天我們來嘗試重新?lián)Q個(gè)方式講一講。

?

一、從TCP聊起

?

作為一個(gè)程序員,假設(shè)我們需要在A電腦的進(jìn)程發(fā)一段數(shù)據(jù)到B電腦的進(jìn)程,我們一般會(huì)在代碼里使用socket進(jìn)行編程。

?

這時(shí)候,我們可選項(xiàng)一般也就TCP和UDP二選一TCP可靠,UDP不可靠。除非是馬總這種神級(jí)程序員(早期QQ大量使用UDP),否則,只要稍微對可靠性有些要求,普通人一般無腦選TCP就對了。

?

類似下面這樣。

?

  • ?
fd = socket(AF_INET,SOCK_STREAM,0);

?

其中SOCK_STREAM,是指使用字節(jié)流傳輸數(shù)據(jù),說白了就是TCP協(xié)議。

?

在定義了socket之后,我們就可以愉快地對這個(gè)socket進(jìn)行操作,比如用bind()綁定IP端口,用connect()發(fā)起建連。

?

既然有HTTP協(xié)議,為什么還要有RPC?

握手建立連接流程

?

在連接建立之后,我們就可以使用send()發(fā)送數(shù)據(jù),recv()接收數(shù)據(jù)。

?

光這樣一個(gè)純裸的TCP連接,就可以做到收發(fā)數(shù)據(jù)了,那是不是就夠了?

?

不行,這么用會(huì)有問題。

?

二、使用純裸TCP會(huì)有什么問題

?

八股文常背,TCP是有三個(gè)特點(diǎn),面向連接、可靠、基于字節(jié)流。

?

既然有HTTP協(xié)議,為什么還要有RPC?

TCP是什么

?

這三個(gè)特點(diǎn)真的概括得非常精辟,這個(gè)八股文我們沒白背。

?

每個(gè)特點(diǎn)展開都能聊一篇文章,而今天我們需要關(guān)注的是基于字節(jié)流這一點(diǎn)。

?

字節(jié)流可以理解為一個(gè)雙向的通道里流淌的數(shù)據(jù),這個(gè)數(shù)據(jù)其實(shí)就是我們常說的二進(jìn)制數(shù)據(jù),簡單來說就是一大堆?01 串。純裸TCP收發(fā)的這些 01 串之間是沒有任何邊界的,你根本不知道到哪個(gè)地方才算一條完整消息。

?

既然有HTTP協(xié)議,為什么還要有RPC?

01二進(jìn)制字節(jié)流

?

正因?yàn)檫@個(gè)沒有任何邊界的特點(diǎn),所以當(dāng)我們選擇使用TCP發(fā)送"夏洛"和"特?zé)?的時(shí)候,接收端收到的就是"夏洛特?zé)?,這時(shí)候接收端沒法區(qū)分你是想要表達(dá)"夏洛"+"特?zé)?還是"夏洛特"+"煩惱"。

?

既然有HTTP協(xié)議,為什么還要有RPC?

消息對比

?

這就是所謂的粘包問題,之前也寫過一篇專門的文章聊過這個(gè)問題。

?

說這個(gè)的目的是為了告訴大家,純裸TCP是不能直接拿來用的,你需要在這個(gè)基礎(chǔ)上加入一些自定義的規(guī)則,用于區(qū)分消息邊界。

?

于是我們會(huì)把每條要發(fā)送的數(shù)據(jù)都包裝一下,比如加入消息頭,息頭里寫清楚一個(gè)完整的包長度是多少,根據(jù)這個(gè)長度可以繼續(xù)接收數(shù)據(jù),截取出來后它們就是我們真正要傳輸?shù)南Ⅲw。

?

既然有HTTP協(xié)議,為什么還要有RPC?

消息邊界長度標(biāo)志

?

而這里頭提到的消息頭,還可以放各種東西,比如消息體是否被壓縮過和消息體格式之類的,只要上下游都約定好了,互相都認(rèn)就可以了,這就是所謂的協(xié)議。

?

每個(gè)使用TCP的項(xiàng)目都可能會(huì)定義一套類似這樣的協(xié)議解析標(biāo)準(zhǔn),他們可能有區(qū)別,但原理都類似。

?

于是基于TCP,就衍生了非常多的協(xié)議,比如HTTP和RPC。

?

三、HTTP和RPC

?

我們回過頭來看網(wǎng)絡(luò)的分層圖。

?

既然有HTTP協(xié)議,為什么還要有RPC?

四層網(wǎng)絡(luò)協(xié)議

?

TCP是傳輸層的協(xié)議,而基于TCP造出來的HTTP和各類RPC協(xié)議,它們都只是定義了不同消息格式的應(yīng)用層協(xié)議而已。

?

HTTP協(xié)議(Hyper Text Transfer Protocol),又叫做超文本傳輸協(xié)議。我們用的比較多,平時(shí)上網(wǎng)在瀏覽器上敲個(gè)網(wǎng)址就能訪問網(wǎng)頁,這里用到的就是HTTP協(xié)議。

?

既然有HTTP協(xié)議,為什么還要有RPC?

HTTP調(diào)用

?

RPC(Remote Procedure Call),又叫做遠(yuǎn)程過程調(diào)用。它本身并不是一個(gè)具體的協(xié)議,而是一種調(diào)用方式。

?

舉個(gè)例子,我們平時(shí)調(diào)用一個(gè)本地方法就像下面這樣。

?

  • ?
 res = localFunc(req)

?

如果現(xiàn)在這不是個(gè)本地方法,而是個(gè)遠(yuǎn)端服務(wù)器暴露出來的一個(gè)方法remoteFunc,如果我們還能像調(diào)用本地方法那樣去調(diào)用它,這樣就可以屏蔽掉一些網(wǎng)絡(luò)細(xì)節(jié),用起來更方便,豈不美哉?

?

  • ?
 res = remoteFunc(req)

?

既然有HTTP協(xié)議,為什么還要有RPC?

RPC可以像調(diào)用本地方法那樣調(diào)用遠(yuǎn)端方法

?

基于這個(gè)思路,大佬們造出了非常多款式的RPC協(xié)議,比如比較有名的gRPC,thrift。

?

值得注意的是,雖然大部分RPC協(xié)議底層使用TCP,但實(shí)際上它們不一定非得使用TCP,改用UDP或者HTTP,其實(shí)也可以做到類似的功能。

?

既然有HTTP協(xié)議,為什么還要有RPC?

基于TCP協(xié)議的HTTP和RPC協(xié)議

?

到這里,我們回到文章標(biāo)題的問題。

?

既然有HTTP協(xié)議,為什么還要有RPC?

?

其實(shí),TCP是70年代出來的協(xié)議,而HTTP是90年代才開始流行的。而直接使用裸TCP會(huì)有問題,可想而知,這中間這么多年有多少自定義的協(xié)議,而這里面就有80年代出來的RPC。

?

所以我們該問的不是既然有HTTP協(xié)議為什么要有RPC,而是為什么有RPC還要有HTTP協(xié)議。

?

那既然有RPC了,為什么還要有HTTP呢?

?

現(xiàn)在電腦上裝的各種聯(lián)網(wǎng)軟件,比如xx管家,xx衛(wèi)士,它們都作為客戶端(client)需要跟服務(wù)端(server)建立連接收發(fā)消息,此時(shí)都會(huì)用到應(yīng)用層協(xié)議,在這種client/server (c/s)架構(gòu)下,它們可以使用自家造的RPC協(xié)議,因?yàn)樗还苓B自己公司的服務(wù)器就ok了。

?

但有個(gè)軟件不同,瀏覽器(browser),不管是chrome還是IE,它們不僅要能訪問自家公司的服務(wù)器(server),還需要訪問其他公司的網(wǎng)站服務(wù)器,因此它們需要有個(gè)統(tǒng)一的標(biāo)準(zhǔn),不然大家沒法交流。于是,HTTP就是那個(gè)時(shí)代用于統(tǒng)一?browser/server (b/s)?的協(xié)議。

?

也就是說在多年以前,HTTP主要用于b/s架構(gòu),而RPC更多用于c/s架構(gòu)。但現(xiàn)在其實(shí)已經(jīng)沒分那么清了,b/s和c/s在慢慢融合。很多軟件同時(shí)支持多端,比如某度云盤,既要支持網(wǎng)頁版,還要支持手機(jī)端和pc端,如果通信協(xié)議都用HTTP的話,那服務(wù)器只用同一套就夠了。而RPC就開始退居幕后,一般用于公司內(nèi)部集群里,各個(gè)微服務(wù)之間的通訊。

?

那這么說的話,都用HTTP得了,還用什么RPC?

?

仿佛又回到了文章開頭的樣子,那這就要從它們之間的區(qū)別開始說起。

?

四、HTTP和RPC有什么區(qū)別

?

我們來看看RPC和HTTP區(qū)別比較明顯的幾個(gè)點(diǎn)。

?

1.服務(wù)發(fā)現(xiàn)

?

首先要向某個(gè)服務(wù)器發(fā)起請求,你得先建立連接,而建立連接的前提是,你得知道IP地址和端口。這個(gè)找到服務(wù)對應(yīng)的IP端口的過程,其實(shí)就是服務(wù)發(fā)現(xiàn)。

?

HTTP中,你知道服務(wù)的域名,就可以通過DNS服務(wù)去解析得到它背后的IP地址,默認(rèn)80端口。

?

RPC的話,就有些區(qū)別,一般會(huì)有專門的中間服務(wù)去保存服務(wù)名和IP信息,比如consul或者etcd,甚至是redis。想要訪問某個(gè)服務(wù),就去這些中間服務(wù)去獲得IP和端口信息。由于dns也是服務(wù)發(fā)現(xiàn)的一種,所以也有基于dns去做服務(wù)發(fā)現(xiàn)的組件,比如CoreDNS。

?

可以看出服務(wù)發(fā)現(xiàn)這一塊,兩者是有些區(qū)別,但不太能分高低。

?

2.底層連接形式

?

以主流的HTTP1.1協(xié)議為例,其默認(rèn)在建立底層TCP連接之后會(huì)一直保持這個(gè)連接(keep alive),之后的請求和響應(yīng)都會(huì)復(fù)用這條連接。

?

RPC協(xié)議,也跟HTTP類似,也是通過建立TCP長鏈接進(jìn)行數(shù)據(jù)交互,但不同的地方在于,RPC協(xié)議一般還會(huì)再建個(gè)連接池,在請求量大的時(shí)候,建立多條連接放在池內(nèi),要發(fā)數(shù)據(jù)的時(shí)候就從池里取一條連接出來,用完放回去,下次再復(fù)用,可以說非常環(huán)保。

?

既然有HTTP協(xié)議,為什么還要有RPC?

connection_pool

?

由于連接池有利于提升網(wǎng)絡(luò)請求性能,所以不少編程語言的網(wǎng)絡(luò)庫里都會(huì)給HTTP加個(gè)連接池,比如go就是這么干的。

?

可以看出這一塊兩者也沒太大區(qū)別,所以也不是關(guān)鍵。

?

3.傳輸?shù)膬?nèi)容

?

基于TCP傳輸?shù)南?,說到底,無非都是消息頭header和消息體body。

?

header是用于標(biāo)記一些特殊信息,其中最重要的是消息體長度。

?

body則是放我們真正需要傳輸?shù)膬?nèi)容,而這些內(nèi)容只能是二進(jìn)制01串,畢竟計(jì)算機(jī)只認(rèn)識(shí)這玩意。所以TCP傳字符串和數(shù)字都問題不大,因?yàn)樽址梢赞D(zhuǎn)成編碼再變成01串,而數(shù)字本身也能直接轉(zhuǎn)為二進(jìn)制。但結(jié)構(gòu)體呢,我們得想個(gè)辦法將它也轉(zhuǎn)為二進(jìn)制01串,這樣的方案現(xiàn)在也有很多現(xiàn)成的,比如json,protobuf。

?

這個(gè)將結(jié)構(gòu)體轉(zhuǎn)為二進(jìn)制數(shù)組的過程就叫序列化,反過來將二進(jìn)制數(shù)組復(fù)原成結(jié)構(gòu)體的過程叫反序列化。

?

既然有HTTP協(xié)議,為什么還要有RPC?

序列化和反序列化

?

對于主流的HTTP1.1,雖然它現(xiàn)在叫超文本協(xié)議,支持音頻視頻,但HTTP設(shè)計(jì)初是用于做網(wǎng)頁文本展示的,所以它傳的內(nèi)容以字符串為主。header和body都是如此。在body這塊,它使用json來序列化結(jié)構(gòu)體數(shù)據(jù)。

?

我們可以隨便截個(gè)圖直觀看下。

?

既然有HTTP協(xié)議,為什么還要有RPC?

HTTP報(bào)文

?

可以看到這里面的內(nèi)容非常多的冗余,顯得非常啰嗦。最明顯的,像header里的那些信息,其實(shí)如果我們約定好頭部的第幾位是content-type,就不需要每次都真的把"content-type"這個(gè)字段都傳過來,類似的情況其實(shí)在body的json結(jié)構(gòu)里也特別明顯。

?

而RPC,因?yàn)樗ㄖ苹潭雀?,可以采用體積更小的protobuf或其他序列化協(xié)議去保存結(jié)構(gòu)體數(shù)據(jù),同時(shí)也不需要像HTTP那樣考慮各種瀏覽器行為,比如302重定向跳轉(zhuǎn)啥的。因此性能也會(huì)更好一些,這也是在公司內(nèi)部微服務(wù)中拋棄HTTP,選擇使用RPC的最主要原因。

?

既然有HTTP協(xié)議,為什么還要有RPC?

HTTP原理

?

既然有HTTP協(xié)議,為什么還要有RPC?

RPC原理

?

當(dāng)然上面說的HTTP,其實(shí)特指的是現(xiàn)在主流使用的HTTP1.1,HTTP2在前者的基礎(chǔ)上做了很多改進(jìn),所以性能可能比很多RPC協(xié)議還要好,甚至連gRPC底層都直接用的HTTP2。

?

那么問題又來了。

?

為什么既然有了HTTP2,還要有RPC協(xié)議?

?

這個(gè)是由于HTTP2是2015年出來的。那時(shí)候很多公司內(nèi)部的RPC協(xié)議都已經(jīng)跑了好些年了,基于歷史原因,一般也沒必要去換了。

?

總結(jié)

?

  • 純裸TCP是能收發(fā)數(shù)據(jù),但它是個(gè)無邊界的數(shù)據(jù)流,上層需要定義消息格式用于定義消息邊界。于是就有了各種協(xié)議,HTTP和各類RPC協(xié)議就是在TCP之上定義的應(yīng)用層協(xié)議。

    ?

  • RPC本質(zhì)上不算是協(xié)議,而是一種調(diào)用方式,而像gRPC和thrift這樣的具體實(shí)現(xiàn),才是協(xié)議,它們是實(shí)現(xiàn)了RPC調(diào)用的協(xié)議。目的是希望程序員能像調(diào)用本地方法那樣去調(diào)用遠(yuǎn)端的服務(wù)方法。同時(shí)RPC有很多種實(shí)現(xiàn)方式,不一定非得基于TCP協(xié)議。

    ?

  • 從發(fā)展歷史來說,HTTP主要用于b/s架構(gòu),而RPC更多用于c/s架構(gòu)。但現(xiàn)在其實(shí)已經(jīng)沒分那么清了,b/s和c/s在慢慢融合。很多軟件同時(shí)支持多端,所以對外一般用HTTP協(xié)議,而內(nèi)部集群的微服務(wù)之間則采用RPC協(xié)議進(jìn)行通訊。

    ?

  • RPC其實(shí)比HTTP出現(xiàn)得要早,且比目前主流的HTTP1.1性能要更好,所以大部分公司內(nèi)部都還在使用RPC。

    ?

  • HTTP2.0在HTTP1.1的基礎(chǔ)上做了優(yōu)化,性能可能比很多RPC協(xié)議都要好,但由于是這幾年才出來的,所以也不太可能取代掉RPC。

?

最后留個(gè)問題吧,大家有沒有發(fā)現(xiàn),不管是HTTP還是RPC,它們都有個(gè)特點(diǎn),那就是消息都是客戶端請求,服務(wù)端響應(yīng)。客戶端沒問,服務(wù)端肯定就不答,這就有點(diǎn)僵了,但現(xiàn)實(shí)中肯定有需要下游主動(dòng)發(fā)送消息給上游的場景,比如打個(gè)網(wǎng)頁游戲,站在那啥也不操作,怪也會(huì)主動(dòng)攻擊我,這種情況該怎么辦呢?

?

>>>>

參考資料

?

  • https://www.zhihu.com/question/41609070

?

作者丨小白

到了這里,關(guān)于既然有HTTP協(xié)議,為什么還要有RPC?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 為什么要有虛擬內(nèi)存?

    為什么要有虛擬內(nèi)存?

    什么是虛擬內(nèi)存? 多個(gè)進(jìn)程如果同時(shí)操作真實(shí)的地址內(nèi)存的話,會(huì)產(chǎn)生沖突。 于是操作系統(tǒng)就提供了一種機(jī)制,讓每個(gè)進(jìn)程都仿佛擁有全部的內(nèi)存地址,這些內(nèi)存地址是虛擬的,由操作系統(tǒng)提供統(tǒng)一的方式映射到真實(shí)的物理地址。 虛擬內(nèi)存的作用: 進(jìn)程隔離,進(jìn)程層面不用

    2024年02月15日
    瀏覽(34)
  • SaaS是什么?企業(yè)為什么要有SaaS系統(tǒng)?

    SaaS是什么?企業(yè)為什么要有SaaS系統(tǒng)?

    什么是SaaS系統(tǒng)?企業(yè)為什么要有SaaS系統(tǒng)? 近幾年, SaaS突然變成了一個(gè)熱門詞匯 ,無論是一些權(quán)威報(bào)告,還是 知乎上知友們熱烈的討論,對于Saas系統(tǒng)可謂是各有各的見解和看法。 今天就綜合幾位答主的觀點(diǎn),以及我個(gè)人的見解,為大家解釋下,到底什么是SaaS系統(tǒng)。 想要

    2023年04月20日
    瀏覽(28)
  • I2C中為什么線與?為什么要有上拉電阻?

    I2C中為什么線與?為什么要有上拉電阻?

    ????????首先,連接到 I2C 上的設(shè)備是開漏輸出的。以漏極開漏輸出(OD)為例,是指將輸出級(jí)電路結(jié)構(gòu)改為一個(gè)漏極開路輸出的 MOS 管。這樣做的好處在于: 防止短路。 可以實(shí)現(xiàn) “線與”邏輯 ,可以減少一個(gè)與門的使用,簡化電路。 結(jié)論: I2C支持多個(gè)主設(shè)備與多個(gè)從設(shè)

    2024年02月09日
    瀏覽(31)
  • 【UML】淺談為什么要有UML?

    上高中的時(shí)候,經(jīng)常使用一些軟件,覺得這些軟件挺有意思的,就一直很好奇系統(tǒng)這個(gè)東西是怎么構(gòu)建出來的。直到后來,大學(xué)的時(shí)候上了一門叫做系統(tǒng)分析與設(shè)計(jì)的課程,從UML開始再到用Spring Boot和Vue寫一個(gè)系統(tǒng),慢慢的有一點(diǎn)點(diǎn)的概念,但是還是感覺迷迷糊糊。研究生的

    2024年02月05日
    瀏覽(25)
  • 有了MySQL,為什么還要有NoSQL

    有了MySQL,為什么還要有NoSQL

    ? ? ??今日學(xué)習(xí)目標(biāo): ??MySQL和NoSQL的區(qū)別 ? 創(chuàng)作者 :林在閃閃發(fā)光 ?預(yù)計(jì)時(shí)間:30分鐘 ??個(gè)人主頁:林在閃閃發(fā)光的個(gè)人主頁 ???林在閃閃發(fā)光的個(gè)人社區(qū),歡迎你的加入:?林在閃閃發(fā)光的社區(qū) 目錄 noSQL的大概意思 理論支撐 為什么需要NoSQL 為什么NoSQL有處理超大規(guī)模

    2023年04月20日
    瀏覽(26)
  • CentOS軟件那么老為什么大家還要用它?

    作為一個(gè)專業(yè)的服務(wù)器系統(tǒng),RHEL 系統(tǒng)理論上每一個(gè)軟件包都有 RedHat 內(nèi)部的人員負(fù)責(zé)維護(hù),這個(gè)維護(hù)包括長期(和系統(tǒng)生命周期一樣長)的開發(fā)、更新、測試、運(yùn)維等。也就是說你能從 RHEL 系統(tǒng)源上獲得的每一個(gè)軟件包,出現(xiàn)問題都可以找 RedHat 負(fù)責(zé)。所以 RHEL 不可能無限制

    2024年02月01日
    瀏覽(40)
  • 為什么有了HTTP,還需要WebSocket協(xié)議?

    為什么有了HTTP,還需要WebSocket協(xié)議?

    目錄 WebSocket是什么? WebSocket怎樣建立連接? WebSocket的實(shí)際用途 WebSocket 與 HTTP 的選擇 HTTP 是基于 TCP協(xié)議 的,同一時(shí)間里,客戶端和服務(wù)器只能有一方主動(dòng)發(fā)數(shù)據(jù),是 半雙工通信 。 通常,打開某個(gè)網(wǎng)頁,我們每點(diǎn)擊一次網(wǎng)頁上的某個(gè)選項(xiàng),前端就會(huì)發(fā)送一次HTTP請求,網(wǎng)站

    2024年02月11日
    瀏覽(29)
  • 數(shù)據(jù)結(jié)構(gòu)與算法這么難,為什么我們還要學(xué)習(xí)?

    提到數(shù)據(jù)結(jié)構(gòu)與算法,就一定會(huì)伴隨著諸多所謂的堅(jiān)持和抱怨。同時(shí),還有兩個(gè)詞總是出現(xiàn),一個(gè)是內(nèi)功,是對知識(shí)的定位,一個(gè)是吃透,是對自己

    2024年01月19日
    瀏覽(29)
  • 97-TCP為什么要有一個(gè)“TIME_WAIT“的狀態(tài)

    97-TCP為什么要有一個(gè)“TIME_WAIT“的狀態(tài)

    \\\"TIME_WAIT\\\"狀態(tài)存在的原因主要有兩點(diǎn): 假設(shè)上圖中用于確認(rèn)服務(wù)器結(jié)束報(bào)文段6的TCP報(bào)文段7丟失,那么服務(wù)器將重發(fā)結(jié)束報(bào)文段,因此客戶端需要停留在某個(gè)狀態(tài)以處理重復(fù)收到的結(jié)束報(bào)文段.否則客戶端將以復(fù)位報(bào)文段來回應(yīng)服務(wù)器,服務(wù)器則認(rèn)為這是一個(gè)錯(cuò)誤,因?yàn)樗谕氖且?/p>

    2024年02月01日
    瀏覽(33)
  • HTTP協(xié)議演進(jìn):為什么說HTTP/1.1的時(shí)代已經(jīng)過去了

    HTTP協(xié)議演進(jìn):為什么說HTTP/1.1的時(shí)代已經(jīng)過去了

    前言 ??歡迎來到今天的每日一題,每日一提。昨天聊到了,HTTP 是什么。有哪些組成部分。并且最后提到了 HTTP 的一些缺點(diǎn),比如:性能較低,容易導(dǎo)致網(wǎng)絡(luò)擁塞和延遲,不支持服務(wù)器推送等等。設(shè)計(jì)協(xié)議的大佬們,對這樣的缺點(diǎn)肯定是不能容忍的,所以 HTTP2 它來了。 什

    2023年04月17日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包