計算機體系結構中用於並行應用程式的客戶端-伺服器框架是什麼?
並行應用程式可以使用客戶端/伺服器模型進行設計。客戶端可以將一個大型應用程式分解成幾個較小的子問題,這些子問題可以由多個伺服器同時處理。所有伺服器計算各自問題的解決方案並將結果傳送給客戶端。
客戶端彙集每個伺服器的結果,並將最終結果輸出給使用者。客戶端充當主控端(監督者),而伺服器充當從屬端(工作者),如圖所示,採用主從(監督者-工作者)模型。客戶端和每個伺服器執行的步驟總結如下。
客戶端(監督者)
- 客戶端建立一個套接字陣列以及與所有伺服器的輸入/輸出資料流。最佳情況下,客戶端應為每個可用的伺服器生成一個執行緒,然後這些執行緒將與各個伺服器建立連線。
- 客戶端將控制權傳遞給客戶端主體,其中包含特定於並行執行的應用程式的程式碼。主要工作是將主要任務劃分為較小的部分,並將其中一部分任務傳遞給每個伺服器。然後,它等待所有伺服器傳送其較小計算結果。最後,它合併每個伺服器的結果並計算大型問題的最終解決方案。
- 客戶端關閉與所有伺服器的所有流和套接字。
伺服器(工作者)
- 伺服器在一個未使用的埠號上建立一個伺服器套接字。
- 伺服器在該埠上等待連線。一旦收到客戶端的請求,它就接受該連線。
- 伺服器為該套接字建立輸入和輸出資料流。這為伺服器套接字和客戶端之間的通訊奠定了基礎。
- 伺服器將控制權傳遞給伺服器主體,其中包含特定於並行執行的應用程式的程式碼。主伺服器將接受來自客戶端的連線,建立一個套接字,並呼叫伺服器主體執行緒來處理該客戶端。
- 伺服器返回並等待來自客戶端的另一個連線。
廣告