高效併發伺服器模型

2021-09-07 21:16:17 字數 1225 閱讀 2892

1、單執行緒/阻塞/同步模型

適用範圍:單一連線

缺點:多連線時相互影響,乙個阻塞,別的也得不到響應

2、多程序/阻塞/同步模型

適用範圍:連線數較少,且使用的資源較多,比如檔案操作

缺點:系統程序數有上限,不適用大量併發連線,且程序間切換開銷較大

3、多執行緒/阻塞/同步模型

適用範圍:連線數較少,且使用系統資源不多,可多個執行緒共享

缺點:系統執行緒數有上限,不適用大量併發連線,且執行緒間的需要保護

4、單執行緒/非阻塞/同步模型

特徵:強行逐個連線輪詢處理,沒有探測

適用範圍:連線數較少

缺點:需要處理資料的拼接,且憑空占用資源,cpu高

5、select事件驅動模型(單執行緒/阻塞/同步模型/先探測後處理/掛起式阻塞)

特徵:事件驅動,先集中探測事件,再對有事件的連線逐一響應

適用範圍:連線數中

缺點:探測效率不高,且探測和處理處於同一執行緒,處理時間較長時容易影響探測;

6、平台相關的驅事件驅動(雙線程/阻塞/非同步模型/先探測後處理/掛起式阻塞/探測和響應執行緒分離)

特徵:使用特殊平台自身的介面,linux為poll、epoll,bsd為kqueue、solaris為/dev/poll、windows為iocp;    

適用範圍:大量併發連線

優點:使用訊息佇列或訊號等方式將事件探測和響應分離在不同執行緒,從而確保事件探測不會被響應影響;

探測和響應的執行緒都使用了掛起機制,從而有效防止了執行緒空轉,只占用很少的資源;            

缺點:難於跨平台

7、開源跨平台事件驅動模型(雙線程/阻塞/非同步模型/先探測後處理/掛起式阻塞/探測和響應執行緒分離)

適用範圍:大量併發連線

優點:跨平台        

缺點:需要第三方開源庫來移植和封裝平台

開源例子:libev、libevent、ace、asio

8、事件驅動模型的抽象

最大限度地利用網路本身的併發能力;

本地資源不能成為網路併發瓶徑;

多個連線之間不能相互阻塞;

事件響應不能阻塞事件探測;

執行緒無任務時不能空轉;

9、網路i/o術語

單執行緒/多執行緒/多程序

阻塞/掛起式阻塞/超時阻塞/非阻塞/空轉/輪詢

同步/非同步/訊息佇列/訊號

先探測/後響應/集中探測/執行緒分離

併發連線數

開源/跨平台

高效併發伺服器模型

1 單執行緒 阻塞 同步模型 適用範圍 單一連線 缺點 多連線時相互影響,乙個阻塞,別的也得不到響應 2 多程序 阻塞 同步模型 適用範圍 連線數較少,且使用的資源較多,比如檔案操作 缺點 系統程序數有上限,不適用大量併發連線,且程序間切換開銷較大 3 多執行緒 阻塞 同步模型 適用範圍 連線數較少...

常見併發伺服器模型

1 短連線 如果是長連線則需要在read與write之間增加乙個迴圈,那樣的話外層迴圈無法退出,接收不到其它連線請求,即只能服務乙個客戶端 2 單執行緒,無法充分利用多核cpu 3 不適合執行時間較長的服務 encode compute decode執行時間過長會影響其他客戶端連線的響應速度 1 長...

併發伺服器模型 單程序伺服器

from socket import sersocket socket af inet,sock stream 重複使用繫結的資訊 sersocket.setsockopt sol socket,so reuseaddr 1 localaddr 7788 sersocket.bind localad...