色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

長連接的實質是什么

江奕云2年前16瀏覽0評論

長連接的實質是什么?

謝邀~

常年做Java開發,對網絡編程也有一定的了解,下面我分享一下自己的看法;如果認識有不對的地方,請大家留言指正。

長連接、短連接的定義

長連接:建立好連接后,不關閉連接,一直保持通訊狀態,當后續再有數據需要傳輸的時候,就已經建立好的連接即可。優點是節省建立連接和關閉連接的開銷,缺點是要一直維護這個連接。

短連接:每次數據傳輸的時候,都需要建立一個新的連接,數據傳輸完就關閉連接。

長連接的實質/實現

長連接的實質,我也在考慮怎么說比較合適,題主問題中的描述,我覺得叫做長連接的實現比較合適(Socket本質是編程接口API,對TCP/IP的封裝,它本身不是協議)。

理解這個問題,首要要了解下TCP/IP模型,我們主要看傳輸層和應用層。

傳輸層包含我們最常見的:TCP、UDP。

應用層常見的:Http、Https、SMTP、FTP等等,很多。

Socket和TCP/IP沒啥實質關系,它就是對TCP/IP進行了抽象和封裝,形成了函數接口,程序員使用起來很方便。

我們常說的長連接,通常是指傳輸層的使用TCP協議經過三次握手建立的連接。

心跳是保持長連接的手段,在TCP中,就是KeepAlive機制。

長連接使用什么協議?肯定是TCP協議,應用層的協議也都以此為基礎。Http也支持長連接,但是Http只是應用層協議,傳輸層依然是TCP。

長連接的優化

長連接最大的缺點,就是建立好連接之后,就要不斷地維護這個連接,并且長連接會加重服務器的負擔。

優化心跳機制,每次業務數據請求也看做一次心跳,減少無效的數據傳輸。

根據場景,用短連接+輪詢的方式替代長連接。

優化數據,必要時進行壓縮,減少網絡壓力。

有關長連接的實現方案,有些內容我還不是很確定,比如Apache Mina NIO、Netty NIO,后續我搞清楚了再和大家分享。

我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。

java nio 并發,長連接的實質是什么