處理Zookeeper集群數(shù)據(jù)的客戶端及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及處理Zookeeper集群數(shù)據(jù)的客戶端及方法。
【背景技術(shù)】
[0002]ZooKeeper是一個開源的、高性能、可擴展的分布式應(yīng)用程序協(xié)調(diào)服務(wù),以Paxos算法為基礎(chǔ),實現(xiàn)同步服務(wù)、配置維護和命名服務(wù)等分布式應(yīng)用。
[0003]ZooKeeper的數(shù)據(jù)存儲有DataTree (當(dāng)前ZooKeeper集群中最新的數(shù)據(jù),存儲在內(nèi)存中)和FileTxnSnapLog(disk持久化SnapShot和TxnLog)兩種方式。由于內(nèi)存數(shù)據(jù)重啟后就消失了,磁盤文件數(shù)據(jù)不是明文的,可視化非常困難,因此要把這些數(shù)據(jù)拿出來展示以及讀寫,是很困難的。
[0004]ZooKeeper還提供了一個非常簡單的客戶端,它能夠處理節(jié)點的前提是該節(jié)點只能有一個字段,并且需要通過控制臺來操作。假如遇到上千臺基站和幾十臺網(wǎng)關(guān)的云化場景,且每個節(jié)點都有數(shù)十個字段,則僅使用ZooKeeper提供的客戶端來進行處理操作是不可實現(xiàn)的。
[0005]因此目前需要提出一種能夠快速給用戶展現(xiàn)ZooKe印er集群節(jié)點數(shù)據(jù)的客戶端,在節(jié)點字段類型較多的復(fù)雜應(yīng)用場景,該客戶端也可以進行處理操作。
【發(fā)明內(nèi)容】
[0006]為了克服現(xiàn)有技術(shù)的缺陷,本發(fā)明提出了一種通過瀏覽器訪問并操作ZooKe印er集群(簡稱ZK)節(jié)點數(shù)據(jù)的客戶端,該客戶端的總體結(jié)構(gòu)圖如圖1所示,具體為:
[0007]所述客戶端的前臺包含一個通過瀏覽器訪問的主頁面,該主頁面包括導(dǎo)航樹和操作頁面,所述導(dǎo)航樹采用樹形結(jié)構(gòu)展示后臺推送的Zookeeper集群數(shù)據(jù),所述操作頁面用于用戶對導(dǎo)航樹展示的Zookeeper集群數(shù)據(jù)進行處理操作;
[0008]所述客戶端的后臺包含一個后臺服務(wù)模塊和一個內(nèi)存模塊,后臺服務(wù)模塊包含一個瀏覽器頁面服務(wù)單元、一個Zookeeper客戶端服務(wù)單元、一個Zookeeper watch服務(wù)單元和一個Cometd服務(wù)單元;
[0009]所述瀏覽器頁面服務(wù)單元用于接收所述操作頁面的處理操作數(shù)據(jù)并進行合法性驗證,驗證通過后將數(shù)據(jù)封裝成Zookeeper集群節(jié)點使用的格式;所述Zookeeper客戶端服務(wù)單元用于將所述客戶端注冊為Zookeeper集群客戶端;所述Zookeeper watch服務(wù)單元用于通過watch實時獲取最新的Zookeeper集群數(shù)據(jù)并存儲在所述內(nèi)存模塊;所述Cometd服務(wù)單元用于向前臺推送所述內(nèi)存模塊的Zookeeper集群數(shù)據(jù)。
[0010]優(yōu)選的,對于不同字段類型的Zookeeper集群節(jié)點數(shù)據(jù),所述內(nèi)存模塊構(gòu)建不同的對象進行存儲;對于不同字段類型的處理操作數(shù)據(jù),所述瀏覽器頁面服務(wù)單元進行差異性封裝,以保證Zookeeper集群節(jié)點能夠使用封裝后的數(shù)據(jù)。
[0011]優(yōu)選的,所述樹形結(jié)構(gòu)使用Jquery Ztree JS庫,前臺與后臺之間通過Struts2串聯(lián);前臺與后臺之間的數(shù)據(jù)異步交互通過Jquery Ajax框架實現(xiàn)。
[0012]優(yōu)選的,所述內(nèi)存模塊中的Zookeeper集群數(shù)據(jù)的腳本是可導(dǎo)入/導(dǎo)出的。
[0013]優(yōu)選的,所述樹形結(jié)構(gòu)以字體和圖標(biāo)的顏色來區(qū)分Zookeeper集群節(jié)點的狀態(tài)。
[0014]優(yōu)選的,所述Zookeeper集群可以是云化Zookeeper集群。
[0015]本發(fā)明還提出了一種處理Zooke印er集群數(shù)據(jù)的方法,該方法采用本發(fā)明提出的客戶端,首次加載Zookeeper集群數(shù)據(jù)時需要給Zookeeper集群節(jié)點掛上Watch,其處理Zookeeper集群數(shù)據(jù)的流程如圖2所示,具體包括以下步驟:
[0016]a,用戶通過瀏覽器訪問所述Zookeeper客戶端的主頁面,對Zookeeper集群節(jié)點的數(shù)據(jù)進行處理操作;
[0017]b,用戶的處理操作數(shù)據(jù)從前臺傳遞到后臺,后臺驗證合法性后封裝成Zookeeper集群使用的格式;
[0018]c,通過Zooke印er集群的回調(diào)接口判斷本次處理操作是否成功,如果成功則繼續(xù)下一步;
[0019]d,后臺利用watch獲取最新的Zookeeper集群數(shù)據(jù);
[0020]e,后臺通過cometd把最新的Zookeeper集群數(shù)據(jù)推送到瀏覽器,并為進行處理操作的Zookeeper集群節(jié)點重新掛上watch ;
[0021]f,導(dǎo)航樹采用樹形結(jié)構(gòu)展示最新的Zookeeper集群數(shù)據(jù)。
[0022]本發(fā)明的優(yōu)點在于:(1)利用Watch感知的特性實時獲取最新的集群數(shù)據(jù),以保證本地內(nèi)存數(shù)據(jù)與實際Zookeeper集群數(shù)據(jù)實時同步,然后采用Cometd把最新的集群數(shù)據(jù)推送到瀏覽器,使用Ajax異步刷新頁面,友好高效的保證了頁面展示和實際Zookeeper集群數(shù)據(jù)的一致性。(2)用樹形結(jié)構(gòu)形象展示Zooke印er集群數(shù)據(jù),使得增刪改查節(jié)點等處理操作異常簡單。(3)不同字段類型的數(shù)據(jù)進行差異化存儲或封裝,則不管應(yīng)用場景多么復(fù)雜,通過本發(fā)明都可以進行處理操作,集群數(shù)據(jù)都可以在頁面完整無誤的展現(xiàn)。(4)以圖標(biāo)和顏色來區(qū)分集群節(jié)點狀態(tài),便于用戶發(fā)現(xiàn)故障節(jié)點等。(5)腳本的導(dǎo)入和導(dǎo)出使得集群移植變得非常簡單。
【附圖說明】
[0023]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0024]圖1是本發(fā)明提出的客戶端的總體結(jié)構(gòu)框圖;
[0025]圖2是本發(fā)明提出的處理Zookeeper集群數(shù)據(jù)的方法的流程圖;
[0026]圖3是本發(fā)明實施例一的SAG3000云化數(shù)據(jù)的ZK節(jié)點關(guān)系圖;
[0027]圖4是本發(fā)明實施例一的在操作頁面處理ZK節(jié)點的操作示意圖;
[0028]圖5是本發(fā)明實施例二的添加并啟動SAG節(jié)點的步驟流程圖。
【具體實施方式】
[0029]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例;需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0030]實施例一:處理云化Zookeeper集群數(shù)據(jù)的客戶端
[0031]本實施例以McWiLL網(wǎng)絡(luò)的SAG3000云化數(shù)據(jù)為例來說明本發(fā)明客戶端的具體實現(xiàn),SAG3000云化數(shù)據(jù)在ZK(ZooKeeper集群)的節(jié)點關(guān)系如圖3所示,SAG_GR0UP_***節(jié)點下面包含BTS_INF0、RULES、SAG_INF0節(jié)點,BTS_INF0為BTSGRP的父節(jié)點,下面包括多個BTSGRP_#*節(jié)點,SAG_INF0為SAG的父節(jié)點,下面包括多個SAG_#*節(jié)點。
[0032]本實施例的處理AG3000云化ZK數(shù)據(jù)的客戶端(簡稱NKCLI)采用如圖1所示的總體結(jié)構(gòu),其前臺與后臺之間通過Struts2串聯(lián),前臺與后臺之間的數(shù)據(jù)異步交互通過Jquery Ajax框架實現(xiàn)。
[0033]NKCLI的前臺主頁面的樹形結(jié)構(gòu)使用Jquery Ztree JS庫,主頁面主要包含導(dǎo)航樹和操作控制區(qū)域,如圖3所示。在主頁面的左邊為導(dǎo)航樹,用于展示后臺推送的SAG3000云化 ZK 數(shù)據(jù),展示有 SAG_R00T、SAG_GR0UP、BTS_INF0、BTSGRP、RULES、SAG_INF0、SAG 等節(jié)點名稱,單擊節(jié)點前的加號或減號圖標(biāo)可以展開或收攏節(jié)點。其中,SAG_R00T為ZK根節(jié)點,SAG_INF0為SAG的父節(jié)點,可以對SAG進行批量啟停操作,BTS_INF0為BTSGRP的父節(jié)點,可以對SAG進行批量啟停操作。導(dǎo)航樹還以字體和圖標(biāo)的顏色來區(qū)分Zookeeper集群節(jié)點的狀態(tài)。例如,SAG_GR0UP_***的字體顏色為綠色,表示該SAG_GR0UP為啟動狀態(tài),紅色為停止?fàn)顟B(tài),黑色為初始化狀態(tài);SAG的綠色圖標(biāo)為啟動狀態(tài),紅色圖標(biāo)為啟動但沒有排隊狀態(tài),灰色圖標(biāo)為停止?fàn)顟B(tài),黃色圖標(biāo)為初始化狀態(tài);BTSGRP_***的綠色圖標(biāo)表示已經(jīng)被SAG接管,紅色圖標(biāo)表示沒有被SAG接管,字體顏色為藍色表示手工接管,黑色為自動被SAG接管。
[0034]NKCLI主頁面的右邊為操作頁面,用于用戶對導(dǎo)航樹展示的Zookeeper集群數(shù)據(jù)進行處理操作。圖4為一個處理〃/SAG_R00T/SAG_GR0UP_0002/SAG_INF0〃節(jié)點的操作示意圖。在導(dǎo)航樹選擇該節(jié)點后,點擊相應(yīng)處理的按鈕或者右鍵菜單選擇相應(yīng)處理即可進行啟動、停止或修改等處理操作。
[0035]NKCLI后臺包含一個后