亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向大規(guī)模集群的網(wǎng)元自動(dòng)巡檢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2022-02-25 06:44:56朱云杰
        軟件導(dǎo)刊 2022年1期
        關(guān)鍵詞:網(wǎng)元執(zhí)行器列表

        朱云杰

        (中博信息技術(shù)研究院有限公司,江蘇 南京 210012)

        0 引言

        網(wǎng)元巡檢是電信操作維護(hù)部門的一項(xiàng)重要工作,也是保證網(wǎng)元正常運(yùn)行的必要手段。網(wǎng)元巡檢的基本過程為:連接登錄網(wǎng)元,向網(wǎng)元發(fā)送若干巡檢指令,網(wǎng)元接收指令后返回相應(yīng)的指令執(zhí)行報(bào)告,最后分析返回的報(bào)告是否存在異常。

        由于網(wǎng)元類型多、數(shù)量多,且檢查項(xiàng)目多,因此人們開發(fā)了相關(guān)的網(wǎng)元自動(dòng)巡檢系統(tǒng),以代替人工完成繁重的巡檢任務(wù)。隨著5G 技術(shù)的快速發(fā)展,現(xiàn)有網(wǎng)元巡檢系統(tǒng)暴露出一些突出問題,主要包括:新接入網(wǎng)元周期較長(zhǎng),新型網(wǎng)元接入時(shí)需要對(duì)現(xiàn)有系統(tǒng)進(jìn)行二次開發(fā),然后重新進(jìn)行版本升級(jí),無(wú)法做到快速支撐、快速響應(yīng);現(xiàn)有系統(tǒng)框架在數(shù)據(jù)采集與數(shù)據(jù)應(yīng)用上采用緊耦合方式,數(shù)據(jù)采集能力不易開放給其他應(yīng)用,數(shù)據(jù)采集需求存在大量重復(fù)開發(fā)且開發(fā)周期較長(zhǎng)等問題;采集任務(wù)缺乏優(yōu)先級(jí)控制,重點(diǎn)任務(wù)得不到保障,由于數(shù)據(jù)采集缺乏統(tǒng)一規(guī)劃,同一網(wǎng)元上可能對(duì)接多種采集機(jī)與采集接口,存在大量重復(fù)采集、資源搶占、采集數(shù)據(jù)無(wú)法及時(shí)同步等問題,尤其對(duì)于重點(diǎn)采集任務(wù)無(wú)法第一時(shí)間執(zhí)行;采集數(shù)據(jù)丟失,由于采集過程缺乏有效的監(jiān)控預(yù)警,沒有審計(jì)監(jiān)控日志,因此采集數(shù)據(jù)的完整性、準(zhǔn)確性無(wú)法得到保障。

        本文設(shè)計(jì)與實(shí)現(xiàn)的系統(tǒng)采用微服務(wù)技術(shù)架構(gòu)構(gòu)建統(tǒng)一的網(wǎng)元數(shù)據(jù)采集平臺(tái),實(shí)現(xiàn)網(wǎng)元自動(dòng)巡檢作業(yè)調(diào)度執(zhí)行,采集平臺(tái)可同時(shí)開放給其他系統(tǒng)應(yīng)用,從而能較好地解決上述問題。

        目前江蘇電信公司已由不同廠家建設(shè)了若干網(wǎng)元巡檢系統(tǒng),如交換網(wǎng)元例行測(cè)試系統(tǒng)[1]。本文采用先進(jìn)的集群技術(shù),對(duì)原有網(wǎng)元巡檢系統(tǒng)進(jìn)行的改進(jìn)與優(yōu)化如下:

        (1)基于高可用、可伸縮微服務(wù)架構(gòu)設(shè)計(jì),較原有系統(tǒng)的Monolith 單體架構(gòu)具有更強(qiáng)的服務(wù)能力[2-4]。隨著巡檢網(wǎng)元數(shù)量的不斷增加,只須增加服務(wù)結(jié)點(diǎn)即可,而原有系統(tǒng)則需要更換性能更好的服務(wù)器。

        (2)業(yè)務(wù)邏輯做到完全解耦,將業(yè)務(wù)邏輯內(nèi)聚性高的業(yè)務(wù)置于單個(gè)微服務(wù)中(采用Spring Boot[5-6]開發(fā)),使得新增與修改業(yè)務(wù)邏輯變得更為方便。例如:原有交換網(wǎng)元例行測(cè)試系統(tǒng)[1]的網(wǎng)元數(shù)據(jù)采集接口具有數(shù)據(jù)采集、報(bào)告解析與異常分析功能,每次開發(fā)新的網(wǎng)元接口時(shí),報(bào)告解析與異常分析都需要重新寫一遍,可重用性差。

        (3)建設(shè)統(tǒng)一的網(wǎng)元數(shù)據(jù)采集平臺(tái),采用分布式內(nèi)存數(shù)據(jù)庫(kù)Redis[7-9]對(duì)各個(gè)應(yīng)用系統(tǒng)的數(shù)據(jù)采集任務(wù)進(jìn)行統(tǒng)一調(diào)度,實(shí)現(xiàn)采集任務(wù)的限流與優(yōu)先級(jí)調(diào)度。例如:IMS 網(wǎng)元數(shù)據(jù)采集需使用數(shù)據(jù)總線,但該總線除交換網(wǎng)元例行測(cè)試系統(tǒng)使用外,其他廠家的巡檢系統(tǒng)也會(huì)使用,因此經(jīng)常會(huì)出現(xiàn)總線擁堵的情況。

        (4)采用采集數(shù)據(jù)緩存方法,某些巡檢任務(wù)在一定時(shí)間間隔內(nèi)變化微小,可將采集的數(shù)據(jù)存放于共享內(nèi)存數(shù)據(jù)庫(kù)并設(shè)置存放時(shí)長(zhǎng),在此時(shí)間內(nèi)若再有該采集任務(wù),則用緩存內(nèi)采集的數(shù)據(jù)作為本次采集任務(wù)的結(jié)果數(shù)據(jù),從而減少網(wǎng)元上數(shù)據(jù)采集產(chǎn)生的負(fù)荷。

        (5)采用集群技術(shù)部署邏輯服務(wù),使系統(tǒng)更加穩(wěn)定、可靠。對(duì)原有系統(tǒng)采用主程序+看門狗程序進(jìn)行加固,當(dāng)某個(gè)邏輯服務(wù)發(fā)生故障時(shí),不影響系統(tǒng)正常運(yùn)行。

        (6)采用開源的XXL-JOB 任務(wù)調(diào)度平臺(tái)[10]進(jìn)行開發(fā),能夠?qū)ρ矙z任務(wù)執(zhí)行情況進(jìn)行有效監(jiān)控,通過查看日志跟蹤錯(cuò)誤。

        1 系統(tǒng)整體架構(gòu)設(shè)計(jì)

        網(wǎng)元自動(dòng)巡檢系統(tǒng)整體分為3 部分:巡檢任務(wù)調(diào)度執(zhí)行系統(tǒng)、統(tǒng)一網(wǎng)元數(shù)據(jù)采集平臺(tái)和網(wǎng)元。統(tǒng)一網(wǎng)元數(shù)據(jù)采集平臺(tái)采用SpringCloud 微服務(wù)框架實(shí)現(xiàn),也主要包括3 部分:數(shù)據(jù)采集任務(wù)路由服務(wù)、網(wǎng)元數(shù)據(jù)采集任務(wù)網(wǎng)關(guān)和網(wǎng)元數(shù)據(jù)采集服務(wù),該平臺(tái)可作為通用服務(wù)開放給其他系統(tǒng)使用。系統(tǒng)整體架構(gòu)如圖1 所示。

        1.1 巡檢任務(wù)調(diào)度執(zhí)行

        采用開源的分布式任務(wù)調(diào)度平臺(tái)XXL-JOB 作為基礎(chǔ)架構(gòu)進(jìn)行開發(fā),主要分為3 個(gè)模塊:網(wǎng)元巡檢任務(wù)調(diào)度控制中心模塊、巡檢任務(wù)執(zhí)行器模塊和采集報(bào)告告警分析模塊。各模塊完全解耦,以提高系統(tǒng)整體的穩(wěn)定性和擴(kuò)展性。

        Fig.1 Overall system architecture圖1 系統(tǒng)整體架構(gòu)

        調(diào)度中心采用中心式設(shè)計(jì),執(zhí)行器支持集群部署,通過在注冊(cè)中心周期性地自動(dòng)注冊(cè)執(zhí)行任務(wù),調(diào)度中心會(huì)自動(dòng)發(fā)現(xiàn)執(zhí)行器,并使用Cron 策略調(diào)度執(zhí)行。

        1.1.1 調(diào)度控制中心

        調(diào)度中心進(jìn)行任務(wù)調(diào)度時(shí),會(huì)解析不同任務(wù)參數(shù)發(fā)起遠(yuǎn)程調(diào)用,以調(diào)用各自的遠(yuǎn)程執(zhí)行器服務(wù)。這種調(diào)用模型類似RPC 調(diào)用,調(diào)度中心提供調(diào)用代理功能,而執(zhí)行器提供遠(yuǎn)程服務(wù)功能。調(diào)度中心自身并不承擔(dān)業(yè)務(wù)邏輯,只負(fù)責(zé)發(fā)起調(diào)度請(qǐng)求,將任務(wù)抽象成分散的JobHandler,交由執(zhí)行器統(tǒng)一管理。執(zhí)行器專注于任務(wù)執(zhí)行等操作,負(fù)責(zé)接收調(diào)度請(qǐng)求并執(zhí)行對(duì)應(yīng)JobHandler 中的業(yè)務(wù)邏輯。

        為了實(shí)現(xiàn)網(wǎng)元自動(dòng)巡檢,控制中心設(shè)計(jì)以下功能模塊完成巡檢任務(wù)的配置、調(diào)度與監(jiān)控。

        (1)網(wǎng)元接口管理。對(duì)網(wǎng)元連接進(jìn)行管理,包括:網(wǎng)元ID、網(wǎng)元名稱、網(wǎng)元類型、網(wǎng)元組ID、接口IP、賬號(hào)口令、接口版本、網(wǎng)元限流及網(wǎng)元組限流,網(wǎng)元限流小于等于網(wǎng)元組限流。

        網(wǎng)元組是指多個(gè)網(wǎng)元使用同一個(gè)接口,例如:登錄專業(yè)網(wǎng)管,從該網(wǎng)管上發(fā)送巡檢采集數(shù)據(jù)指令,此時(shí)接口IP使用網(wǎng)管IP,若該網(wǎng)管上管理了數(shù)十個(gè)網(wǎng)元,為避免同一時(shí)刻因巡檢采集數(shù)據(jù)在該網(wǎng)管上建立了數(shù)十個(gè)連接,而影響網(wǎng)管正常運(yùn)行,必須配置網(wǎng)元組限流。在網(wǎng)元類型中定義一個(gè)特殊的“虛網(wǎng)元”作為網(wǎng)元組,“虛網(wǎng)元”作為網(wǎng)元組的父網(wǎng)元,并不生成巡檢任務(wù)。當(dāng)網(wǎng)元組中只有一個(gè)實(shí)體網(wǎng)元,此時(shí)網(wǎng)元ID 等于網(wǎng)元組ID,且網(wǎng)元限流等于網(wǎng)元組限流;當(dāng)網(wǎng)元組中有多個(gè)實(shí)體網(wǎng)元,此時(shí)網(wǎng)元ID 不等于網(wǎng)元組ID,且網(wǎng)元限流小于等于網(wǎng)元組限流。

        接口版本指定使用哪一個(gè)網(wǎng)元數(shù)據(jù)采集微服務(wù),當(dāng)網(wǎng)元的接口升級(jí)后,重新開發(fā)一個(gè)數(shù)據(jù)采集微服務(wù)并部署到統(tǒng)一的網(wǎng)元數(shù)據(jù)采集平臺(tái),此時(shí)修改接口版本后即可實(shí)現(xiàn)動(dòng)態(tài)、平滑地升級(jí)網(wǎng)元接口。

        (2)作業(yè)項(xiàng)配置。在網(wǎng)元類型上配置作業(yè)項(xiàng),作業(yè)項(xiàng)配置內(nèi)容包括執(zhí)行指令、作業(yè)項(xiàng)執(zhí)行結(jié)果緩存時(shí)長(zhǎng)與指令邏輯模板。一個(gè)網(wǎng)元類型配置有一個(gè)或多個(gè)作業(yè)項(xiàng),一個(gè)作業(yè)項(xiàng)配置有一個(gè)或多個(gè)指令。如華為軟交換(HWSS)配置的巡檢作業(yè)項(xiàng)有5 個(gè):檢查媒體網(wǎng)關(guān)設(shè)備狀態(tài)、檢查MTP目的信令點(diǎn)狀態(tài)、處理器負(fù)荷檢查、檢查SCCP 目的信令點(diǎn)狀態(tài)、檢查M3UA 路由狀態(tài)。檢查MTP 目的信令點(diǎn)狀態(tài)配置的執(zhí)行命令有2 個(gè):“LST N7DSP:;”和“DSP N7DSP:DPX=$D1$;”。

        作業(yè)項(xiàng)執(zhí)行結(jié)果緩存時(shí)長(zhǎng)配置:某些作業(yè)項(xiàng)檢查結(jié)果在短時(shí)間內(nèi)不會(huì)出現(xiàn)較大變化,若此時(shí)再有采集任務(wù),則用緩存內(nèi)上次的采集報(bào)告作為本次采集結(jié)果。其優(yōu)點(diǎn)是減少頻繁地連接網(wǎng)元,減輕網(wǎng)元運(yùn)行壓力。

        作業(yè)項(xiàng)執(zhí)行超時(shí)時(shí)長(zhǎng)配置:防止因執(zhí)行巡檢作業(yè)項(xiàng)時(shí)網(wǎng)元繁忙導(dǎo)致作業(yè)項(xiàng)執(zhí)行超時(shí),影響網(wǎng)元正常運(yùn)行。

        指令邏輯模板配置:邏輯模板分為數(shù)據(jù)邏輯與告警邏輯,數(shù)據(jù)邏輯用于作業(yè)項(xiàng)中某條指令參數(shù)依賴于上條指令執(zhí)行結(jié)果。如華為軟交換(HWSS)的“檢查MTP 目的信令點(diǎn)狀態(tài)”作業(yè)項(xiàng),第一條指令“LST N7DSP:;”列出所有目的信令點(diǎn),第二條指令“DSP N7DSP:DPX=$D1$;”為指令模板,其中的參數(shù)$D1$通過執(zhí)行數(shù)據(jù)邏輯得到所有目的信令點(diǎn)具體值,并實(shí)例化為多條可執(zhí)行指令。告警邏輯用于分析指令執(zhí)行返回報(bào)告中是否存在異常。

        (3)執(zhí)行器JobHandler 管理。具體包括:執(zhí)行器名稱(AppName)、說明、任務(wù)網(wǎng)關(guān)、發(fā)布者、發(fā)布時(shí)間。執(zhí)行器集群的唯一標(biāo)識(shí)為AppName,執(zhí)行器會(huì)周期性地以AppName為對(duì)象進(jìn)行自動(dòng)注冊(cè),供任務(wù)調(diào)度時(shí)使用。配置任務(wù)網(wǎng)關(guān)用于指明該執(zhí)行器任務(wù)所使用的任務(wù)網(wǎng)關(guān)。

        (4)任務(wù)調(diào)度管理。針對(duì)某一網(wǎng)元類型,將與巡檢任務(wù)周期相同的若干作業(yè)項(xiàng)制定為一個(gè)巡檢任務(wù)。配置項(xiàng)有:任務(wù)ID、執(zhí)行器、任務(wù)執(zhí)行計(jì)劃、網(wǎng)元類型、網(wǎng)元列表、作業(yè)項(xiàng)列表、并發(fā)巡檢數(shù)、任務(wù)等級(jí)、租戶與任務(wù)描述。

        執(zhí)行器是該任務(wù)執(zhí)行的載體,任務(wù)執(zhí)行計(jì)劃采用Cron表達(dá)式,調(diào)度中心根據(jù)該Cron 表達(dá)式周期性地啟動(dòng)執(zhí)行器,并將參數(shù)任務(wù)ID 傳遞給執(zhí)行器。

        (5)調(diào)度監(jiān)控。監(jiān)控巡檢任務(wù)調(diào)度執(zhí)行狀態(tài),包括:任務(wù)ID、任務(wù)名稱、執(zhí)行器名稱、調(diào)度時(shí)間、啟動(dòng)時(shí)間、調(diào)度結(jié)果(成功或失?。?zhí)行狀態(tài)(運(yùn)行中或結(jié)束)。

        調(diào)度結(jié)果若失敗,能查看調(diào)度失敗的具體原因。對(duì)正在執(zhí)行的任務(wù)可人工操作中斷或暫停,暫停后可重新啟動(dòng)。

        (6)網(wǎng)元巡檢報(bào)告,查看巡檢作業(yè)項(xiàng)執(zhí)行情況,包括:任務(wù)ID、任務(wù)名稱、執(zhí)行器名稱、網(wǎng)元名稱、網(wǎng)元類型、作業(yè)項(xiàng)名稱、巡檢時(shí)間、巡檢結(jié)果(正?;蚋婢?、報(bào)告詳情。

        1.1.2 任務(wù)執(zhí)行器

        執(zhí)行器實(shí)際上是一個(gè)內(nèi)嵌的服務(wù),每個(gè)執(zhí)行器都有機(jī)器集群的唯一標(biāo)識(shí)ID、服務(wù)IP 與端口。執(zhí)行器啟動(dòng)后,通過心跳進(jìn)行執(zhí)行器注冊(cè),調(diào)度中心收到心跳實(shí)現(xiàn)自動(dòng)任務(wù)發(fā)現(xiàn)。執(zhí)行器任務(wù)是一個(gè)Spring 的Bean 類實(shí)例,在Spring容器中進(jìn)行維護(hù),在這個(gè)類中實(shí)現(xiàn)任務(wù)邏輯。

        執(zhí)行器的任務(wù)類通過注解定義唯一的任務(wù)ID,查詢業(yè)務(wù)數(shù)據(jù)庫(kù)得到具體巡檢任務(wù),包括:任務(wù)ID、任務(wù)優(yōu)先級(jí)、網(wǎng)元類型、網(wǎng)元列表、作業(yè)項(xiàng)列表、任務(wù)網(wǎng)關(guān)URL、巡檢網(wǎng)元并發(fā)數(shù)以及每個(gè)作業(yè)項(xiàng)對(duì)應(yīng)的指令列表與指令邏輯。

        任務(wù)被調(diào)度啟動(dòng)時(shí)根據(jù)巡檢網(wǎng)元并發(fā)數(shù)N 啟動(dòng)N 個(gè)線程,線程執(zhí)行步驟如下:①查詢網(wǎng)元列表,若網(wǎng)元列表空則線程結(jié)束,否則從網(wǎng)元列表中取出1 個(gè)網(wǎng)元,并將該網(wǎng)元從網(wǎng)元列表中移出;②依次從作業(yè)項(xiàng)列表中取出一個(gè)作業(yè)項(xiàng)以及該作業(yè)項(xiàng)對(duì)應(yīng)的執(zhí)行指令序列和指令邏輯;③生成系統(tǒng)唯一的巡檢作業(yè)序列號(hào),發(fā)送巡檢任務(wù)參數(shù)(JSON 格式)到統(tǒng)一網(wǎng)元數(shù)據(jù)采集平臺(tái)中的巡檢任務(wù)路由服務(wù);④接收巡檢返回報(bào)告時(shí),通過消息中間件MQ 發(fā)送消息給報(bào)告告警分析模塊;⑤當(dāng)該網(wǎng)元所有作業(yè)項(xiàng)執(zhí)行完畢后,重復(fù)第一步。

        待N 個(gè)線程全部運(yùn)行結(jié)束,執(zhí)行器完成對(duì)某一網(wǎng)元類型的巡檢任務(wù)。

        1.1.3 巡檢報(bào)告告警邏輯分析

        報(bào)告邏輯分析模塊作為消息中間件MQ 的消息消費(fèi)者,接收來自任務(wù)執(zhí)行器發(fā)送的作業(yè)項(xiàng),并執(zhí)行返回報(bào)告分析請(qǐng)求。根據(jù)執(zhí)行指令配置的告警分析邏輯模板對(duì)該指令執(zhí)行報(bào)告進(jìn)行分析,分析結(jié)果連同指令、原始報(bào)告、作業(yè)項(xiàng)信息、網(wǎng)元信息、任務(wù)信息一起存入業(yè)務(wù)數(shù)據(jù)庫(kù)。

        1.2 統(tǒng)一網(wǎng)元數(shù)據(jù)采集平臺(tái)

        平臺(tái)接收來自上層應(yīng)用系統(tǒng)的網(wǎng)元數(shù)據(jù)采集請(qǐng)求,請(qǐng)求參數(shù)包括:任務(wù)流水號(hào)、任務(wù)ID、任務(wù)優(yōu)先級(jí)、作業(yè)項(xiàng)ID、網(wǎng)元ID、網(wǎng)元組ID、網(wǎng)元限流、網(wǎng)元組限流、緩存時(shí)長(zhǎng)、采集超時(shí)時(shí)間、指令列表、指令分析邏輯、任務(wù)網(wǎng)關(guān)服務(wù)名、采集服務(wù)名。采集任務(wù)完成后,平臺(tái)返回任務(wù)流水號(hào)、任務(wù)ID、作業(yè)項(xiàng)ID、網(wǎng)元ID、指令、指令邏輯、指令執(zhí)行報(bào)告與采集時(shí)間。

        1.2.1 巡檢任務(wù)路由服務(wù)

        該服務(wù)直接接收來自巡檢任務(wù)調(diào)度中心任務(wù)執(zhí)行器發(fā)送的巡檢任務(wù)請(qǐng)求,從請(qǐng)求參數(shù)中解析出任務(wù)網(wǎng)關(guān)服務(wù)名,調(diào)用對(duì)應(yīng)的服務(wù)網(wǎng)關(guān)并轉(zhuǎn)發(fā)請(qǐng)求參數(shù),同步等待返回采集數(shù)據(jù)。

        根據(jù)網(wǎng)元數(shù)量,采集平臺(tái)部署了多個(gè)該任務(wù)網(wǎng)關(guān)服務(wù)名的微服務(wù),因此路由服務(wù)還具有負(fù)載均衡功能。負(fù)載均衡 采 用Netflix 提 供 的 框 架Feign,F(xiàn)eign 整 合 了Ribbon 與Hystrix。Feign 是一個(gè)聲明式的Web Service 客戶端,完全代理HTTP 請(qǐng)求,通過編寫簡(jiǎn)單的接口和插入注解,即可定義好HTTP 請(qǐng)求的參數(shù)、格式、地址等信息,使用極其方便。

        1.2.2 任務(wù)網(wǎng)關(guān)

        任務(wù)網(wǎng)關(guān)是采集平臺(tái)的核心模塊,任務(wù)網(wǎng)關(guān)微服務(wù)名按網(wǎng)元類型命名,具有同一服務(wù)名的任務(wù)網(wǎng)關(guān)通常有多個(gè),以負(fù)載均衡方式接收來自路由服務(wù)的巡檢任務(wù)請(qǐng)求。主要實(shí)現(xiàn)以下功能:①采集任務(wù)分發(fā)功能。根據(jù)巡檢任務(wù)請(qǐng)求參數(shù)中的采集服務(wù)名,將采集任務(wù)分發(fā)到相應(yīng)的采集服務(wù);②采集任務(wù)優(yōu)先級(jí)控制。優(yōu)先分發(fā)優(yōu)先級(jí)高的采集任務(wù);③限流功能。用于解決以往因采集任務(wù)頻繁導(dǎo)致的資源搶占等問題,限流內(nèi)容包括:?jiǎn)蝹€(gè)網(wǎng)元限流和網(wǎng)元組限流;④采集數(shù)據(jù)緩存功能。將采集的數(shù)據(jù)按照請(qǐng)求參數(shù)中的緩存時(shí)長(zhǎng)保存在采集平臺(tái)中,若在緩存時(shí)長(zhǎng)內(nèi)有同樣的采集任務(wù),則使用緩存內(nèi)采集的數(shù)據(jù),以減輕網(wǎng)元壓力。

        1.2.3 采集服務(wù)

        接收來自任務(wù)網(wǎng)關(guān)的采集任務(wù)請(qǐng)求,一個(gè)采集任務(wù)包括若干條有順序的指令以及指令數(shù)據(jù)邏輯。根據(jù)請(qǐng)求參數(shù)中的網(wǎng)元連接參數(shù),連接并登錄網(wǎng)元,按順序發(fā)送采集指令,獲取返回報(bào)告。若指令配置有數(shù)據(jù)邏輯,則調(diào)用采集平臺(tái)中的報(bào)告邏輯分析服務(wù),得到報(bào)告中的關(guān)鍵數(shù)據(jù)作為后續(xù)指令參數(shù)。所有指令執(zhí)行完畢后斷開網(wǎng)元連接,將指令及指令報(bào)告返回給任務(wù)網(wǎng)關(guān)。

        1.3 網(wǎng)元

        網(wǎng)元層中的網(wǎng)元按照專業(yè)可劃分為數(shù)據(jù)專業(yè)、傳輸專業(yè)、交換專業(yè)、無(wú)線專業(yè)等。按照類型可劃分為:PSTN、

        NGN、MSCE、MGW、LSTP、AG、TG、HLR、MGCF、PCSCF、HSTP、OLT、BAS、ONU、SDH、MSAP、RRU、BSC 等。

        2 關(guān)鍵模塊設(shè)計(jì)實(shí)現(xiàn)

        2.1 任務(wù)網(wǎng)關(guān)設(shè)計(jì)

        任務(wù)網(wǎng)關(guān)基于Spring Boot 設(shè)計(jì),分布式內(nèi)存數(shù)據(jù)庫(kù)Redis 為任務(wù)網(wǎng)關(guān)集群所使用,并在任務(wù)網(wǎng)關(guān)進(jìn)程內(nèi)存上開辟作業(yè)項(xiàng)執(zhí)行排隊(duì)區(qū)和作業(yè)項(xiàng)執(zhí)行報(bào)告區(qū),作業(yè)調(diào)度模塊根據(jù)作業(yè)優(yōu)先級(jí)、限流、超時(shí)參數(shù)對(duì)作業(yè)項(xiàng)進(jìn)行調(diào)度,作業(yè)執(zhí)行模塊對(duì)調(diào)度成功的作業(yè)項(xiàng)調(diào)用對(duì)應(yīng)采集服務(wù),取得作業(yè)項(xiàng)執(zhí)行報(bào)告。任務(wù)網(wǎng)關(guān)結(jié)構(gòu)設(shè)計(jì)如圖2 所示。

        Fig.2 Task gateway software module structure圖2 任務(wù)網(wǎng)關(guān)軟件模塊結(jié)構(gòu)

        任務(wù)網(wǎng)關(guān)接收來自任務(wù)路由的作業(yè)項(xiàng)請(qǐng)求,進(jìn)行任務(wù)限流與優(yōu)先級(jí)調(diào)度后,分發(fā)給相應(yīng)的采集服務(wù)并接收返回報(bào)告。

        2.1.1 任務(wù)網(wǎng)關(guān)服務(wù)控制器

        采用注解@RequestMapping 將任務(wù)路由HTTP 請(qǐng)求映射到REST 控制器的作業(yè)項(xiàng)執(zhí)行方法上,該方法處理過程如下:

        (1)解析執(zhí)行的作業(yè)項(xiàng)參數(shù)(緩存時(shí)長(zhǎng))確定是否緩存采集報(bào)告。若緩存時(shí)長(zhǎng)大于零,則從Redis 中獲??;若超時(shí)獲取不到或緩存時(shí)長(zhǎng)等于零,則將作業(yè)項(xiàng)放入作業(yè)項(xiàng)執(zhí)行排隊(duì)區(qū)。

        (2)等待作業(yè)項(xiàng)調(diào)度結(jié)果,定時(shí)查詢作業(yè)項(xiàng)執(zhí)行區(qū),若超過作業(yè)執(zhí)行超時(shí)時(shí)間,則返回結(jié)果失敗。獲取到作業(yè)后,根據(jù)作業(yè)項(xiàng)參數(shù)中的采集服務(wù)名,將作業(yè)項(xiàng)轉(zhuǎn)發(fā)到對(duì)應(yīng)的采集服務(wù)。

        (3)等待采集結(jié)果,若采集成功且緩存時(shí)長(zhǎng)大于零,則將采集報(bào)告存放到Redis 中,最后返回作業(yè)項(xiàng)執(zhí)行結(jié)果。

        2.1.2 任務(wù)網(wǎng)關(guān)內(nèi)存緩存區(qū)

        在任務(wù)網(wǎng)關(guān)進(jìn)程內(nèi)部創(chuàng)建作業(yè)項(xiàng)緩存區(qū)作為進(jìn)程內(nèi)部線程共享,因此在緩存區(qū)上必須加互斥鎖進(jìn)行訪問。作業(yè)項(xiàng)緩存區(qū)分為作業(yè)項(xiàng)執(zhí)行排隊(duì)等待區(qū)和作業(yè)項(xiàng)執(zhí)行報(bào)告區(qū)。

        作業(yè)項(xiàng)執(zhí)行排隊(duì)等待區(qū)采用隊(duì)列方式,隊(duì)列中的每一項(xiàng)按照網(wǎng)元組ID 進(jìn)行區(qū)分,并存放對(duì)應(yīng)該網(wǎng)元組ID 內(nèi)所有網(wǎng)元的作業(yè)項(xiàng)。在隊(duì)列上實(shí)現(xiàn)放入與取出作業(yè)項(xiàng)兩項(xiàng)操作。

        每次放入一個(gè)作業(yè)項(xiàng),根據(jù)該作業(yè)項(xiàng)的網(wǎng)元組ID 掃描排隊(duì)等待區(qū),若隊(duì)列中存在該網(wǎng)元組ID,則將作業(yè)項(xiàng)放入隊(duì)列中的對(duì)應(yīng)項(xiàng);若不存在,則在隊(duì)列中創(chuàng)建新項(xiàng)。

        從排隊(duì)等待區(qū)中取出作業(yè)項(xiàng)的調(diào)度策略如下:掃描排隊(duì)等待區(qū),刪除等待超時(shí)的作業(yè)項(xiàng),同一網(wǎng)元上作業(yè)項(xiàng)優(yōu)先級(jí)高的先執(zhí)行,相同優(yōu)先級(jí)的作業(yè)項(xiàng)則等待時(shí)間長(zhǎng)的先執(zhí)行。通過網(wǎng)元組ID 檢索正在執(zhí)行作業(yè)項(xiàng)列表,統(tǒng)計(jì)所在網(wǎng)元組正在執(zhí)行的網(wǎng)元數(shù)量。對(duì)比所在網(wǎng)元組限流,只有在未超出設(shè)定的網(wǎng)元組限流時(shí),方可取出并執(zhí)行該網(wǎng)元的作業(yè)項(xiàng)。

        作業(yè)項(xiàng)執(zhí)行結(jié)果報(bào)告區(qū)同樣實(shí)現(xiàn)放入和取出結(jié)果報(bào)告兩個(gè)操作,作業(yè)項(xiàng)調(diào)度成功執(zhí)行后放入執(zhí)行結(jié)果報(bào)告,并采用任務(wù)網(wǎng)關(guān)服務(wù)控制器取出執(zhí)行結(jié)果報(bào)告。

        2.1.3 分布式內(nèi)存設(shè)計(jì)

        分布式內(nèi)存數(shù)據(jù)庫(kù)采用Redis,其是一個(gè)高性能的Key Value 數(shù)據(jù)庫(kù),被任務(wù)網(wǎng)關(guān)集群共享,支持多種類型的數(shù)據(jù)結(jié)構(gòu),可實(shí)現(xiàn)數(shù)據(jù)緩存。

        基于Spring 與Redis 的RedisTemplate 工具類實(shí)現(xiàn)列表List 上的以下操作:獲取list 緩存長(zhǎng)度、通過索引獲取list 中的值、將list 放入緩存、根據(jù)索引修改list 中的某條數(shù)據(jù),以及從list 中移除某條數(shù)據(jù)。采用網(wǎng)元組ID 為每個(gè)list 創(chuàng)建唯一的Key,list 中存放對(duì)應(yīng)網(wǎng)元組中的網(wǎng)元作業(yè)項(xiàng)。

        集群上多個(gè)任務(wù)網(wǎng)關(guān)存在同時(shí)操作共享內(nèi)存中l(wèi)ist 的情況,同樣采用Redis 的RedisTemplate 工具類實(shí)現(xiàn)分布式全局鎖類,提供獲取鎖和釋放鎖兩種方法。采用網(wǎng)元組ID為每個(gè)list 創(chuàng)建唯一鎖名稱,當(dāng)要操作該列表時(shí),先要獲取該列表的鎖,獲取成功方可進(jìn)行操作,操作結(jié)束則釋放該鎖。

        共享內(nèi)存上定義了兩種類型的列表:正在執(zhí)行作業(yè)項(xiàng)列表和作業(yè)項(xiàng)執(zhí)行結(jié)果列表,以網(wǎng)元組ID 作為列表鍵值。正在執(zhí)行作業(yè)項(xiàng)列表的作用是實(shí)現(xiàn)集群上的網(wǎng)元組限流,通過加入與移出作業(yè)項(xiàng)兩個(gè)操作實(shí)現(xiàn)。

        加入正在執(zhí)行作業(yè)項(xiàng)列表的過程如下:①根據(jù)加入的作業(yè)項(xiàng)網(wǎng)元組ID 獲取需要操作的列表鎖;②獲取列表長(zhǎng)度,即為正在執(zhí)行的網(wǎng)元組流量,若大于等于作業(yè)項(xiàng)網(wǎng)元組限流值,則加入失敗;③計(jì)算列表中與加入作業(yè)項(xiàng)中與網(wǎng)元ID 相同的作業(yè)項(xiàng)個(gè)數(shù),即為網(wǎng)元流量,若大于等于作業(yè)項(xiàng)網(wǎng)元限流值,則加入失??;④加入作業(yè)項(xiàng)時(shí)設(shè)置緩存時(shí)長(zhǎng)等于作業(yè)項(xiàng)執(zhí)行超時(shí)時(shí)長(zhǎng),釋放列表上的鎖。

        正在執(zhí)行作業(yè)項(xiàng)列表中的數(shù)據(jù)刪除有兩種方式,一種是Redis 自動(dòng)按照緩存時(shí)長(zhǎng)進(jìn)行刪除,另一種是調(diào)用移出方法。

        作業(yè)項(xiàng)執(zhí)行結(jié)果緩存區(qū)數(shù)據(jù)以列表方式存放,并設(shè)置存放時(shí)長(zhǎng)閾值,當(dāng)緩存數(shù)據(jù)存放時(shí)間超過該閾值,Redis 則自動(dòng)清除。列表上實(shí)現(xiàn)加入與獲取兩種操作,操作前取得對(duì)應(yīng)列表的鎖,操作結(jié)束后釋放。操作前根據(jù)作業(yè)項(xiàng)ID、網(wǎng)元ID 搜索列表中已存在的執(zhí)行結(jié)果,若搜索到則將緩存中的數(shù)據(jù)作為當(dāng)前作業(yè)項(xiàng)執(zhí)行結(jié)果,否則再次執(zhí)行作業(yè)項(xiàng)并加入新的作業(yè)項(xiàng)執(zhí)行結(jié)果到緩存區(qū)。

        2.1.4 作業(yè)項(xiàng)調(diào)度執(zhí)行

        作業(yè)項(xiàng)調(diào)度執(zhí)行模塊作為獨(dú)立線程在任務(wù)網(wǎng)關(guān)啟動(dòng)時(shí)創(chuàng)建并運(yùn)行,執(zhí)行過程如圖3 所示。

        Fig.3 Task item scheduling execution process圖3 作業(yè)項(xiàng)調(diào)度執(zhí)行流程

        由圖3 可見,調(diào)度流程主要分為3 步:

        步驟1:按照作業(yè)優(yōu)先級(jí)、作業(yè)項(xiàng)等待執(zhí)行先后順序以及在單個(gè)任務(wù)網(wǎng)關(guān)內(nèi)的限流,初步獲取可執(zhí)行的作業(yè)項(xiàng),同時(shí)刪除等待超時(shí)的作業(yè)項(xiàng)。

        步驟2:將獲取到的初步可執(zhí)行作業(yè)項(xiàng)加入分布式共享內(nèi)存作業(yè)項(xiàng)列表執(zhí)行過程中,完成在任務(wù)網(wǎng)關(guān)集群上的限流,此時(shí)將有部分作業(yè)項(xiàng)加入失敗。對(duì)于被成功加入的作業(yè)項(xiàng),由作業(yè)執(zhí)行模塊調(diào)用對(duì)應(yīng)的采集服務(wù)并取回采集結(jié)果報(bào)告。

        步驟3:將調(diào)度執(zhí)行失敗的作業(yè)項(xiàng)重新加入作業(yè)項(xiàng)執(zhí)行排隊(duì)等待區(qū),等待再次被調(diào)度執(zhí)行或超時(shí)刪除。

        2.2 報(bào)告邏輯分析

        網(wǎng)元巡檢數(shù)據(jù)采集報(bào)告是具有特定格式的文本型數(shù)據(jù),并且各廠家不同網(wǎng)元類型的報(bào)告格式千差萬(wàn)別。通常使用文本處理語(yǔ)言(如:Awk、Perl)進(jìn)行處理,本文采用自己的專利方法:基于邏輯模板的文本邏輯分析[11],其優(yōu)點(diǎn)是不再需要編寫復(fù)雜的文本分析腳本,只需通過簡(jiǎn)單的邏輯模板進(jìn)行配置即可,從而調(diào)整分析邏輯或部署新的分析邏輯,更加靈活、快捷。

        該專利方法的思想是:將文本數(shù)據(jù)格式化為行列式數(shù)據(jù),創(chuàng)建數(shù)據(jù)庫(kù)內(nèi)存表存放格式化后的文本數(shù)據(jù),在此數(shù)據(jù)庫(kù)表上編寫SQL。分析邏輯分為告警分析邏輯和數(shù)據(jù)分析邏輯,告警分析邏輯用于查看文本中是否存在某些關(guān)鍵數(shù)據(jù),而數(shù)據(jù)分析邏輯用于獲取文本中的若干數(shù)據(jù),獲取的數(shù)據(jù)作為作業(yè)項(xiàng)指令參數(shù)。

        現(xiàn)以華為軟交換“檢查M3UA 路由狀態(tài)”作業(yè)項(xiàng)為例進(jìn)行說明,作業(yè)項(xiàng)配置兩條指令:“LST M3RT:;”和“DSP M3RT:DEX=$D1$,LSX=$D2$;”,參數(shù)“目的實(shí)體索引(DEX)”和“鏈路集索引(LSX)”由第一條指令執(zhí)行報(bào)告通過數(shù)據(jù)邏輯分析得到,第二條指令應(yīng)該是指令模板,參數(shù)值使用通配符,由該指令模板生成若干條可執(zhí)行指令。報(bào)告的格式化:以換行符獲取每一行,以空格獲取行內(nèi)字段。字段名為:F1,F(xiàn)2,F(xiàn)3…

        第一條指令的返回報(bào)告如下:

        +++ GL-SoftX 2020-10-10 16:24:56

        O&M #1911562

        %%LST M3RT:;%%

        RETCODE = 0 操作成功

        M3UA 路由信息

        ------------

        路由名稱 目的實(shí)體索引 鏈路集索引 路由優(yōu)先級(jí) 主/從歸屬標(biāo)志

        NJ-YFXJ-MS01-M 20 0 0 從歸屬

        NJ-YFXJ-MS01-M-1 20 1 0 從歸屬

        ……

        (結(jié)果個(gè)數(shù)= 30)

        --- END

        在這條指令上配置數(shù)據(jù)邏輯,獲取“目的實(shí)體索引”和“鏈路集索引”。邏輯表達(dá)式“select F2,F(xiàn)3 from mytable where IsNumber(F2)and IsNumber(F3)IsNumber(F4)”的含義是:獲取字段2、3、4 為數(shù)字所有行中字段2 和字段3 的數(shù)據(jù),其中“IsNumber”是數(shù)據(jù)庫(kù)中自定義的函數(shù),采用正值表達(dá)式判斷函數(shù)的參數(shù)是否為數(shù)字。

        第二條指令的返回報(bào)告如下:

        +++ GL-SoftX 2020-10-10 16:55:39

        O&M #1912218

        %%DSP M3RT:DEX=20,LSX=0;%%

        RETCODE = 44650 由于軟交換工作處于去激活模式,且所操作的對(duì)象為從歸屬,所以該對(duì)象未安裝,操作不能進(jìn)行

        --- END

        指令參數(shù):DEX=20,LSX=0,由第一條指令通過數(shù)據(jù)邏輯分析得到。報(bào)告配置告警邏輯分析表達(dá)式為“select *from mytable where F1=‘RETCODE’and F3<>‘0’”,含 義為:查詢RETCODE 不等于零的行,若存在則報(bào)告異常。

        3 結(jié)語(yǔ)

        針對(duì)現(xiàn)有網(wǎng)元巡檢系統(tǒng)運(yùn)行過程中暴露出的問題,由于多個(gè)系統(tǒng)使用了如數(shù)據(jù)總線之類的公共資源,對(duì)原有系統(tǒng)進(jìn)行改造顯然無(wú)法解決該問題。本文借助微服務(wù)架構(gòu)與分布式共享內(nèi)存數(shù)據(jù)庫(kù)設(shè)計(jì)統(tǒng)一的網(wǎng)元數(shù)據(jù)采集平臺(tái),對(duì)多個(gè)系統(tǒng)使用的公共資源進(jìn)行統(tǒng)一調(diào)配,解決了諸如任務(wù)量限流等問題。該方式既保證了存量系統(tǒng)可繼續(xù)使用,從而避免重復(fù)建設(shè),節(jié)省投資,又新建了基于集群技術(shù)的網(wǎng)元自動(dòng)巡檢調(diào)度系統(tǒng),可為新建的5G 網(wǎng)元巡檢服務(wù)。

        猜你喜歡
        網(wǎng)元執(zhí)行器列表
        巧用列表來推理
        學(xué)習(xí)運(yùn)用列表法
        擴(kuò)列吧
        一種全網(wǎng)時(shí)鐘同步管理方法
        測(cè)控技術(shù)(2018年12期)2018-11-25 09:37:50
        飛機(jī)裝配預(yù)連接緊固件自動(dòng)化安裝末端執(zhí)行器設(shè)計(jì)
        考慮執(zhí)行器飽和的改進(jìn)無(wú)模型自適應(yīng)控制
        一類具有執(zhí)行器飽和的非線性系統(tǒng)抗飽和方法研究
        光網(wǎng)絡(luò)設(shè)備ECC常見問題解決思路剖析
        不含3-圈的1-平面圖的列表邊染色與列表全染色
        韩国三级在线观看久| 97精品国产高清自在线看超| 欧美丝袜秘书在线一区| 国产高清在线精品一区不卡 | 久久久中日ab精品综合| 中国熟妇人妻xxxxx| 亚洲国产成人手机在线电影| 国产成人亚洲合色婷婷| 一本久久精品久久综合| 亚洲一区av在线观看| 欧洲成人午夜精品无码区久久| 91精品91| 中文字幕丰满人妻被公强| 亚洲成人免费av影院| 女人和拘做受全程看视频| 蜜桃精品免费久久久久影院| 无码啪啪熟妇人妻区| 男女打扑克视频在线看| 国产欧美日韩中文久久| 五十路丰满中年熟女中出| 久久频精品99香蕉国产| 色综久久综合桃花网国产精品| 黄片视频大全在线免费播放| 日本一本之道高清不卡免费| 国产精品麻花传媒二三区别 | 久久精品中文字幕亚洲| 手机免费高清在线观看av| 久久国产成人精品国产成人亚洲| 亚洲av无码av制服丝袜在线| 538亚洲欧美国产日韩在线精品| 国产影院一区二区在线| 五月天激情电影| 久久精品女人天堂av| 国色天香精品亚洲精品| 激情五月开心五月av| 久久午夜福利无码1000合集| 真实单亲乱l仑对白视频| 久久亚洲AV无码一区二区综合| 黄色潮片三级三级三级免费| 日本丰满少妇裸体自慰| 男女啪啪永久免费观看网站|