高效併發服務器模型

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術語

單線程/多線程/多進程
阻塞/掛起式阻塞/超時阻塞/非阻塞/空轉/輪詢
同步/異步/消息隊列/信號
先探測/後響應/集中探測/線程分離
併發連接數
開源/跨平臺

轉於:http://www.cnblogs.com/hnrainll/archive/2011/10/13/2210481.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章