長連線和短連線

2021-09-07 21:38:11 字數 1201 閱讀 6143

長連線是建立socket之後,一直不關閉該socket, 一般是tcp協議,我們知道tcp是雙工的, 能夠保證cs兩端可以互發資料。

短連線建立socket之後,做一次很短的互動(只發不收,或者發了就收)之後,就關閉該socket,一般都是基於http(在tcp之上)

tcp/ip是傳輸層協議,主要解決資料如何在網路中傳輸;而http是應用層協議,主要解決如何包裝資料。

socket是對tcp/ip協議的封裝,socket本身並不是協議,而是乙個呼叫介面(api),通過socket,我們才能使用tcp/ip協議。我們在傳輸資料時,可以只使用傳輸層(tcp/ip),但是那樣的話,由於沒有應用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用應用層協議,應用層協議很多,有http、ftp、telnet等等,也可以自己定義應用層協議。web使用http作傳輸層協議,以封裝http文字資訊,然後使用tcp/ip做傳輸層協議將它傳送到網路上。

長連線的優點:節省建立連線的時間;伺服器能夠感知客戶端,可以向客戶端主動推送訊息

長連線的缺點:占用伺服器的fd資源;使邏輯變複雜,需要關注斷線等各種異常處理;負載均衡比較複雜

短連線的優點:簡單,容易進行負載均衡,節省伺服器的fd

短連線的缺點:每次都要建立連線、關閉連線,費時

長連線只需要在建立連線的第一次驗證之後,該socket就等同於session,伺服器對socket的檢索就可以確定客戶端。

短連線登陸認證之後,由於無狀態,必須通過cookie等手段,每次告訴伺服器我是***

短連線比較簡單, 一般搭建lvs即可。lvs能夠感知後端的伺服器機組,將每個客戶端的請求**給隨機的伺服器。lvs可以採用七層,也可以採用四層。

長連線比較麻煩,四層lvs也可以搞定, 但是缺少更大的網路架構的擴充套件性。一般來講網路遊戲裡面都是用一組connector來當前前端的聯結器,在邏輯層封裝使用者id然後轉到後端的server來處理,connector和server之間是nn連線,能夠感知狀態,或者兩者中間搭建個servermanager來進行server管理。

短連線的伺服器宕機沒有任何影響,直接拿standby的機器頂上去即可。

短連線的擴容直接加機器即可,通知lvs即可。

長連線的擴容必須要注意和前端lvs、connector或者servermanager的通告。一般會考慮一致性演算法。

【lvs-lvs(linux virtual server)是linux伺服器集群系統】

from 

長連線和短連線

短連線是指通訊雙方有資料互動時,就建立乙個tcp連線,資料傳送完成後,則斷開此tcp連線,一般銀行都使用短連線。比如http的,只是連線 請求 關閉,過程時間較短,伺服器若是一段時間內沒有收到請求即可關閉連線。其實長連線是相對於通常的短連線而說的,也就是長時間保持客戶端與服務端的連線狀態。通常的短連...

長連線和短連線

tcp ip tcp ip是個協議組,可分為三個層次 網路層 傳輸層和應用層。在網路層有ip協議 icmp協議 arp協議 rarp協議和bootp協議。在傳輸層中有tcp協議與udp協議。在應用層有 通過tcp協議來通訊的應用層協議包括ftp http telnet smtp等 通過udp協議來通...

長連線和短連線

長連線 長連線多用於操作頻繁,點對點的通訊,而且連線數不能太多情況。每個tcp連線都需要三步握手,這需要時間,如果每個操作都是短連線,再操作的話那麼處理速度會降低很多,所以每個操作完後都不斷開,下次處理時直接傳送資料報就ok了,不用建立tcp連線。例如 資料庫的連線用長連線,如果用短連線頻繁的通訊會...