概念: 分佈型樣
分佈型樣強調系統解決方案分佈的重要性,以及對其他架構決策的影響程度。
關係
主要說明

節點、處理器及裝置

「處理器」和「裝置」是兩種最常見的「節點」。兩者不易區別,因為現在許多裝置都內建 CPU。 儘管如此,您還是可以從其中執行的軟體類型來分辨處理器和裝置的差別。處理器所執行的程式/軟體是針對開發的系統所量身設計。處理器是多用途的運算裝置,具有運算能力、記憶體及執行能力。

裝置則是執行負責控制其本身功能的軟體。裝置通常連接到控制裝置的處理器。裝置通常執行內嵌軟體,無法執行通用的程式。功能通常由裝置驅動程式軟體來控制。

分佈型樣

視系統功能和應用程式類型而定,系統中有許多常見的分佈型樣。雖然完整的架構不僅止於分佈型樣,但分佈型樣經常用來描述系統的「架構」。例如,一個系統被描述成「主從架構」,事實上,這只是整個架構的分佈觀點而已。目的就是強調系統分佈的重要性,以及對其他架構決策的影響程度。

以下說明的分佈型樣暗指某些系統特性、效能特性及流程架構。雖然每一種型樣有可以解決問題的一面,但也會各自帶來不同的挑戰。

主從架構

在所謂的「主從架構」中,有一些稱為用戶端的特殊網路處理器節點,以及稱為伺服器的節點。用戶端就是消費端,使用伺服器提供的服務。一個用戶端通常為單一使用者提供服務,且通常處理一般使用者呈現服務 (GUI),而伺服器通常同時提供服務給多個用戶端;提供的服務通常是資料庫、安全或列印服務。在這些系統中,「應用程式邏輯」或所謂的商業邏輯,通常分散在用戶端和伺服器上。商業邏輯的分佈稱為應用程式分割

在下圖中,用戶端 A 顯示一個兩層架構的範例,應用程式邏輯大多集中在伺服器。用戶端 B 顯示一個典型的三層架構,在商業物件伺服器上實作商業服務。用戶端 C 顯示一個典型的 Web 型應用程式。

圖解說明詳見下文。

主從架構的派別

在傳統的主從式架構系統中,大部份商業邏輯都在用戶端實作;但部份功能較適合放在伺服器上,例如,經常存取伺服器儲存資料的功能。如此可以減少網路資料傳輸,網路流量的成本通常很高(一定比跨流程通訊更慢)。

部份特性:

  • 一個系統可能由多個不同類型的用戶端組成,例如:
    • 使用者工作站
    • 網路電腦
  • 用戶端與伺服器之間透過各種技術來通訊,例如 CORBA/IDL 或 RPC(遠端程序呼叫)技術。
  • 一個系統可能由多個不同類型的伺服器組成,例如:
    • 資料庫伺服器,負責管理資料庫機器,例如 Sybase、Ingres、Oracle、Informix
    • 列印伺服器,處理驅動程式邏輯,例如特定印表機的佇列作業
    • 通訊伺服器(TCP/IP、ISDN、X.25)
    • Window Manager 伺服器 (X)
    • 檔案伺服器(UNIX 下的 NFS)

三層架構

「三層架構」是「主從架構」的特例,其中將系統的功能劃分成三個邏輯分割區:應用程式服務、商業服務及資料服務。「邏輯分割區」事實上可能對映至三個以上的實體節點。

圖解說明詳見下文。

三層架構的範例

邏輯分割為這三個「層」,反映出一般商用應用程式的功能在實際上如何實作和變動。專門處理 GUI 呈現問題的應用程式服務,通常是在具有圖形化、視窗化作業環境的專用桌面工作站執行。功能的變更通常起因於使用方便性或審美觀,本質上是人為因素的問題。

資料服務通常以資料庫伺服器技術來實作,通常在一或多個高效能、高頻寬的節點上執行,為上百位或上千位經由網路連接的使用者提供服務。當儲存的資訊在呈現和關係上有變化時,很容易牽動資料服務發生改變。

商業服務則是反映商業流程的編碼知識。可以操作和綜合取自資料服務的資訊,再提供給應用程式服務。商業服務多由多位使用者共用,因此通常也放在專用伺服器上,有可能與資料服務放在相同的節點上。

循著這些途徑來分割功能,可以建立相當可靠的延展性;增加伺服器,並平衡將資料和商業伺服器的處理效能,達到更高的延展性。

大型用戶端架構

因為幾乎所有動作都集中在用戶端完成,所以謂之「大型」用戶端(但「兩層架構」這種特例除外,其中資料服務放在另一個節點)。「應用程式服務」、「商業服務」及「資料服務」全部都在用戶端機器上;資料庫伺服器通常會放在另一台機器上。

圖解說明詳見下文。

傳統的兩層或「大型用戶端」架構

「大型用戶端」很容易設計和建置,但很難分送(通常龐大又獨立)和維護。因為用戶端機器經常在本端快取資料來提高效能,本端快取的連貫性和一致性很容易成為必須特別注意的問題。分散在多個本端快取中的共用物件很難變更,協調成本也很高,尤其在涉及網路播送變更時,更加困難。

大型伺服器架構

相對於「大型用戶端」的就是「大型伺服器」,或稱為「精簡型用戶端」。執行一組 HTML 網頁的 Web 瀏覽器應用程式就是一個常見的例子,用戶端幾乎沒有什麼應用程式。幾乎所有工作都在一或多個 Web 伺服器或資料伺服器上執行。

圖解說明詳見下文。

Web 應用程式

Web 應用程式很容易分送,也易於變更。開發和支援成本非常划算(因為大部份應用程式基礎架構已由瀏覽器和 Web 伺服器提供)。但對於應用程式可能沒有足夠的掌控能力,如果設計不當(儘管有時設計良好),很容易造成網路迅速飽和。

分散式主從架構

在此架構下,應用程式、商業及資料服務分散於不同的節點,特殊化伺服器很可能位於商業服務層和資料服務層。可視為三層架構的完整實現。

對等式架構

在對等式架構下,系統中的任何流程或節點可能同時扮演用戶端伺服器的角色。將相關服務組合在一起,可以達到功能分散的目標,讓網路資料傳輸降到最低,同時達到最高的產量和系統使用率。這種系統通常很複雜,必須格外注意死結、流程可用資源匱乏及錯誤處理等問題。