張寶龍
?
C/S模式網(wǎng)管系統(tǒng)向B/S模式的遷移與優(yōu)化①
張寶龍
(西安工程大學(xué)計(jì)算機(jī)科學(xué)學(xué)院, 西安 710048)
在傳統(tǒng)C/S(客戶端/服務(wù)器)模式的網(wǎng)絡(luò)管理系統(tǒng)中, 存在網(wǎng)絡(luò)管理便利性差和維護(hù)麻煩的缺點(diǎn), 因此提出基于B/S(瀏覽器/服務(wù)器)模式的網(wǎng)絡(luò)管理系統(tǒng), 將原有C/S模式的網(wǎng)管系統(tǒng)轉(zhuǎn)為B/S模式, 并且對(duì)系統(tǒng)結(jié)構(gòu)進(jìn)行了優(yōu)化, 有助于客戶方便可靠地監(jiān)測(cè)和管理網(wǎng)絡(luò)資源. 該系統(tǒng)以原網(wǎng)管系統(tǒng)服務(wù)端暴露的接口為基礎(chǔ), 利用RMI(遠(yuǎn)程方法調(diào)用)技術(shù)調(diào)用服務(wù)端接口與Web服務(wù)器實(shí)現(xiàn)數(shù)據(jù)通信, 并且整個(gè)系統(tǒng)采用負(fù)載均衡策略將來自多個(gè)瀏覽器的訪問請(qǐng)求均衡地分配至各Web服務(wù)器進(jìn)行處理, 同時(shí)對(duì)單一的負(fù)載均衡器進(jìn)行了雙機(jī)熱備處理, 從而大大提升了網(wǎng)絡(luò)管理系統(tǒng)的整體性能和可靠性.
網(wǎng)絡(luò)管理; C/S; B/S; 負(fù)載均衡; 雙機(jī)熱備
目前, 大多數(shù)的網(wǎng)管系統(tǒng)都是基于網(wǎng)絡(luò)管理協(xié)議進(jìn)行網(wǎng)絡(luò)資源的管理, 傳統(tǒng)的網(wǎng)管軟件均采用C/S結(jié)構(gòu), 管理模式集中化[1], 這種結(jié)構(gòu)的優(yōu)點(diǎn)在于網(wǎng)絡(luò)管理系統(tǒng)服務(wù)高度集中, 易于作出全面判斷和決策; 由于所有數(shù)據(jù)均連接到統(tǒng)一的中央數(shù)據(jù)庫(kù), 易于管理、維護(hù)和擴(kuò)容[2]. 但是C/S結(jié)構(gòu)需要在客戶端桌面安裝相應(yīng)的軟件, 對(duì)客戶端硬件有一定的的要求, 并且操作不太便利; 并且由于互聯(lián)網(wǎng)規(guī)模日益龐大, 應(yīng)用程序的功能不斷豐富和復(fù)雜, 表現(xiàn)出靈活性差、移植困難、開發(fā)成本高、維護(hù)麻煩、升級(jí)難度大和新技術(shù)不能輕易應(yīng)用的缺陷[1], 不能夠滿足現(xiàn)代網(wǎng)絡(luò)管理操作便捷、適應(yīng)性廣和低成本的要求.
為了解決以上問題, 本文提出基于Web方式的網(wǎng)絡(luò)管理系統(tǒng), 利用Web技術(shù)平臺(tái)與語言無關(guān)的優(yōu)勢(shì), 以原C/S模式網(wǎng)管系統(tǒng)服務(wù)端提供的接口為基礎(chǔ), 通過多臺(tái)Web服務(wù)器組成的集合, 采用三層結(jié)構(gòu)的局部負(fù)載均衡技術(shù), 構(gòu)建一種較為可靠的B/S模式網(wǎng)絡(luò)管理系統(tǒng), 方便客戶對(duì)網(wǎng)絡(luò)設(shè)備的監(jiān)控和管理; 并且對(duì)單一的負(fù)載均衡器進(jìn)行了雙機(jī)熱備處理, 有效地提高了網(wǎng)管系統(tǒng)的穩(wěn)定性和響應(yīng)速度.
網(wǎng)絡(luò)管理是利用網(wǎng)絡(luò)管理協(xié)議對(duì)網(wǎng)絡(luò)資源進(jìn)行拓?fù)浒l(fā)現(xiàn)、監(jiān)控、調(diào)試以及圖形化展示. 基于 Web的網(wǎng)絡(luò)管理WBM(Web-Based Management)[3]就是將Web技術(shù)集成到網(wǎng)管系統(tǒng)中, 從而使網(wǎng)絡(luò)管理更加便捷和高效, 它從實(shí)現(xiàn)方式上分為代理和嵌入式兩種. 基于代理的方案是在網(wǎng)絡(luò)管理之上疊加一個(gè)Web服務(wù)器[4], 使其成為瀏覽器用戶的網(wǎng)絡(luò)管理的代理者, 該方式支持對(duì)多種網(wǎng)絡(luò)設(shè)備的管理, 同時(shí)支持與其他應(yīng)用的擴(kuò)展融合; 嵌入式方案是將Web能力嵌入到被管設(shè)備中[4], 該方案對(duì)設(shè)備有限制, 擴(kuò)展性不好.
由于原網(wǎng)管系統(tǒng)采用了代理的實(shí)現(xiàn)方式, 所以也就決定了本文基于Web的網(wǎng)絡(luò)管理是使用代理的方式對(duì)支持網(wǎng)絡(luò)管理協(xié)議的網(wǎng)絡(luò)資源進(jìn)行管理. 與C/S模式相比, 采用B/S模式的網(wǎng)絡(luò)管理系統(tǒng)擁有如下三點(diǎn)優(yōu)勢(shì):
第一, 易于維護(hù)和升級(jí). 系統(tǒng)的核心功能均在Web服務(wù)器上運(yùn)行, 客戶端不需要安裝相應(yīng)軟件, 在任何平臺(tái)下直接使用瀏覽器就可以操作網(wǎng)絡(luò)管理系統(tǒng), 系統(tǒng)升級(jí)時(shí)只需升級(jí)服務(wù)器端, 便于系統(tǒng)的開發(fā)、維護(hù)和操作.
第二, 優(yōu)秀的系統(tǒng)性能. 基于Web的網(wǎng)管系統(tǒng)中大量的計(jì)算和存儲(chǔ)任務(wù)都在服務(wù)器端完成, 而瀏覽器只負(fù)責(zé)顯示和交互, 特別是由于AJAX技術(shù)的出現(xiàn), 它能使程序在用戶瀏覽器上進(jìn)行局部實(shí)時(shí)刷新, 從而大大的減輕了服務(wù)器的壓力, 提升了系統(tǒng)的響應(yīng)速度和整體性能.
第三, 基于Web方式的網(wǎng)絡(luò)管理系統(tǒng)容易構(gòu)建一種分布式的系統(tǒng), 容易擴(kuò)展, 不僅改善了傳統(tǒng)的集中式管理模式的網(wǎng)絡(luò)負(fù)荷大和服務(wù)器負(fù)載重的缺陷, 而且增強(qiáng)了網(wǎng)絡(luò)管理系統(tǒng)的健壯性.
本文采用Web方式的網(wǎng)絡(luò)管理系統(tǒng)分為客戶端瀏覽器、負(fù)載均衡模塊、Web服務(wù)器集合和原網(wǎng)管系統(tǒng)服務(wù)器四部分, 如圖1所示. 由于B/S模式的核心功能部署在服務(wù)器端, 這種“瘦客戶端/胖服務(wù)器”的模式使得客戶端的負(fù)荷較輕, 服務(wù)器端的負(fù)荷卻較重, 然而單臺(tái)服務(wù)器的處理能力又有限, 不能夠同時(shí)處理大量的訪問請(qǐng)求, 因此我們對(duì)客戶端、負(fù)載均衡器和Web服務(wù)器采用了三層結(jié)構(gòu)的局部負(fù)載均衡技術(shù), 將來自瀏覽器的訪問請(qǐng)求均勻地分配至不同的Web服務(wù)器進(jìn)行處理[5], 從而平衡各個(gè)Web服務(wù)器的負(fù)載, 使系統(tǒng)達(dá)到最佳的狀態(tài). 這種基于Web服務(wù)器的負(fù)載均衡結(jié)構(gòu)客戶端應(yīng)用不需要做特殊修改, 透明的中間層將請(qǐng)求均衡的分布到不同的服務(wù)器處理[4], 而請(qǐng)求的應(yīng)答則不需要經(jīng)過負(fù)載均衡器.
圖1 Web網(wǎng)管系統(tǒng)整體架構(gòu)圖
從圖1中可以看出, 所有的瀏覽器請(qǐng)求均會(huì)通過負(fù)載均衡器被轉(zhuǎn)發(fā)到Web服務(wù)器節(jié)點(diǎn)進(jìn)行處理, 因此為了避免負(fù)載均衡器發(fā)生單點(diǎn)故障, 從而使整個(gè)網(wǎng)絡(luò)管理系統(tǒng)發(fā)生癱瘓, 故使用了雙機(jī)熱備的方式, 使某臺(tái)負(fù)載均衡器發(fā)生故障后另一臺(tái)能夠繼續(xù)為系統(tǒng)提供正常的服務(wù). 如果Web服務(wù)器集合中的某臺(tái)服務(wù)器出現(xiàn)故障時(shí), 負(fù)載均衡器便會(huì)自動(dòng)檢測(cè)出出現(xiàn)問題的服務(wù)器, 并暫停對(duì)該服務(wù)器的請(qǐng)求訪問, 將其任務(wù)轉(zhuǎn)發(fā)至其他正常工作的服務(wù)器, 從而保證系統(tǒng)為用戶提供正常的服務(wù)[6].
3.1 B/S模式網(wǎng)管系統(tǒng)架構(gòu)
Web網(wǎng)管服務(wù)器采用模型-視圖-控制器(MVC)結(jié)構(gòu)的分層設(shè)計(jì)模式[7], 它主要通過分離模型、視圖以及控制器在應(yīng)用程序中分擔(dān)的角色將業(yè)務(wù)邏輯從界面中解耦, 這種分離讓它們更容易進(jìn)行定制. 而Spring框架提供了構(gòu)建Web應(yīng)用程序的全功能MVC模塊, 并且具有高度的可配置性和擴(kuò)展性, 故我們使用Spring mvc輕量級(jí)框架構(gòu)建Web網(wǎng)管項(xiàng)目.
B/S網(wǎng)管系統(tǒng)的請(qǐng)求處理流程如圖2所示, 當(dāng)客戶端瀏覽器向Web網(wǎng)管服務(wù)器發(fā)出HTTP請(qǐng)求時(shí), 該請(qǐng)求首先會(huì)被負(fù)載均衡器分配給負(fù)載較輕的Web服務(wù)器, 由服務(wù)器中DispatcherServlet(Spring控制器)對(duì)請(qǐng)求的URL進(jìn)行解析, 通過一個(gè)或者多個(gè)處理程序映射, 將每個(gè)請(qǐng)求映射到處理程序中(Controller); 處理程序在執(zhí)行時(shí), 即實(shí)現(xiàn)業(yè)務(wù)邏輯, 會(huì)通過RMI遠(yuǎn)程方法調(diào)用原網(wǎng)管服務(wù)器服務(wù)接口進(jìn)行數(shù)據(jù)通信, 控制器處理完業(yè)務(wù)請(qǐng)求后, 會(huì)將ModelAndView對(duì)象返回給DispatcherServlet, 最后再通過瀏覽器進(jìn)行呈現(xiàn)用戶.
圖2 B/S網(wǎng)管系統(tǒng)架構(gòu)圖
3.2 負(fù)載均衡模塊
由于本系統(tǒng)對(duì)服務(wù)器的并發(fā)請(qǐng)求數(shù)量不是特別巨大, 并且對(duì)負(fù)載均衡器進(jìn)行了雙機(jī)備份處理, 為了降低開發(fā)難度和成本, 故選用集中式的軟件負(fù)載均衡實(shí)現(xiàn)方式, 軟件選擇Nginx. Nginx是一款開源的、輕量級(jí)的Web服務(wù)器/反向代理服務(wù)器[7]. 其特點(diǎn)是占有內(nèi)存少, 運(yùn)行可靠, 并發(fā)能力強(qiáng), 我們采用反向代理負(fù)載均衡方式和默認(rèn)的輪詢調(diào)度算法.
反向代理是一種通過在繁忙的Web服務(wù)器和外部網(wǎng)絡(luò)之間增加一個(gè)高速的Web緩沖服務(wù)器來降低實(shí)際的Web服務(wù)器的負(fù)載的一種技術(shù)[7]. 通過在nginx.config中進(jìn)行配置, 反向代理服務(wù)器將來自外部網(wǎng)絡(luò)的多個(gè)請(qǐng)求均勻地分配給內(nèi)部網(wǎng)絡(luò)上的各個(gè)服務(wù)器結(jié)點(diǎn)進(jìn)行處理[8], 減輕服務(wù)器的負(fù)載壓力, 從而使整個(gè)網(wǎng)管系統(tǒng)實(shí)現(xiàn)負(fù)載均衡, 達(dá)到最佳狀態(tài).
Nginx內(nèi)置5種負(fù)載均衡算法, 分別是輪詢、weight、ip_hash、fair和url_hash; 輪詢算法的基本原理是當(dāng)請(qǐng)求發(fā)送到系統(tǒng)前端的負(fù)載均衡器時(shí), 負(fù)載均衡器將每個(gè)訪問請(qǐng)求按響應(yīng)的時(shí)間順序依次分配到不同的后端服務(wù)器[9], 當(dāng)后端服務(wù)器down掉后, 就自動(dòng)刪除, 簡(jiǎn)單易行且通用性較強(qiáng), 由于本網(wǎng)管系統(tǒng)無特殊需求, 故采用此算法.
3.3 雙機(jī)熱備
我們使用Nginx+Keepalived的雙機(jī)熱備處理方式[10], 即使用兩臺(tái)均安裝Nginx的設(shè)備充當(dāng)負(fù)載均衡服務(wù)器同時(shí)對(duì)外提供服務(wù), 并通過Keepalived軟件檢測(cè)負(fù)載均衡器的狀態(tài), 當(dāng)某臺(tái)負(fù)載均衡器發(fā)生故障時(shí), Keepalived就會(huì)檢測(cè)出出現(xiàn)故障的負(fù)載均衡器, 該負(fù)載均衡器便會(huì)立即釋放虛擬IP, 由另一臺(tái)負(fù)載均衡器綁定該虛擬IP, 同時(shí)Keepalived還會(huì)向網(wǎng)關(guān)發(fā)送 Arping 包, 保證網(wǎng)關(guān)上的IP和MAC地址對(duì)應(yīng)的關(guān)系能隨之更新[11], 從而使負(fù)載均衡器能夠強(qiáng)行接管虛擬IP并繼續(xù)為系統(tǒng)提供服務(wù).
首先構(gòu)建的Web工程, 通過修改web.xml文件并添加Spring配置文件構(gòu)建Spring MVC項(xiàng)目, 然后添加RMI配置文件, 實(shí)現(xiàn)RMI遠(yuǎn)程調(diào)用原網(wǎng)管系統(tǒng)暴漏的接口, 根據(jù)業(yè)務(wù)需求劃分系統(tǒng)功能模塊, 從而逐個(gè)實(shí)現(xiàn)各模塊的系統(tǒng)功能.
由于整個(gè)Web網(wǎng)絡(luò)管理系統(tǒng)功能較多, 且大多都是通過瀏覽器的http請(qǐng)求到Web服務(wù)器, 然后使用RMI調(diào)用原網(wǎng)管服務(wù)端暴漏的接口實(shí)現(xiàn)數(shù)據(jù)通信, 最后展現(xiàn)到瀏覽器端, 從而實(shí)現(xiàn)網(wǎng)絡(luò)管理. 各模塊相似度較高, 故僅以性能管理模塊描述基于Web方式的網(wǎng)絡(luò)管理系統(tǒng)的實(shí)現(xiàn).
4.1 性能管理模塊
性能管理模塊分為任務(wù)管理、實(shí)時(shí)性能監(jiān)測(cè)和歷史性能查詢?nèi)糠? 首先根據(jù)需求對(duì)照原網(wǎng)管系統(tǒng)客戶端使用easyUI做出靜態(tài)頁(yè)面.
① 任務(wù)管理: 通過原網(wǎng)管系統(tǒng)提供的接口對(duì)本區(qū)域任務(wù)進(jìn)行管理, 包括任務(wù)的查看、添加、編輯、開始、暫停和刪除, 主頁(yè)面默認(rèn)以列表顯示已添加的任務(wù)信息. 其中添加和編輯任務(wù)需要使用JQuery彈窗, 選擇要添加或編輯的輪詢?nèi)蝿?wù)類型、輪詢時(shí)間和要監(jiān)視的設(shè)備, 以及各任務(wù)所對(duì)應(yīng)的告警門限設(shè)置, 這里需要對(duì)輸入的告警門限值進(jìn)行校驗(yàn), 最后將這些設(shè)置通過ajax請(qǐng)求調(diào)用接口保存到數(shù)據(jù)庫(kù)中, 并將該任務(wù)信息顯示到列表中; 而開始、暫停和刪除功能只需要調(diào)用相應(yīng)的接口, 對(duì)輪詢?nèi)蝿?wù)作出相應(yīng)的處理, 并修改列表上該任務(wù)的狀態(tài)即可. 在任務(wù)輪詢時(shí), 當(dāng)輪詢結(jié)果超過設(shè)置的門限值時(shí)便會(huì)以彈框的形式產(chǎn)生告警.
② 實(shí)時(shí)性能監(jiān)視: 主頁(yè)面默認(rèn)顯示所有輪詢?nèi)蝿?wù)已添加的設(shè)備, 在查看該設(shè)備的實(shí)時(shí)性能時(shí), 通過JQuery彈窗以不同的tab頁(yè)將該設(shè)備已添加的所有任務(wù)展示出來, 各tab頁(yè)的任務(wù)視圖利用JFreeChart將該輪詢結(jié)果以折線圖的形式展現(xiàn)出來, 并且按任務(wù)的輪詢時(shí)間, 將采集端采集的輪詢結(jié)果通過服務(wù)端使用JMS發(fā)送到Web服務(wù)器, 接收后解析加入到該設(shè)備對(duì)應(yīng)的任務(wù)緩存中, 然后刷新圖表, 雙擊圖表可通過任務(wù)緩存查看該任務(wù)視圖的詳情, 包括當(dāng)前值、最大值、和平均值, 關(guān)閉頁(yè)面后任務(wù)緩存釋放.
③ 歷史性能查詢: 主頁(yè)面默認(rèn)以tab頁(yè)形式顯示所有的輪詢?nèi)蝿?wù), 每個(gè)輪詢?nèi)蝿?wù)的tab頁(yè)可通過選擇區(qū)域和該區(qū)域下已添加該輪詢?nèi)蝿?wù)的設(shè)備, 然后選定時(shí)間節(jié)點(diǎn)查詢?cè)撛O(shè)備的日視圖、周視圖和月視圖, 各視圖均采用JFreeChart將查詢結(jié)果以折線圖的形式展現(xiàn)出來; 并可將結(jié)果導(dǎo)出到excel中.
4.2 界面對(duì)比
以任務(wù)管理為例, 對(duì)比圖3和圖4可見, B/S結(jié)構(gòu)與C/S結(jié)構(gòu)用戶界面基本相似, 實(shí)現(xiàn)功能完全相同, 達(dá)到了預(yù)期的目的.
圖4 B/S結(jié)構(gòu)的任務(wù)管理界面
本文C/S模式網(wǎng)管系統(tǒng)向B/S模式的遷移是在使用原C/S網(wǎng)管系統(tǒng)服務(wù)端的基礎(chǔ)上, 使用Spring MVC框架構(gòu)建Web服務(wù)器, 利用服務(wù)端暴漏的接口通過RMI(遠(yuǎn)程方法調(diào)用)與原有網(wǎng)管系統(tǒng)進(jìn)行數(shù)據(jù)通信, 從而實(shí)現(xiàn)B/S網(wǎng)管系統(tǒng)功能; 通過對(duì)多臺(tái)Web服務(wù)器利用Nginx軟件實(shí)現(xiàn)負(fù)載均衡, 平衡各個(gè)Web服務(wù)器的負(fù)載, 并對(duì)單一的負(fù)載均衡器進(jìn)行了雙機(jī)熱備, 消除網(wǎng)絡(luò)瓶頸, 也能起到冗余作用, 提高網(wǎng)絡(luò)服務(wù)的靈活性和可用性[12].
1 袁俊.基于Web的網(wǎng)絡(luò)管理模型及實(shí)現(xiàn)技術(shù)研究.河南科技, 2014,4:23–24.
2 顧慧娟.構(gòu)建企業(yè)級(jí)WEB分布式網(wǎng)絡(luò)管理系統(tǒng)的研究[學(xué)位論文].無錫:江南大學(xué),2009.
3 Yao L, Sheng QZ, Dustdar S. Web-based management of the internet of things. IEEE Internet Computing, 2015, 19(4): 60–67.
4 鄧江安,金晟.基于Web和SNMP的網(wǎng)絡(luò)用戶管理系統(tǒng).計(jì)算機(jī)與網(wǎng)絡(luò),2014,23:58–60.
5 Yang K, Song X, Li X. Parallel web server load balancing technology of cloud computing environments. Guidance, Navigation and Control Conference. IEEE. 2014.
6 周博.WEB服務(wù)器負(fù)載均衡系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[碩士學(xué)位論文].成都:電子科技大學(xué),2014.
7 付文超.WEB服務(wù)器負(fù)載均衡技術(shù)研究[學(xué)位論文].天津:河北工業(yè)大學(xué),2008.
8 Semchedine F, Bouallouche-Medjkoune L, Sayeh O, et al. DNS-based load balancing with cache for geographically distributed web server systems. Computer & Information Technology(GSCIT), 2014 Global Summit. IEEE. 2014. 1–6.
9 Chi X, Liu B, Niu Q, et al. Web load balance and cache optimization design based nginx under high-concurrency environment. International Conference on Digital Manufacturing & Automation. IEEE Computer Society. 2012. 1029–1032.
10 肖佳,王古城,楊旭,晁勇.雙機(jī)熱備與負(fù)載均衡的設(shè)計(jì)與實(shí)現(xiàn).電子設(shè)計(jì)工程,2015,18:176–179.
11 李彬,朱亞興.Nginx在實(shí)現(xiàn)網(wǎng)站負(fù)載均衡方面的研究.信息與電腦(理論版),2013,11:49–50.
12 巴哈提亞爾,聶波,宋子龍.網(wǎng)絡(luò)負(fù)載均衡技術(shù)研究和應(yīng)用. 中國(guó)管理信息化,2014,3:68–70.
Migration and Optimization of C/S Model Network Management System to B/S Model
ZHANG Bao-Long
(School of Computer Science, Xi’an Polytechnic University, Xi’an 710048, China)
There are some defects such as inconvenience and maintenance trouble for network management in the traditional C/S (client/server) model of network management system. Therefore, we put forward a network management system that based on B/S (browser/server) model, in which the original C/S model of network management system is turned to B/S model, and the structure of system is optimized which helped the customers to conveniently and reliably monitor and manage the network resource. This system is based on the interface that the original network management system server exposed, uses the RMI (remote method invocation) technology call server interface to realize data communication with Web server, and the whole system adopts the load balancing strategy to balance the access requests from multiple browser to each Web server for processing. Meanwhile, the system adopts the hot standby process on the single load balancer, thus greatly improves the overall performance and reliability of the network management system.
network management system; C/S; B/S; load balancing; hot standby
2016-04-06;收到修改稿時(shí)間:2016-05-16
[10.15888/j.cnki.csa.005528]