基於N層架構的優勢分析解決方案

一、概論
  N層(三層以上)架構集成了信息引擎技術和Internet技術,從軟件體系結構上保證應用系統在性能上可擴展、可規模化,在功能上具有開放性、可重用、可延展,是一種能夠滿足未來企業級信息共享、業務操作的應用框架。
  N層架構的核心是提供可規模化特性,一方面是從服務負載上可規模化,能同時爲極大規模的用戶同時提供服務;另一方面是服務功能上的可規模化,可形成極大規模的軟件羣系統,各分系統可以共享信息、服務,形成企業級的信息高速公路。
    N層架構的四層是指Presentation Tier(表示層)、Web Server Tier(Web服務器層)、 Application Server Tier(應用服務器層)和 Data Tier(數據層),其關係如下圖所示。 
 


圖表一、N層架構體系結構
  N層架構是在三層架構的基礎上形成的,是三層架構在Internet上的實現,是一種Internetable的三層架構。三層架構將應用邏輯從數據源的管理(數據庫)和客戶端中分離出來。一方面它使得客戶端程序僅關注與數據的可視表示和用戶輸入信息的收集,這減小了客戶端程序的複雜度,客戶端程序更加小巧、靈活,降低了對客戶端計算機硬件的要求。另一方面,由於應用邏輯集中在應用服務器,這更便於應用邏輯的管理和修改、調整等。
  N層架構具有三層架構的全部優點,同時由於N層架構中使用瀏覽器作爲客戶端界面,這又使得應用系統在實施佈署時極大地簡化,可以達到零布署開銷的目標。 在N層架構中,信息引擎封裝在應用服務器的核心,一方面信息引擎使用了數據庫後端系統提供的強大功能,另一方面信息引擎將信息服務以更爲方便易用的方式通過應用服務器提供出來,並可將其通過Web Server在Internet上發佈出來,使得信息服務的功能在整個Internet的範圍中都是可訪問的。
  在N層架構中,客戶端在網絡通信上使用的是Web系統的HTTP協議。Web系統是針對信息的發佈和檢索而設計的,從根本上講它是一種無連結、無狀態的通信協議。在商業領域的業務網絡應用系統中,傳統的網絡模型是Client/Server結構,其核心思想是在一條通信連結上進行請求/應答方式的業務數據交互。連結保持、狀態轉化和Transaction概念是網絡業務應用系統不同於Web系統的特點。
  N層架構的目的就是要在HTTP協議上解決連結保持、狀態轉化和Transaction完整性(事務完整性)等問題,同時兼有上述兩種系統的優越性。 應用系統在設計時通常考慮功能和性能兩方面的需求。大多數傳統的系統在設計時就已經將系統的負載確定在一個較小變化的範圍中,因此爲達到一定的性能,通常是在系統建立的初期通過系統硬件設備的選擇來達到一定的性能要求。而業務系統的軟件設計則是在此硬件平臺基礎之上進行的,而現在的企業應用環境中,業務系統負載快速變化的現象已十分普遍,上述系統一旦達到系統硬件的極限,整個系統的軟、硬件就將全面報廢。業務系統中軟件部分的重要性和成本變得越來越大,軟件系統的可規模化就成爲一個至關重要的因素。軟件體系的可規模化特性就是指當系統硬件性能達到極限後,通過簡單增加硬件設備,無須對軟件進行修改就可以使整個系統的性能同量級地提升。N層架構的核心就是要提供軟件系統的可規模化(scalability)。

二、系統概要
    1.系統網絡邏輯結構設計
    N層架構應用系統的網絡邏輯結構如下圖所示:

圖表二、N層架構網絡結構

  客戶端使用瀏覽器,通過標準的HTTP協議連結到Internet。通常無須連結支持的信息瀏覽和查詢等由Browser通過HTTP協議與Web Server交互得到。對於需要連結和狀態支持的業務數據交互則通過在Browser中啓動的Applet使用HTTP協議透過Web Server與Web Connector建立連結來實現。圖中的LAN/iBus是建立在Intranet上的,它是與Internet是不能直接互通的,這保證了內部系統的安全性。Web Server與Internet相連,直接在Internet上提供服務,另一方面它通過Web Connector與Intranet上的iBus相連。數據庫在Intranet中的連結有兩中方式,一是通過ODBC或數據庫系統提供的連結手段直接與應用服務器相連;一是開發DB Connector將數據庫服務掛接在iBus上。
    2.軟件模塊劃分及其邏輯關係
  客戶端模塊,客戶端使用標準的Browser爲用戶提供GUI的用戶操作界面,信息和數據使用HTML規範進行描述和佈局,一些特殊的數據表現形式可以使用Applet的方式來表現。用戶輸入信息可以使用HTML FORM(可同時使用JavaScript來完成客戶端的數據合法性檢查功能)或Applet的圖形界面方式來收集。客戶端主要關注於輸出信息的顯示和用戶輸入信息的收集,對信息和數據的解釋、處理等均在不在客戶端進行。這樣客戶端可以達到零布署開銷的目標。
  DNS / Web Redirector的目的是爲客戶端瀏覽器在發起連結時爲其分配一個特定的Web服務器。它對客戶端和Web服務器都是透明的,它僅在瀏覽器發起連結時參與服務器的分配,一旦瀏覽器首次訪問Web服務器後它就不再與瀏覽器和Web服務器發生關係。DNS / Web Redirector的具體工作模式在後面作詳細描述。
  Web Server + Web Connector是服務的提供者,客戶端的所有請求都由它首先接收,服務系統的所有結果都由它送回客戶端。一方面它提供標準Web Server的服務功能,另一方面它還作爲一個代理服務器,將應用服務器的同能提供給客戶瀏覽器。在業務系統中需要的連結保持、狀態轉換、權限控制等都由其上的Web Connector部分提供。它部隊業務操作的具體數據作任何處理,它是在客戶端瀏覽器和應用服務器之間轉發業務數據包(Message Block)。任何的業務系統在通信上都可以抽象成請求數據包(Request Message Block)和應答數據包(Response Message Block)的交互。Web Connector所提供的功能就是完成這種請求/應答的數據包轉發,同時將請求/應答的數據交互與特定的連結、狀態、權限等業務系統所必須的功能關聯起來。
  Application Server則實現具體的商業邏輯,完成具體的業務功能。連結保持、狀態轉換和權限控制等功能主要在Web Connector中完成,Application Server則以請求/應答的方式來實現具體的商業邏輯功能。在一個具體的應用系統設計時,首先抽象出業務系統的商業邏輯,將整個業務分解成一系列的具體服務,Application Server則以在iBus上爲每一個服務發佈一個主題(publish subject)的方式來提供服務。在完成具體業務的過程中,Application Server將需要數據庫服務器提供支持,Application Server可以在Intranet上直接訪問數據庫,也可以通過訪問數據庫系統在iBus上發佈的服務來得到數據庫系統的支持。通常絕大部分的商業邏輯的實現都集中在Application Server上,這使得商業邏輯的管理、控制和修改能較爲容易地完成,簡化整個系統的維護工作。
  Database部分主要關注的是業務數據的保存、檢索和備份等通常的數據庫功能。這部分在整個系統中的複雜程度將因不同的應用系統有較大的變化。提供對業務數據的存儲、訪問是其最基本的功能,進而可以形成Data mart, Data warehouse最終將產生Data mining的需求。業務、統計、分析數據將隨企業的發展和業務應用系統的運行而不斷積累,這些數據是一個企業的重要財富,如何合理有效地使用這些數據將是一個長期的任務,這已是N層架構應用系統之外的論題了。
三、系統的可規模化
    爲了保證系統具有儘可能好得可擴展性達到可規模化的特性,在N層架構應用系統中採用兩級可擴展的設計。
    1.Internet上的可規模化
    第一級可擴展性在Internet網上實現,如下圖所示。
    

圖表三、Internet上的可規模化機制

  爲了達到這一級的可擴展性,可以在Internet上佈署多個Web Server,這些Web Server使用完全相同的軟件系統,提供完全相同的服務功能。Web Server都直接連結到Internet上,都是在Internet範圍中可訪問的,它們各自擁有不同IP地址。Internet上所有的客戶請求將由DNS/Web Redirector調度,分攤到這些Web Server上,這樣每一個Web Server的負載就得到控制以保證服務系統的響應性能。
  DNS/Web Redirector在實現這種負載調度時有兩種方法,一是使用DNS技術,一是使用HTTP Redirect技術。使用DNS技術時,所有的Web Server將在Internet上註冊一個共同的域名,DNS/Web Redirector上將運行DNS服務,提供對這個域名的解析服務。通過配置DNS服務器可以使得其在響應每次對這個域名的解析請求時給出不同IP地址的響應,這個IP地址就是所有這些Web Server中的一個。這樣所有用戶的訪問請求就被分攤到不同的Web Server上了。使用HTTP Redirect技術時,在Internet上註冊的域名將被解析到一臺特定的主機上Web Redirector。域名解析的功能由系統之外的Internet服務提供,所部署的所有Web Server則無須擁有域名。在Web Redirector運行Web服務,並將其缺省主頁指定爲一個CGI(或其他的Web Server擴展技術,如ISAPI, NSAPI,Servlet)程序上,該程序僅迴應一個HTTP的Redirect命令。通過給出不同的Redirect命令就可以將用戶的訪問請求轉移到已佈署的Web Server中的一個上,以達到分攤負載的目的。
  在使用上述調度技術時,一種簡單的調度算法就是依次將訪問請求轉移到不同的Web Server上,更爲優化的方法是,各個Web Server實時將自己的負載情況反饋到DNS/Web Redirector上,這樣可以實現智能的負載調度。
    2.Intranet上的可規模化
    另一級的可擴展性在Intranet上實現,如下圖所示。
    

圖表四、Intranet上的可規模化機制

    這一級的可擴展性的關鍵在於使用iBus技術。由於Web Server + Web Connector只處理連結的維持和數據包的轉發,它對連結數量的處理能力是較強的。如果具體業務中的處理是一些耗時的運算,Application Server的服務能力就成爲系統性能的瓶頸。由於Web Connector與Application Server之間的數據交換是通過iBus來完成的,因此可以在iBus上佈署多個具有完全相同軟件系統的Application Server來分攤這些業務處理的工作以達到提高系統整體性能的目的。iBus的訂閱/發佈、廣播發送等機制使得系統的可擴展性得到很好的保證。 當數據庫是用於信息發佈的只讀模式,多份重複佈署仍然可用於提高系統的整體性能。若是業務數據庫,操作中存在對數據的修改時,數據庫的多份重複佈署將會導致數據一致性的問題,這時提高性能的方法是將數據根據不同的業務類型分到不同的數據庫中去。這時整個系統的結構如下圖所示。

 

    圖表五、雙總線體系結構

    四、用戶端與Web Connector間的連結維持
    1.客戶端瀏覽器軟件結構
    客戶端使用瀏覽器,其軟件層次結構圖示如下。
    

圖表六、客戶端的軟件層次結構

    Dynamic HTML可以很好地進行公開信息的發佈,通過HTML Form機制可以從瀏覽器中得到用戶檢索等簡單操作的輸入信息。對於無須身份認證、訪問控制的內容,在Web Server上可以使用通常的CGI技術獲取用戶的請求、查詢條件,通過Web Connector還可以使用應用服務其提供的後臺服務,結果使用HTML方式描述,並可直接回送到客戶端的瀏覽器。如果進一步使用Applet技術,還可以在客戶端實現更爲友好的交互式顯示模式。無論是使用DHTML技術還是HTML Form加上Server方擴展(如CGI, ISAPI, NSAPI, fastCGI和servlet等)。它們適合處理的業務都是每次請求/應答基本獨立,相互無關聯的情況。對於一些更爲複雜的應用,要求前後操作具有相關性,客戶與服務器端各自保持狀態的變化且狀態是相關的。在這種情形之下,更好的解決方案是將客戶端的所有操作保持在一個Applet中完成,由Applet直接與Web Server交互數據來完成請求/應答數據的交互。
    2.Web服務器軟件結構
    使用Applet作爲客戶端的用戶界面,很容易就可以實現身份認證、訪問控制等業務系統中通用的功能。在此情形下Applet直接與Web Server通信,必須透過Web Server後Applet才能訪問後臺的服務系統。由於Web Server在數據傳輸時是使用HTTP協議的,而HTTP協議的設計就是面向無連接服務的,因此在HTTP協議上如何解決連接保持的問題就顯得至關重要。標準的Web Server本身並不提供連接保持的功能,因此必須使用Web Server Extention技術通過Web Connector來實現連接的保持和管理。Web Server與Web Connector的關係如下圖所示。

圖表七、Web Connector軟件模塊結構

  所有來自客戶端的請求(瀏覽器和Applet)都首先發送給Web Server(HTTP Daemon),然後由httpd啓動相應的CGI/servlet擴展,CGI/servlet模塊僅對上傳的數據進行簡單的檢查和打包工作然後就傳給Web Connector Daemon,CGI/servlet模塊本身並不處理連接,它是以一種無連接的方式轉發一個請求再回送應答。連接的維持和記錄由Web Connector Daemon建立起連接記錄表來完成。
    3.邏輯連接的維持
  基於業務的請求/應答交互在Client和Server間是通過HTTP協議完成的。HTTP是一種無狀態保存的協議,實際業務中需要有狀態保存和邏輯連接維持的需求。這時在服務器WCD上要解決的一個問題就是,當網絡或客戶端程序出現異常、錯誤而導致非正常退出時,WCD要能夠完全釋放爲保持邏輯連接所佔用的所有資源。解決這一困難的方法是使用心跳信號(Heart beat signal),Browser端的Applet定時發出心跳信號,WCD則定時檢測,超時後就關閉此邏輯連接並釋放所有資源。
  在企業級應用中,HTTP協議保證了一次請求/應答交互的完整性,客戶端和服務器各自運行着自己的狀態機,這兩個狀態機之間可以建立起邏輯連接來。合理地設計業務處理的交互協議,可以在邏輯連接上保證業務的完整性。
  另一方面,維持邏輯連接的工作可以是與具體業務操作無關的。這也使得Web Connector Daemon在實現時具有通用性,WCD僅對收發的數據包做語法的處理,而與具體業務相關的語義操作則是由應用服務器來處理的。
   
    五、Application Server(應用服務器)
    1.無連接的服務模式
  應用服務器在提供其業務服務時採用無連接的模式。在一次請求/應答的交互過程中保持連接,在不同的請求之間不存在連接的概念。由於在一次請求/應答過程中連接的可靠性是得到保障的,因此,只要合理地對業務功能進行劃分後,就可以解決業務系統中常見的業務完整性問題。另一方面,無連接的服務模式具有更好的服務性能,由於服務器沒有連接維持的開銷,即使是應用負載較大的情況下服務器仍然能保證較好響應性能。
    2.應用系統羣集
  每一個應用服務器都在iBus上發佈自己提供的一系列服務。對於將來構造的應用系統在提供新的服務時,它完全可以是建立在老的應用服務器所提供服務的基礎之上的。這樣在一個服務器羣集的框架中,不同的應用服務器可以相互提供服務,每一個應用服務器是完全可重用的。構建這樣的系統羣集時,對業務功能的劃分是十分重要的。
       
    六、專業化的開發工具 - C++,Java
    企業應用系統要求軟件系統能夠達到企業強度,爲保證大型應用系統在可靠性、容錯性等方面要達到企業強度,滿足企業業務運作的要求,作爲系統開發工具必須使用專業化的開發工具。C++,Java是業界公認的專業化開發工具。專業化的開發工具對開發人員的素質要求較高,但它也是高質量具、有企業強度軟件的根本保證。快速開發工具雖然在其簡單易用,快速開發上具有優勢,但也正是這些因素使得它們在功能上、靈活性和效率上受到一定的限制。對於大型應用系統軟件,核心編程工具所生成的執行代碼的效率對整個系統顯得特別重要。過低的執行效率導致大型軟件系統很難使用的現象並不少見。功能強大的開發工具是最終系統功能強大的基本保證。
    業界多年來的傳統與經驗表明,C++作爲一種系統級的專業開發工具,無論是在功能強大上還是在運行代碼的執行效率上都有十分優異的表現。但是在多年的發展中,也使得C++在跨平臺、可移植性上產生了一些缺陷。Java正好彌補了這一缺陷,Java使用虛擬機技術非常好地解決了跨平臺一致性的問題,它是一種真正的跨操作系統平臺的開發工具。Java語言本身是一種通用目的的編程語言,在功能上它完全可以勝任系統級應用程序開發的要求,人們常常質疑的是其執行代碼的運行效率。Java程序在其發展的初期其執行效率遠比C++程序要低,但是若我們觀察其發展趨勢則可以看到Java程序在起執行效率上在很快地提高,目前它在許多方面與C++程序的執行效率相比已沒有巨大的差異了,從發展的角度來看,可以預計不久Java程序在運行效率上就能接近C++程序了。

正是基於上述的原因,我們選擇C++和Java作爲主要的開發工具。這樣既能保證應用系統的企業強度,同時又兼顧到了系統在跨平臺一致性和運行效率兩方面的要求。
   
    七、 N層架構應用系統的優勢
    N層架構應用系統體系是完全面向企業級應用系統的。相對於傳統的應用系統體系結構,它具有以下的優勢:
    1.信息引擎架構
      信息引擎是位於整個系統最重要的應用服務器的核心。信息引擎使得數據庫系統的具體細節對應用透明,同時它也提供了一個信息匯入的標準接口,這使得與老舊系統、第三方系統的結合較爲容易,同時不會影響系統的其他部分。這樣整個系統具有非常好的靈活性。另一方面,信息引擎的通信功能是建立在Internet的TCP協議之上的,TCP協議本身就非常好地提供了通信時數據的可靠性和容錯性,信息引擎在通信層還提供了數據加密的接口,這樣通過提供加密模塊系統在信息數據的安全性上有非常強的保障。
    2.全面面向Internet
      在客戶端用戶界面使用瀏覽器,GUI界面操作標準化,客戶端可以達到零部署開銷的目標。系統在通信協議上完全使用HTTP協議,而Internet上最爲流行和廣泛使用的協議就是HTTP,並且在可預見的將來HTTP仍將在Internet上被廣泛使用。
    3.系統性能可規模化
      系統性能的可規模化是企業應用系統所必須的,這也是應用系統能具有長久使用期限的關鍵因素。
    4.系統功能可規模化
      使用信息引擎架構來發布系統所提供的服務,這使得應用系統具有可重用性,能夠形成大規模協同工作的軟件系統羣體。
    5. 系統維護方便
      由於應用系統的應用邏輯完全集中在應用服務器一級實現,客戶端使用標準的瀏覽器,這對於系統的部署、維護和升級都是十分方便的。
    6. 系統具有企業應用強度
      由於系統開發選擇了嚴肅的大型開發工具,C++、Java等。這爲系統達到企業應用強度提供堅實的保障。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章