長連線:建立好連線後,不關閉連線,一直保持通訊狀態,當後續再有資料需要傳輸的時候,就已經建立好的連線即可。優點是節省建立連線和關閉連線的開銷,缺點是要一直維護這個連線。
短連線:每次資料傳輸的時候,都需要建立一個新的連線,資料傳輸完就關閉連線。
長連線的實質,我也在考慮怎麼說比較合適,題主問題中的描述,我覺得叫做長連線的實現比較合適(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,後續我搞清楚了再和大家分享。
長連線:建立好連線後,不關閉連線,一直保持通訊狀態,當後續再有資料需要傳輸的時候,就已經建立好的連線即可。優點是節省建立連線和關閉連線的開銷,缺點是要一直維護這個連線。
短連線:每次資料傳輸的時候,都需要建立一個新的連線,資料傳輸完就關閉連線。
長連線的實質/實現長連線的實質,我也在考慮怎麼說比較合適,題主問題中的描述,我覺得叫做長連線的實現比較合適(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,後續我搞清楚了再和大家分享。