HTTP1.0和HTTP2.0的區(qū)別
一、HTTP1.0
HTTP 1.0 瀏覽器與服務(wù)器默認(rèn)為短連接,每次請(qǐng)求都需要與服務(wù)器建立一個(gè)TCP連接
服務(wù)器完成請(qǐng)求處理后立即斷開TCP連接,然后依次建立新的TCP連接,服務(wù)器不跟蹤每個(gè)客戶也不記錄過去的請(qǐng)求。


例如,解析html文件,當(dāng)發(fā)現(xiàn)文件中存在資源文件的時(shí)候,這時(shí)候又創(chuàng)建單獨(dú)的鏈接
最終導(dǎo)致,一個(gè)html文件的訪問包含了多次的請(qǐng)求和響應(yīng),每次請(qǐng)求都需要?jiǎng)?chuàng)建連接、關(guān)系連接
這種形式明顯造成了性能上的缺陷
如果需要建立長連接,需要設(shè)置一個(gè)非標(biāo)準(zhǔn)的Connection字段 Connection: keep-alive
HTTP2.0
HTTP/2.0默認(rèn)是長連接?。HTTP/2.0支持長連接,即在一個(gè)TCP連接上可以并發(fā)多個(gè)請(qǐng)求和響應(yīng),避免了頻繁建立和關(guān)閉連接的開銷,提高了性能和效率?12。HTTP/2.0與長連接相關(guān)的特性
- ?多路復(fù)用?:HTTP/2.0引入了多路復(fù)用技術(shù),允許在同一個(gè)TCP連接上并發(fā)發(fā)送多個(gè)請(qǐng)求和響應(yīng),避免了為每個(gè)請(qǐng)求建立新的TCP連接?13。
- ?二進(jìn)制協(xié)議?:HTTP/2.0采用二進(jìn)制格式傳輸數(shù)據(jù),減少了解析的復(fù)雜性,提高了傳輸效率?1。
- ?頭部壓縮?:使用HPACK算法對(duì)頭部進(jìn)行壓縮,減少了頭部的大小,降低了網(wǎng)絡(luò)傳輸開銷?1。
- ?流控制和優(yōu)先級(jí)?:引入了流控制和優(yōu)先級(jí)的機(jī)制,可以根據(jù)需求對(duì)請(qǐng)求進(jìn)行優(yōu)先級(jí)排序,提高了資源利用率?1

HTTP2缺點(diǎn):
1)GRPC尚未提供連接池,需要自行實(shí)現(xiàn)
2)尚未提供“服務(wù)發(fā)現(xiàn)”、“負(fù)載均衡”機(jī)制
3)因?yàn)榛?span style="text-decoration: underline">HTTP2,絕大部多數(shù)HTTP Server、Nginx都尚不支持,即Nginx不能將GRPC請(qǐng)求作為HTTP請(qǐng)求來負(fù)載均衡,而是作為普通的TCP請(qǐng)求(nginx1.9版本已支持)
4)Protobuf二進(jìn)制可讀性差(貌似提供了Text_Fromat功能)默認(rèn)不具備動(dòng)態(tài)特性(可以通過動(dòng)態(tài)定義生成消息類型或者動(dòng)態(tài)編譯支持)
5)難以調(diào)試和跟蹤,在排查問題時(shí),可能需要額外的工具和技術(shù)來解析和查看數(shù)據(jù)

浙公網(wǎng)安備 33010602011771號(hào)