服務器主要包括如下三個主要模塊:
I/O處理單元,四種I/O模型和兩種高效事件處理方式邏輯單元,邏輯單元的高效併發方式
存儲單元,服務器的可選模塊
服務器模型
C/S模型:所有客戶端都通過訪問服務器來獲取所需的資源
C/S模型的運行邏輯:
服務器啓動後,首先創建一個或多個監聽socket,並調用bind函數將其綁定到服務器感興趣的端口上,然後調用listen函數等待客戶連接。
服務器穩定運行後,客戶端就可以調用connect()函數向服務器發起連接了,由於客戶連接請求是隨機到達的異步事件,服務器需要使用某種I/O模型來監聽這一事件
下圖中使用的是I/O多路複用技術之一的select系統調用。當監聽到連接請求後,服務器就調用accept函數接受它,並分配一個邏輯單元爲新的連接服務(子線程或者子進程),邏輯單元讀取客戶請求並處理該請求,然後將處理結果返回給客戶端。此時客戶端可以繼續向服務器發送請求,也可以立即向服務器主動關閉連接。如果客戶端主動關閉連接,則服務器執行被動關閉連接,至此,雙方通信結束。注意,服務器在處理一個客戶請求的同時還會監聽其他客戶的請求。服務器同時監聽多個客戶請求是通過select系統調用實現的。
C/S模型適合資源相對集中的場合,但當訪問量過大時,所有客戶端都會得到很慢的相應。
P2P模式解決了這個問題,,待續,,,