客戶端-服務器模式,即我們常說的C/S模式。它是常用的架構模式之一。C/S架構可以是兩層的,也可以使三層的。
兩層的C/S是基於資源不對等,且為實現共享而提出來的,是20世紀90年代成熟起來的技術,C/S架構定義了工作站(客戶應用程序)如何與服務器相連,以實現數據和應用分布到多台計算機上。服務器負責有效地管理系統的資源,其任務集中於:數據庫安全性的要求、數據庫訪問並發性的控制、數據庫前端的客戶應用程序的全局數據完整性規則、數據庫的備份與恢復,除最后一點,其他幾點可概括為對數據庫管理系統的管理和控制;客戶應用程序的主要任務是提供用戶與數據庫交互的界面,向數據庫服務器提交用戶請求並接收來自數據庫服務器的信息,對存在於客戶端的數據執行應用邏輯要求。網絡通信軟件的主要作用是完成數據庫服務器和客戶應用程序之間的數據傳輸。
C/S架構將應用一分為二,服務器(后台)負責數據管理,客戶機(前台)完成與用戶的交互任務。服務器為多個客戶應用程序管理數據,而客戶程序發送、請求和分析從服務器接收的數據。
在一個C/S結構的軟件系統中,客戶應用程序是針對一個小的、特定的數據集,如一個表的某一行來進行操作,而不是像文件服務器那樣針對整個文件進行,對某一條記錄進行封鎖,而不是對整個文件進行封鎖,因此保證了系統的並發性,並使網絡上傳輸的數據量減到最少,從而改善了系統的性能。
C/S結構的優點主要在於系統的客戶應用程序和服務器構建分別運行在不同的計算機上,系統中每台服務器都可以適合各構件的要求,這對於硬件和軟件的變化顯示出極大的適應性和靈活性,而且易於對系統進行擴充和縮小。在C/S結構中,系統中的功能構件充分隔離,客戶應用程序的開發集中於數據的顯示和分析,而數據庫服務器的開發則集中於數據的管理,不必在每一個新的應用程序中都要對一個DBMS進行編碼。將大的應用處理任務分布到許多通過網絡連接的低成本計算機上,以節約大量的費用。
C/S體系結構具有強大的數據操作和事務處理能力,模型思想簡單,易於人們理解和接受。但隨着企業規模的日益擴大,軟件的復雜程度不斷提高,C/S結構逐漸暴露了以下缺點:
1.開發成本較高,C/S體系結構對客戶端軟硬件要求配置較高,尤其是軟件的不斷升級,對硬件要求不斷提高,增加了整個系統的成本,且客戶端變得越來越臃腫。
2.客戶端程序設計復雜,采用C/S結構進行軟件開發,大部分工作量放在客戶端的程序設計上,客戶端顯得十分龐大。
3.信息內容和形式單一,因為傳統應用一般為事務處理,界面基本遵循數據庫的字段解釋,開發之初就已確定,用戶獲得的只是單純的字符和數字,即枯燥又死板。
4.用戶界面風格不一,使用繁雜,不利於推廣使用。
5.軟件移植困難,采用不同的開發工具或平台開發的軟件,一般互不兼容,不能或很難移植到其他平台上運行。
6.軟件維護和升級困難,采用C/S結構的軟件要升級,開發人員必須現場為客戶機升級,每個客戶機上的軟件都需維護。對軟件的一個小小的改動,每一個客戶端都必須要更新。
7.新技術不能輕易應用,因為一個軟件平台及開發工具一旦選定,不可能輕易更改。
二層C/S結構的客戶機的負荷太重,並且是單一服務器且以局域網為中心的,難以擴展。因此出現了三層C/S結構,與二層相比增加了一個應用服務器。而HI有表示層存在於客戶機上,整個應用用邏輯駐留在應用服務器上。也就是“瘦客戶機”。
三層結構在邏輯上保持了相對獨立性,提高系統的可擴展性和可維護性。可以更靈活的選擇平台。
精簡總結版:
一個問題:資源不對等,如何實現資源共享
解決方案:1.增加服務器數量 2優化數據庫-連接池訪問數
3二層發展成三層-中間件篩選過濾:
(二層是客戶端-服務器直接進行交互。三層架構的中間件被用來執行所有的安全檢查和重負載情況下的負載平衡。中間件需要從客戶端的所有請求,並做必要的驗證后,通過向服務器發出請求。然后,服務器沒有所需的處理和發送響應回中間件,中間件終於通過這個響應返回給客戶端。)
4優化客戶端,服務器處理完后0.06秒已已經處理完,已傳輸到了但在5秒客戶端才顯示。
5中間加隊列,減少數據庫的壓力
實例:京東圖書大促時服務器崩潰,增加服務器數量並不能解決問題。這時需要找到瓶頸,如控制數據庫的連接數量等