摘 要:我們在日常工作中,最為常見的網絡分析場景為針對簡單的C/S或B/S架構的應用的分析,在簡單環境中,C/S或B/S架構的應用主要是一層架構的,在這個架構的應用中,業務的交互僅僅涉及到客戶端與服務器,這樣的業務交互過程和報文交互路徑都非常簡單清晰,分析這種架構業務應用的性能問題、故障問題并不存在很大的難度,因為不會涉及過多的中間環節,但是在規模較大、應用較為重要和復雜的環境中,最為常見的是多層架構的業務應用系統。
關鍵詞:網絡分析;多層架構;業務數據
中圖分類號:TP311 文獻標識碼:A 文章編號:1674-7712 (2014) 04-0000-02
那么我們在多層架構的應用的場景下,出現應用性能或故障問題時,該如何利用網絡分析技術進行分析呢?我們首先來看一下什么是多層架構的應用。
一、三層/多層架構應用
所謂三層架構,是在客戶/服務之間加入了一個\"中間層\",也叫組件層。它與客戶層、服務器層共同構成了三層體系。這里所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機器就是三層體系結構,也不僅僅有B/S應用才有三層體系結構,三層是指邏輯上的三層。通過引入中間層,將復雜的商業邏輯從傳統的雙層結構(Client-Server)應用模型中分離出來,并提供了可伸縮、易于訪問、易于管理的方法,可以將多種應用服務分別封裝部署于應用服務器,同時增強了應用程序可用性、安全性、封裝復用性、可擴展性和可移置性,使用戶在管理上所花費的時間最小化,從而實現了便捷、高效、安全、穩定的企業級系統應用。
在這個架構中,其實是將表示層和業務邏輯層整合在一起,通過應用服務器統一對外提供業務訪問界面和業務邏輯處理。
我們遇到的大型、復雜的應用基本上都是基于多層架構開發的,針對多層架構應用的分析將是以后網絡分析工作中無法回避的問題。
二、分析多層架構應用的難處
針對多層架構應用的分析,可不像我們平時分析簡單一層架構的B/S、C/S應用那樣簡單,分析多層架構的業務應用主要具有以下幾點難度:
(一)業務數據交互路徑更為復雜
(1)客戶端向Web服務器發送相關業務應用的操作;
(2)Web服務器將客戶端的相關業務操作請求交由應用服務器處理;
(3)應用服務器將業務操作涉及到的相關數據請求發往數據庫服務器;
(4)數據庫服務器將相關數據操作結果反饋給應用服務器;
(5)應用服務器根據數據庫服務器反饋的數據結合業務邏輯,得出相關信息發往Web服務器;
(6)Web服務器將客戶端相關業務操作的反饋數據顯示給客戶端。
縱觀整個交互的過程,我們可以知道同樣一個業務操作的交互,多層架構的應用跟簡單的一層架構的應用相比,多出了數個中間環節,這導致業務交互路徑變得復雜,我們需要在不同的環節分別抓包做關聯分析。這些都會增加網絡分析的工作量和難度。
(二)數據加密問題:數據庫加密
在這種情況下,我們站在網絡交互的角度捕獲的報文只能夠提供三層和四層的相關信息,數據庫應用數據信息均無法正常查看,因此我們無法分析到底哪一個報文是某個客戶端的業務操作引發的應用服務器對數據庫服務器的訪問行為,這給我們的分析工作帶來了巨大的不便。
如果真的遇到加密的情況,那么站在網絡層面對其報文進行分析已經無能為力了,建議在數據庫服務器上站在業務應用的角度,調用其數據庫日志進行輔助分析。
(三)存在連接復用問題:連接復用
在這種方式下,應用服務器與數據庫服務器之間只需要建立很少的連接,并將這些連接長期保持(長連接),后續的所有應用服務器與數據庫服務器之間的增、刪、改、查詢等操作均通過已有的數條連接進行應用交互。如此大大降低了應用服務器與數據庫服務器之間的連接數。
連接復用給網絡分析帶來的問題是,我們不得不在數條連接中查找某個客戶端具體操作對應的數據庫報文,而每個數據庫的連接均包含大量的數據庫語句,有些是相近甚至是相同的數據庫語句,這些無疑會給網絡分析工作帶來巨大的工作量和難度,如果同時間訪問的客戶端數量很多的話,這樣的分析工作無異于大海撈針,基本上變得不可行了。
上述三大難點,給我們分析多層架構的應用帶來了非常大的難度,雖然如此,但是好在并不是所有的多層架構應用都是連接復用的,也不是所有的數據庫交互都是加密的,如果實際工作中真的遇到了多層架構的應用需要我們進行分析,我們往往沒有什么太多的選擇余地,我們能做的就是盡己所能、盡力而為了。
三、多層架構應用的關聯分析
當我們利用網絡分析技術對多層架構的業務應用的故障或異常的分析時,我們一般按照如下的思路開展網絡分析工作:
(一)關鍵路徑多點同時捕包
要針對多層架構的業務應用進行分析,必須在業務數據交互路徑中的每個關鍵點進行捕包,以便后續的關聯分析和對比分析。
(二)捕包機器時間同步
在各個關鍵路徑上的捕包機器時間都同步了,那么在大部分的情況下,我們就可以根據連接或報文發生的時間段在海量業務交互報文中提取跟業務操作相關的報文進行關聯分析,從而提高關聯的分析的效率。
(三)關聯分析
一旦全部準備就緒,那么剩下的工作就是根據不同位置捕獲到的業務交互報文,利用應用層字段,如cookie值、sessionID、用戶名、帳號、Userid、業務號、單號、ProcessID等關鍵字實現客戶端<->Web服務器、Web服務器<->應用服務器、應用服務器<->數據庫服務器之間的關聯。
四、結束語
只有將多層架構的應用在web服務器、應用服務器、數據服務器等每個節點產生的交互報文關聯起來之后,我們方可進行多層架構應用響應時間、前端web、中間件、數據庫等不同節點的處理延時、故障產生位置、等進行全方位的分析和定位。
參考文獻:
[1]海萬學.多層結構應用性能分析與故障診斷[OL].www.packetstory.com.