服務器模型

###C/S模型編程

####C/S模型概述 C/S(客戶端/服務器)模型,是經常使用的服務器模型,包括如今說的B/S(瀏覽器/客戶端)模型,都是對C/S結構的一種變化或者改進的結構。 TCP/IP協議在設計和實現上並無客戶端和服務器的概念,在通訊過程當中全部服務器都是對等的。但因爲資源被數據提供者所壟斷,因而產生了C/S模型:全部客戶端都經過服務器獲取所需資源。模型以下圖1所示:瀏覽器

圖1

####C/S模型的邏輯流程 C/S模型的TCP服務器與TCP客戶端工做流程以下圖2所示 圖2服務器

  1. 服務器啓動後建立一個(或多個)監聽socket,並bind到服務器感興趣的端口上。
  2. 調用listen等待客戶鏈接。
  3. 服務器穩定後,客戶端調用connect主動向服務器發起鏈接。
  4. 服務器監聽客戶請求(客戶鏈接請求是隨機到達的異步事件,服務器須要某種IO模型來監聽事件。IO模型有不少種,以IO複用技術之一的select系統調用爲例)。
  5. 當監聽到鏈接請求後,服務器accept並分配一個邏輯單元爲新的鏈接服務。(邏輯單元能夠是新建立的子進程子線程或者其餘,以fork子進程爲例。)
  6. 邏輯單元讀取客戶請求處理請求並將結果返回給客戶。
  7. 客戶收到結果能夠繼續發送請求也能夠關閉鏈接。(若是客戶端關閉鏈接,服務器則被動關閉鏈接。雙方通訊結束。注意:服務器在處理一個請求的同時,也會繼續監聽客戶其餘請求)

####C/S模型的分析網絡

  • 優勢:C/S模型適合資源集中的場合,且實現簡單。
  • 缺點:是服務器爲通訊中心,訪問量過大時,可能致使全部客戶獲得很慢的響應。

###P2P模型異步

#####P2P模型概述 P2P(Peer to Perr, 點對點)模型,摒棄以服務器爲中心的格局,讓全部主機重歸對等,使得每臺機器在消耗服務的同時也給別人提供服務,雲計算機集羣能夠看做P2P模型的一個典範。從編程角度,P2P能夠看做C/S的擴展:每臺主機便是客戶端,又是服務器。P2P模型以下圖3所示 輸入圖片說明socket

####P2P分析 缺點:用戶之間傳輸的請求過多時,網絡負載加劇,同時主機直接很難互相發現。因此實際P2P模型一般帶有一個專門的發現服務器,用於查找服務(甚至能夠提供內容服務),使得每一個客戶都儘快地找到本身所需的資源。下圖3爲帶發現服務器的P2P模型性能

輸入圖片說明

注(本文內容參考 Linux高性能服務器編程——第八章 遊雙著)雲計算

相關文章
相關標籤/搜索