常見網絡模型
【1】循環服務器模型 :
循環接收客戶端請求,處理請求。同一時刻只能處理一個請求,處理完畢後再處理下一個。
優點:實現簡單,佔用資源少
缺點:無法同時處理多個客戶端請求
適用情況:處理的任務可以很快完成,客戶端無需長期佔用服務端程序。udp比tcp更適合循環。
【2】多進程/線程網絡併發模型:
每當一個客戶端連接服務器,就創建一個新的進程/線程爲該客戶端服務,客戶端退出時再銷燬該進程/線程。
優點:能同時滿足多個客戶端長期佔有服務端需求,可以處理各種請求。
缺點: 資源消耗較大
適用情況:客戶端同時連接量較少,需要處理行爲較複雜情況。
示例:參考第二十三、Python之基於fork的多進程編程文末示例
【3】IO併發模型:
利用IO多路複用,異步IO等技術,同時處理多個客戶端IO請求。
優點 : 資源消耗少,能同時高效處理多個IO行爲
缺點 : 只能處理併發產生的IO事件,無法處理cpu計算
適用情況:HTTP請求,網絡傳輸等都是IO行爲。