網際網路簡史/第5章:客戶端-伺服器
客戶端-伺服器模型定義為兩個相互通訊的計算機程式之間的關係。客戶端透過向伺服器傳送服務請求來發起通訊。它們通常是安裝了網路軟體應用程式的個人計算機。移動裝置也可以充當客戶端。伺服器通常是儲存檔案和資料庫的裝置,包括網站等複雜的應用程式。與客戶端相比,它們擁有更強大的中央處理器、更大的磁碟驅動器和更多的記憶體。伺服器將透過與客戶端共享資源來滿足客戶端的請求,而客戶端本身沒有任何處理能力。這種客戶端-伺服器模型通常發生在計算機網路上。但是,它也可以發生在單個計算機內部。
客戶端-伺服器模型可以在電子郵件交換、網頁訪問和資料庫訪問等功能中找到。Web瀏覽器實際上就是一個客戶端。它在本地執行軟體,處理從Web伺服器接收到的資訊。在典型的客戶端-伺服器模型中,一個伺服器被啟用並等待客戶端請求。多個客戶端程式共享同一個伺服器程式的服務。它們通常是更大應用程式的一部分。網際網路的主要程式TCP/IP(傳輸控制協議/網際網路協議)也是基於客戶端-伺服器模型構建的。TCP/IP允許使用者對FTP(檔案傳輸協議)伺服器發出客戶端請求。[1]
客戶端-伺服器架構透過提供查詢響應來幫助減少網路流量。它不提供完整的檔案傳輸。客戶端-伺服器架構有兩種型別,分別是兩層架構和三層架構。對於兩層客戶端-伺服器架構,使用者介面儲存在客戶端,而資料儲存在伺服器。資訊處理在使用者介面環境和資料管理伺服器環境之間分離。在三層客戶端-伺服器架構中,中介軟體用於使用者介面環境和資料管理伺服器環境之間。這有助於克服兩層客戶端-伺服器架構的缺點。當用戶數量眾多時,它可以提高效能。與兩層方法相比,它也提高了靈活性。但是,它的開發環境比兩層應用程式的開發更難使用。[2]
客戶端程式是在一個端系統(主機)上執行的程式,它請求並接收來自另一個端系統上執行的伺服器程式的服務。客戶端-伺服器模型包括Web、電子郵件、檔案傳輸遠端登入以及許多其他流行的應用程式。客戶端-伺服器網際網路應用程式被定義為分散式應用程式,因為客戶端程式通常在一個計算機上執行,而伺服器程式在另一臺計算機上執行。
客戶端程式和伺服器程式透過在網際網路上傳遞訊息相互互動。在這個抽象級別上,網際網路的路由器、鏈路和其他基礎設施充當黑盒,在網際網路應用程式的分散式元件之間傳輸訊息。
在客戶端-伺服器架構中,伺服器是始終線上的主機,而客戶端主機可以是始終線上或有時線上。Web是始終線上主機的經典示例。在客戶端-伺服器架構中,客戶端不會直接相互通訊。例如,兩個瀏覽器不會直接通訊。此外,由於伺服器是始終線上的主機,因此客戶端可以透過向伺服器的地址傳送資料包隨時聯絡伺服器。
單個伺服器主機無法滿足來自所有客戶端的請求;如果只有一個或兩個伺服器處理所有請求,伺服器將很快不堪重負。為了解決這個問題,資料密集型通常用於在伺服器-客戶端架構中建立功能強大的虛擬伺服器(基於客戶端-伺服器的應用程式通常是基礎設施密集型的,這意味著它們需要服務提供商購買、安裝和維護伺服器群)。服務提供商需要為互連和傳送和接收資料以及基礎設施密集型支付成本。例如,像Facebook這樣的流行服務是基礎設施密集型的,並且提供成本很高。
但是,並非所有網際網路都由純客戶端程式與純伺服器程式互動組成。現代網路應用程式中使用了兩種主要的架構正規化,即客戶端-伺服器和對等 (P2P)。與客戶端-伺服器不同,P2P 是間歇連線的主機對之間的直接通訊。一些示例包括網際網路通話(例如 Skype)、檔案分發(例如 BitTorrent)、檔案共享(例如 eMule)和 IPTV(例如 PPLive)[3]。[3]
很久以前,客戶端-伺服器計算只是使用大型機並連線到啞終端。多年來,個人計算機開始發展並取代了這些終端,但處理仍然在大型機上進行。隨著計算機技術的進步,處理需求開始在個人計算機和大型機之間分配。
術語“客戶端-伺服器”指的是由兩部分組成的軟體架構模型,即客戶端系統和伺服器系統。這兩個元件可以互動並形成連線多個使用者的網路。使用這項技術,PC能夠在網路上相互通訊。這些網路基於檔案共享架構,其中PC從相應的檔案伺服器下載檔案,並且應用程式使用接收到的資料在本地執行。但是,共享使用和要傳輸的資料量必須很低才能使系統正常執行。
隨著網路的增長,檔案共享架構的侷限性成為客戶端-伺服器系統中的障礙。這個問題透過用資料庫伺服器替換檔案伺服器來解決。資料庫伺服器不是將檔案傳輸並儲存到客戶端,而是執行資料請求並將結果集返回給客戶端。結果,這種架構減少了網路流量,允許多個使用者同時更新資料。
通常使用結構化查詢語言 (SQL) 或遠端過程呼叫 (RPC) 在客戶端和伺服器之間進行通訊。[4] 客戶端-伺服器架構有幾種型別。其中一種架構是兩層架構,其中客戶端直接連線到伺服器。這種架構具有良好的應用程式開發速度,並且在使用者群體工作量較小的同構環境中執行良好。這種架構存在的問題是這種模型中應用程式邏輯和處理的分佈。如果應用程式邏輯分佈到幾十個客戶端系統,那麼應用程式維護將非常困難。為了克服兩層架構的侷限性,引入了三層架構。透過引入中間層,客戶端僅連線到應用程式伺服器,而不是直接連線到資料伺服器。透過這種方式,消除了維護連線的負擔。資料庫伺服器能夠很好地管理儲存和檢索資料。因此,應用程式邏輯和處理可以在任何應用程式中系統地處理。為了增強三層架構,當中間層提供與各種型別服務的連線、將它們整合和耦合到客戶端以及相互之間時,可以將其擴充套件到 N 層。例如,將Web伺服器新增到三層架構以成為四層架構,其中Web伺服器處理應用程式伺服器和客戶端之間的連線。因此,可以同時處理更多使用者。[5]
伺服器群或伺服器叢集是一組作為伺服器的計算機,它們儲存在一個位置。當對計算機伺服器的需求增加時,僅使用一臺伺服器可能難以或不可能處理。因此,使用了伺服器群。使用伺服器群,工作負載分佈在多個伺服器元件之間,從而提供更快的計算過程。伺服器群最常用於學術/研究型機構或大型公司。但是,由於計算機和公司已變得更加主流,因此現在無論公司規模或需求如何,許多公司都在使用伺服器群。[6]
伺服器群執行服務,例如提供集中式訪問控制、檔案訪問、印表機共享和工作站使用者的備份。[7] 伺服器可以具有單獨的作業系統或共享的作業系統,並且還可以設定為在存在許多伺服器請求時提供負載均衡。
在伺服器場中,通常會有一個主伺服器和一個備份伺服器。這兩個伺服器可能會被分配執行相同的任務。因此,如果一臺伺服器發生故障,另一臺伺服器可以充當備份。這樣做是為了在發生問題時維護伺服器功能並防止伺服器離線。通常,伺服器場會有網路交換機和路由器,這些裝置允許伺服器場的不同部分進行通訊。所有這些計算機、路由器、電源和其他元件通常都安裝在伺服器機房的 19 英寸機架上。[8]
伺服器場的效能並非由處理器的效能來評估。伺服器場的效能實際上受到伺服器機房冷卻系統和電費的限制。由於其巨大的電力消耗,伺服器場的引數設計通常基於每瓦效能。對於那些 24/7 執行的系統,節能功能更為重要,以確保系統能夠根據需求關閉某些部分。這樣,在系統節省更多電力的同時,服務不會中斷。[9]
客戶端-伺服器模型有很多示例。在本章中,我們將討論介面、網際網路、銀行賬戶和資料處理系統。
首先,我們將討論介面。介面是一個元件之間相互互動的概念。然後,元件能夠獨立執行,同時使用介面透過輸入/輸出系統和關聯的協議與其他元件通訊。[10]
網際網路也是客戶端-伺服器的一個示例。在網際網路上,我們是客戶端,請求由我們傳送到伺服器。網際網路(即伺服器)將搜尋主題,然後向我們提供選項。因此,網際網路,也稱為全球資訊網,實際上是響應各種型別客戶端的大量伺服器集合。Web 伺服器上可用的資訊可以被許多不同的客戶端訪問。[11]
使用網上銀行系統檢查銀行賬戶餘額的過程是客戶端-伺服器程式的另一個示例。計算機中的客戶端程式將向銀行的伺服器傳送服務請求。該程式還可以將請求轉發到其自己的資料庫客戶端程式,該程式向另一家銀行的伺服器資料庫傳送請求以獲取資訊。然後將資訊傳送回銀行的資料客戶端,並返回到計算機的客戶端程式,該程式將賬戶餘額顯示給使用者。[12]
資料處理是另一個實現客戶端-伺服器模型的應用程式。從另一臺計算機複製檔案時,客戶端用於訪問伺服器上的檔案。換句話說,伺服器向客戶端提供資料。
- ↑ Sullivan, J. (2000)。定義::客戶端/伺服器。在 TechTarget 中。於 2011 年 11 月 10 日從 http://searchnetworking.techtarget.com/definition/client-server 檢索
- ↑ 客戶端-伺服器體系結構的型別?(2011 年 11 月 10 日)。在 Answer.com 中。於 2011 年 11 月 10 日從 http://wiki.answers.com/Q/Types_of_client_server_architecture 檢索
- ↑ Ross, K. (2010)。網路:自頂向下的方法,第五版
- ↑ Andykramek(2008 年 9 月 29 日)。客戶端-伺服器體系結構簡介。於 2011 年 11 月 15 日從 http://weblogs.foxite.com/andykramek/archive/2008/09/29/6935.aspx 檢索
- ↑ David Raney(2009)。客戶端/伺服器計算的演變。於 2011 年 11 月 15 日從 http://cis.cuyamaca.net/draney/214/web_server/client.htm 檢索
- ↑ 伺服器場(2011 年 11 月 23 日)。在 Server Farm Org 中。於 2011 年 11 月 23 日從 http://serverfarm.org/ 檢索
- ↑ 定義::伺服器場(2011 年 11 月 23 日)。在 TechTarget 中。於 2011 年 11 月 23 日從 http://searchcio-midmarket.techtarget.com/definition/server-farm 檢索
- ↑ 什麼是伺服器場?(2011 年 11 月 23 日)。在 WiseGeek 中。於 2011 年 11 月 23 日從 http://www.wisegeek.com/what-is-a-server-farm.htm 檢索
- ↑ 伺服器場(2011 年 11 月 23 日)。在維基百科,自由的百科全書中。於 2011 年 11 月 23 日從 http://en.wikipedia.org/wiki/Server_farm 檢索
- ↑ Mitchell, B. 客戶端(2011)伺服器模型::什麼是客戶端-伺服器網路技術。在 About.com 中。於 2011 年 11 月 23 日從 http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm 檢索
- ↑ Greer, J. D. (1995-1996) 客戶端/伺服器、網際網路和 WWW。在 Robelle Solutions Technology Inc 中。於 2011 年 11 月 23 日從 http://www.robelle.com/www-paper/paper.html 檢索
- ↑ 客戶端-伺服器模型(2011 年 11 月 10 日)。在維基百科,自由的百科全書中。於 2011 年 11 月 10 日從 http://en.wikipedia.org/wiki/Client%E2%80%93server_model 檢索