摘要:分布式系統(tǒng)規(guī)模龐大且結構復雜,傳統(tǒng)的運維方式已難以滿足其對穩(wěn)定性和高效率的需求。文章采用Web技術和機器學習算法開發(fā)了一種分布式系統(tǒng)的故障診斷實現方法。在Web方面,文章設計并實現了用戶管理、日志的采集與管理、故障診斷與可視化、運維管理等功能。在機器學習方面,文章訓練并評估了決策樹、隨機森林、前饋神經網絡模型,其中隨機森林模型的故障診斷準確率高達95%。該系統(tǒng)不僅有利于故障的快速診斷和解決,降低運維的難度,減少人力資源的消耗,提高運維效率,還具有顯著的實用價值和廣泛的應用前景。
關鍵詞:分布式系統(tǒng);故障診斷;FNN;RF;DT
中圖分類號:TP311 "文獻標志碼:A
0 引言
在大數據時代,隨著互聯(lián)網技術的迅猛發(fā)展,分布式系統(tǒng)已成為信息存儲和處理的核心架構。與傳統(tǒng)系統(tǒng)相比,分布式系統(tǒng)的規(guī)模更大,結構更復雜,但同時也帶來更高的故障率[1]。面對復雜龐大的分布式系統(tǒng),傳統(tǒng)的手動運維方式已無法保障系統(tǒng)的穩(wěn)定運行。在分布式系統(tǒng)中,當某個節(jié)點出現故障時,該故障會沿著系統(tǒng)的拓撲結構傳播,影響該節(jié)點及其鄰接節(jié)點的關鍵性能指標(Key Performance Indicator,KPI)并產生大量異常日志,極大地增加了運維的難度和復雜性。近年來,隨著人工智能的發(fā)展,機器學習算法已被應用于多個領域(如電力系統(tǒng)[2]、汽車[3]、火箭發(fā)動機[4]等方面)的智能故障診斷并取得了一定成果。本文采用Web技術和機器學習算法實現了分布式系統(tǒng)的故障診斷方法,故障診斷準確率高達95%,極大地提升了分布式系統(tǒng)的運維效率,有力地保障了系統(tǒng)的穩(wěn)定運行。
1 分布式系統(tǒng)應用的相關互聯(lián)網技術
當實現基于機器學習的分布式系統(tǒng)故障診斷方法時,本文須要借助一系列互聯(lián)網相關技術(如前端開發(fā)框架Vue以及后端Spring Framework等)完成功能開發(fā)。此外,本文利用Flume框架收集分布式系統(tǒng)的故障日志數據。下面對其中幾項關鍵技術和應用進行介紹。
1.1 Web技術
Vue是一個基于標準HTML、CSS和JavaScript構建的用戶界面開發(fā)框架。文章提供了一套聲明式且組件化的編程模型,能夠滿足前端開發(fā)中的大多數需求。Vue以其雙向數據綁定、高度靈活性和“可以被逐步集成”等優(yōu)點著稱[5],已成為當今最流行的前端開發(fā)框架之一[6]。
Spring Framework作為后端開發(fā)中主流的解決方案,包括Spring、Spring MVC、SpringBoot和Spring Cloud框架。其中,SpringBoot是建立在Spring 4.0基礎之上的輕量級Java開發(fā)框架,保留了原始Spring框架的卓越特性并提供了簡化的配置功能,使開發(fā)人員能夠更輕松快速地構建出企業(yè)級應用。SpringBoot具有簡化配置、簡化依賴管理、獨立運行和內嵌服務器選項等優(yōu)勢,因此成為廣泛應用于微服務開發(fā)領域的首選框架之一[7]。
1.2 日志采集系統(tǒng)
Flume是一個海量日志采集、聚合和傳輸的系統(tǒng),是一個分布式、可靠且高可用的服務。Flume基于流數據的簡單靈活架構,具備良好的可靠性機制、故障轉移恢復機制和強大的容錯性等優(yōu)點,適用于需要高可靠性、高性能的大規(guī)模日志數據收集和傳輸任務。
2 機器學習算法
在機器學習領域,研究人員使用各種算法和技術來訓練模型以從數據中學習并做出預測。根據機器學習任務涉及的目標變量類型(離散型或連續(xù)型),可將算法分為分類算法和回歸算法,本文將重點介紹分類算法。
2.1 決策樹
決策樹(Decision Tree,DT)是一種以樹形數據結構進行決策的模型[8]。構建決策樹的過程:從根節(jié)點開始,測試待分類項中相應的特征屬性,按屬性值選擇分支直到對應的葉子節(jié)點,葉子節(jié)點存放的類別即為決策結果。決策樹因其易理解、魯棒性強、高效等優(yōu)點,在各個領域都有廣泛的應用。
2.2 隨機森林
隨機森林(Random Forest,RF)是一種由多棵決策樹組成的集成學習算法[9],核心思想如下:首先,構建多棵決策樹;其次,每棵樹都在隨機選擇的數據子集和特征子集上進行訓練,該策略增加了模型的多樣性并減少了過擬合的風險;最后,通過對所有決策樹的預測結果進行平均或投票表決來匯總,從而提升預測的準確性和穩(wěn)定性。隨機森林算法因其在高維不平衡數據上表現良好而被廣泛應用于回歸和分類問題。
2.3 前反饋神經網絡
神經網絡模型的基本思想為通過模擬人類神經系統(tǒng)的結構和功能,實現對數據集中模式或規(guī)律的學習和識別。神經網絡由多個神經元連接而成,每個神經元接收輸入信號、加權處理并將結果傳遞給下一層神經元,通過反向傳播等優(yōu)化算法,神經網絡不斷調整神經元之間的權重,降低預測誤差,從而提高模型的準確性和泛化能力。目前,神經網絡模型已廣泛應用于許多領域,例如圖像識別、語音識別、自然語言處理、推薦系統(tǒng)、金融預測等。
前饋神經網絡(Feedforward Neural Network,FNN)是一種單向的、無環(huán)的神經網絡結構[10],每個神經元的輸出只能作為下一層神經元的輸入,不能形成閉環(huán)。前饋神經網絡通過多層神經元進行特征提取和抽象并最終輸出結果,其模型結構簡單、易于理解和實現。
3 系統(tǒng)設計
3.1 需求分析
分布式系統(tǒng)的故障診斷方法有利于管理人員和運維工程師更好地監(jiān)控、管理和維護分布式系統(tǒng)。根據業(yè)務場景及功能進行系統(tǒng)需求分析,系統(tǒng)的用戶角色分為管理員、運維工程師以及普通用戶,須實現的系統(tǒng)功能如下。
(1)權限與用戶信息管理:管理員可以進行菜單權限管理以及用戶管理,為不同用戶設置不同的權限功能。管理員可以進行個人信息和密碼的維護。
(2)一鍵日志采集:管理員和運維工程師人員可制定日志采集的內容、數據清洗規(guī)則以及指定采集的節(jié)點,實現一鍵式數據采集與清洗功能。
(3)模型訓練:管理員可以選定或者上傳數據集進行故障模型訓練以及下載訓練模型。
(4)智能故障診斷:管理員以及運維工程師可以選擇機器學習算法進行故障診斷,所有人員均可以查看診斷結果和故障可視化數據報表。
(5)故障監(jiān)控與可視化:故障類型與數量以報表形式進行呈現,既可跟蹤維修情況和進度,又能展示分布式系統(tǒng)的節(jié)點網絡拓撲圖。
(6)故障報修:普通用戶和管理員可以進行運維報修,將故障情況發(fā)送給其他用戶以及查看故障處理情況。
(7)運維管理:運維工程師可以查看需要進行維護處理的故障并在故障處理完成后對報修的故障進行回執(zhí)。
3.2 總體功能設計
系統(tǒng)的主要功能模塊包含系統(tǒng)管理、數據采集、模型訓練、故障診斷、運維中心、個人中心。其中,系統(tǒng)管理包含用戶、角色、菜單管理功能;數據采集包含采集配置、在線采集、離線上傳和下載功能;模型訓練包含RF、DF、FNN訓練;故障診斷包含在線故障預測、故障匯總與分布、故障詳細報表;運維中心包含故障保修、詳情、運維進度詳情和信息回執(zhí);個人中心包含個人信息、修改密碼、注冊與登錄等功能。
3.3 數據庫設計
本文結合需求分析以及總體系統(tǒng)功能,設計了14張數據庫表,如圖1所示。
表t_train_file用于存儲機器訓練集的相關數據;表t_train包含故障診斷模型所需的數據;表t_predict用于存儲故障診斷相關數據;診斷結果被記錄在表t_failure_result中。與日志采集相關的表為t_log_collection和t_log_config。
4 系統(tǒng)實現
4.1 技術選型
系統(tǒng)前端部分采用Element-UI進行圖形界面設計,采用Vue.js進行動態(tài)場景交互,同時采用Echarts對故障進行統(tǒng)計可視化展示。后端采用SpringBoot、Mybatis-Plus和Redis框架完成開發(fā),持久層采用MySQL。故障診斷算法選用FNN、DT、RF算法。系統(tǒng)選擇Maven進行項目管理,Git進行代碼版本管理。
4.2 前端實現
本系統(tǒng)采用左側欄導航,利用Element-UI的Menu菜單組件實現了垂直且可折疊的菜單,增強了導航的可見性,方便用戶進行頁面切換;在頁面頂部放置常用工具,如搜索欄、幫助按鈕和通知按鈕;主頁面使用Table表格組件展示多條結構相似的數據,提供了排序、篩選、對比和其他自定義操作功能。為了提升用戶體驗,本系統(tǒng)采用Pagination分頁組件對數據量較大的表格進行分頁處理。本系統(tǒng)中的用戶管理、角色管理、菜單管理、模型訓練和故障診斷等功能均采用類似的實現方式。
4.3 數據采集
本文采用Flume框架進行數據采集,采集過程如圖2所示。
Flume框架的核心工作為:通過數據采集器將分布式系統(tǒng)的節(jié)點日志數據從數據源(Source)進行收集,再將收集的數據通過緩沖通道(Channel)匯集到指定的接收器(Sink)。
4.4 故障診斷模型
4.4.1 特征工程
在數據特征工程階段,本系統(tǒng)進行去重、特征篩選、缺失值填充和數據標準化等操作。具體的數據處理邏輯如圖3所示。
首先,本文剔除缺失率超過80%的樣本以減少噪聲干擾;其次,計算特征之間的協(xié)方差,篩選出相關性較高的特征組進行PCA降維處理;再次,進一步降維并分析特征值的分布情況,剔除區(qū)分度較小的特征,以提高模型的泛化能力;最后,根據樣本數量的不同,選擇合適的填充方法(如0填充、均值填充或K鄰近填充)進行填充并進行數據標準化,確保數據處于相同的尺度范圍,有利于模型的訓練和表現。
4.4.2 模型訓練
本項目選擇3種算法模型進行訓練,分別為FNN、DT和RF算法。訓練通常包括參數調優(yōu)、模型訓練和評估3個步驟。模型訓練流程如圖4所示。
圖中,FNN模型采用5個全連接層(Dense層),每層均應用L2正則化。優(yōu)化器采用Adamax,損失函數選用分類交叉熵(categorical_crossentropy)。同時,將標簽數據轉換為獨熱編碼并使用類別加權策略進行訓練。DT和RF的訓練方法相似,RF模型的訓練步驟如下:步驟1,定義模型的超參數組合;步驟2,定義模型對象RomandForestClassier;步驟3,網格搜索最優(yōu)超參數組合;步驟4,調用fit函數訓練。
4.5 后端實現
本系統(tǒng)的后端主要分為Web服務端和機器學習算法實現2個部分。故障診斷功能后端實現步驟如圖5所示。
Web服務端采用Java語言,基于SpringBoot框架和Mybatis-Plus框架進行功能開發(fā)。系統(tǒng)分為3層:Controller層(負責消息接入)、Service層(處理業(yè)務邏輯)和Dao層(負責數據庫操作)。機器學習算法部分選用Python語言,完成了日志文件讀取、特征工程處理、模型訓練和故障預測并進行結果寫文件操作。
Web服務端(Java)和機器學習算法部分(Python)間的通信采用Socket網絡編程方式實現。Python端創(chuàng)建一個Socket服務器,接收Java端發(fā)送的數據,調用機器學習模型進行故障預測診斷并將結果返回給Java端。Java端使用Socket類與Python服務器建立連接,發(fā)送數據并接收Python服務器返回的結果。
5 模型驗證結果與分析
在分布式系統(tǒng)上,本文采集了10000條含故障特征和標簽的數據。其中,特征數據是系統(tǒng)發(fā)生故障時的106個指標數據;標簽數據為故障類別數據,共6種類型的故障。在此數據集上,本文完成了DT、RF和FNN模型的訓練,對3個模型進行評估,模型性能指標如表1所示。
由表1可知:RF模型具有最高的準確率為0.95,FNN模型次之,DT模型的準確率最低。
F1-score作為一個綜合模型評估指標,是精確率(Precision)和召回率(Recall)的調和平均值。FNN模型、DT模型和RF模型在6個類別上的F1-score表現分別如下:在大多數類別上FNN模型的F1-score都在0.85到0.91之間,整體表現較為均衡;DT模型在所有類別上的F1-score分布于0.64到0.92之間,相對于FNN模型,表現稍差一些;RF模型在所有類別上的F1-score均達到了0.87以上,表現相對較好。
綜上所述,在該數據集上,RF模型在準確率和F1-score上都表現優(yōu)于FNN模型和DT模型。
6 結語
本文致力于解決分布式系統(tǒng)純人工維護效率低的問題,設計并實現了基于機器學習的故障診斷方法。本文介紹了系統(tǒng)的前端設計、數據庫設計、flume數據采集以及特征工程的方案;完成了決策樹、隨機森林和前饋神經網絡模型的訓練和評估工作;以故障診斷功能為例,詳細介紹了后端Java和Python實現的主要步驟。
該系統(tǒng)功能齊全,頁面簡潔易用,實用性強。用戶可以通過一鍵式操作完成多節(jié)點故障日志采集和智能故障診斷。實驗結果表明,利用隨機森林模型的故障診斷的準確率達95%,促進了系統(tǒng)故障的快速診斷和解決,降低了運維的難度,提高了運維效率。該系統(tǒng)具有顯著的實用價值和廣泛的應用前景,為企業(yè)和組織提供了更智能、高效的運維管理解決方案。
參考文獻
[1]陳園瓊,孟玉佳,李智豪.基于機器學習的分布式的故障診斷系統(tǒng)研究[J].電腦知識與技術,2024(3):22-24.
[2]謝國民,林忠寶.多策略改進黏菌算法階段優(yōu)化HSVM變壓器故障辨識[J].電子測量與儀器學報,2023(4):1-11.
[3]倪龍飛,白倩,張治斌.基于AdaBoost算法的新能源汽車電機異常故障檢測[J].計算機仿真,2024(4):97-101.
[4]張萬旋,張箭,盧哲,等.火箭發(fā)動機故障檢測的快速增量單分類支持向量機算法[J].國防科技大學學報,2024(2):115-122.
[5]胡鵬飛,于強.基于B/S的空間站高溫柜地基實驗遠程操控系統(tǒng)[J].計算機應用與軟件,2023(12):9-15.
[6]CHING C T,HSIAO L W,FENG C T,et al. Distributed consensus formation control with collision and obstacle avoidance for uncertain networked omnidirectional multi-robot systems using fuzzy wavelet neural networks[J]. International Journal of Fuzzy Systems,2016(19):1375-1391.
[7]劉梅,卜言彬,周越.基于微信小程序的土地租賃的設計與實現[J].現代信息科技,2023(10):95-98.
[8]范劭博,張中杰,黃健.決策樹剪枝加強的關聯(lián)規(guī)則分類方法[J].計算機工程與應用,2023(5):87-94.
[9]張晟瑀,申文超,蘇小四.基于隨機森林法的區(qū)域地下水硝酸鹽污染風險評價[J].吉林大學學報,2024(4):1-17.
[10]何娟霞,黃麗文,蔣文豪,等.前饋神經網絡在預測連續(xù)泄露系數中的應用[J].安全與環(huán)境學報,2024(24):2179-2189.
(編輯 王雪芬編輯)
Implementation method of fault diagnosis for distributed system based on machine learning
LIU" Mei, ZHOU" Hongping, DING" Wenyi
(Communication University of China Nanjing, Nanjing 210000, China)
Abstract: The distributed system is large in scale and structurally complex, making traditional maintenance methods inadequate to meet its requirements for stability and efficiency. This paper develops a fault diagnosis implementation method for distributed system using Web technology and machine learning algorithm. In terms of Web, this paper designs and implements the functions such as user management, log collection and management, fault diagnosis and visualization, and operation and maintenance management. In terms of machine learning, decision trees, random forests, and feedforward neural network models are trained and evaluated. The fault diagnosis accuracy based on random forest models can achieve up to 95%. This system is not only conducive to rapid fault diagnosis and resolution, reducing the complexity of operations and maintenance, minimizing manpower consumption, improving operational efficiency, but also offering significant practical value and broad application prospects.
Key words: distributed system; fault diagnosis; FNN; RF; DT