处理Zookeeper集群数据的客户端及方法转让专利

申请号 : CN201410437960.4

文献号 : CN105407114B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 尹海龙

申请人 : 北京信威通信技术股份有限公司

摘要 :

本发明提出处理Zookeeper集群数据的客户端及方法,客户端的后台包含后台服务模块和内存模块,后台服务模块包含浏览器页面服务单元、Zookeeper客户端服务单元、Zookeeper watch服务单元和Cometd服务单元;浏览器页面服务单元用于接收处理操作数据并进行合法性验证,然后将数据封装成Zookeeper集群节点使用的格式;Zookeeper客户端服务单元用于将客户端注册为Zookeeper集群客户端;Zookeeper watch服务单元用于实时获取最新的Zookeeper集群数据并存储在内存模块;Cometd服务单元用于向前台推送内存模块的Zookeeper集群数据。

权利要求 :

1.处理Zookeeper集群数据的客户端,其特征在于:

所述客户端的前台包含一个通过浏览器访问的主页面,该主页面包括导航树和操作页面,所述导航树采用树形结构展示后台推送的Zookeeper集群数据,所述操作页面用于用户对导航树展示的Zookeeper集群数据进行处理操作;

所述客户端的后台包含一个后台服务模块和一个内存模块,后台服务模块包含一个浏览器页面服务单元、一个Zookeeper客户端服务单元、一个Zookeeper watch服务单元和一个Cometd服务单元;

所述浏览器页面服务单元用于接收所述操作页面的处理操作数据并进行合法性验证,验证通过后将数据封装成Zookeeper集群节点使用的格式;所述Zookeeper客户端服务单元用于将所述客户端注册为Zookeeper集群客户端;所述Zookeeper watch服务单元用于通过watch实时获取最新的Zookeeper集群数据并存储在所述内存模块;所述Cometd服务单元用于向前台推送所述内存模块的Zookeeper集群数据。

2.根据权利要求1所述的客户端,其特征在于:

对于不同字段类型的Zookeeper集群节点数据,所述内存模块构建不同的对象进行存储;对于不同字段类型的处理操作数据,所述浏览器页面服务单元进行差异性封装,以保证Zookeeper集群节点能够使用封装后的数据。

3.根据权利要求1或2所述的客户端,其特征在于:所述树形结构使用Jquery Ztree JS库,前台与后台之间通过Struts2串联;前台与后台之间的数据异步交互通过Jquery Ajax框架实现。

4.根据权利要求3所述的客户端,其特征在于:所述内存模块中的Zookeeper集群数据的脚本是可导入和可导出的。

5.根据权利要求3所述的客户端,其特征在于:所述树形结构以字体和图标的颜色来区分Zookeeper集群节点的状态。

6.根据权利要求3所述的客户端,其特征在于:所述Zookeeper集群为云化Zookeeper集群。

7.一种通过权利要求1所述客户端处理Zookeeper集群数据的方法,其特征在于,首次加载Zookeeper集群数据时给Zookeeper集群节点挂上Watch,处理Zookeeper集群数据包括以下步骤:a,用户通过浏览器访问所述Zookeeper客户端的主页面,对Zookeeper集群节点的数据进行处理操作;

b,用户的处理操作数据从前台传递到后台,后台验证合法性后封装成Zookeeper集群使用的格式;

c,通过Zookeeper集群的回调接口判断本次处理操作是否成功,如果成功则继续下一步;

d,后台利用watch获取最新的Zookeeper集群数据;

e,后台通过cometd把最新的Zookeeper集群数据推送到浏览器,并为进行处理操作的Zookeeper集群节点重新挂上watch;

f,导航树采用树形结构展示最新的Zookeeper集群数据。

8.根据权利要求7所述的方法,其特征在于:

对于不同字段类型的Zookeeper集群节点数据,所述内存模块构建不同的对象进行存储;对于不同字段类型的处理操作数据,后台进行差异性封装,以保证Zookeeper集群节点能够使用封装后的数据。

9.根据权利要求7或8所述的方法,其特征在于:所述树形结构使用JqueryZtree JS库,前台与后台之间通过Struts2串联;前台与后台之间的数据异步交互通过Jquery Ajax框架实现。

10.根据权利要求9所述的方法,其特征在于:所述内存模块中的Zookeeper集群数据的脚本是可导入和可导出的。

11.根据权利要求9所述的方法,其特征在于:所述树形结构以字体和图标的颜色来区分Zookeeper集群节点的状态。

12.根据权利要求9所述的方法,其特征在于:所述Zookeeper集群为云化Zookeeper集群。

说明书 :

处理Zookeeper集群数据的客户端及方法

技术领域

[0001] 本发明涉及集群数据通信领域,尤其涉及处理Zookeeper集群数据的客户端及方法。

背景技术

[0002] ZooKeeper是一个开源的、高性能、可扩展的分布式应用程序协调服务,以Paxos算法为基础,实现同步服务、配置维护和命名服务等分布式应用。
[0003] ZooKeeper的数据存储有DataTree(当前ZooKeeper集群中最新的数据,存储在内存中)和FileTxnSnapLog(disk持久化SnapShot和TxnLog)两种方式。由于内存数据重启后就消失了,磁盘文件数据不是明文的,可视化非常困难,因此要把这些数据拿出来展示以及读写,是很困难的。
[0004] ZooKeeper还提供了一个非常简单的客户端,它能够处理节点的前提是该节点只能有一个字段,并且需要通过控制台来操作。假如遇到上千台基站和几十台网关的云化场景,且每个节点都有数十个字段,则仅使用ZooKeeper提供的客户端来进行处理操作是不可实现的。
[0005] 因此目前需要提出一种能够快速给用户展现ZooKeeper集群节点数据的客户端,在节点字段类型较多的复杂应用场景,该客户端也可以进行处理操作。

发明内容

[0006] 为了克服现有技术的缺陷,本发明提出了一种通过浏览器访问并操作ZooKeeper集群(简称ZK)节点数据的客户端,该客户端的总体结构图如图1所示,具体为:
[0007] 所述客户端的前台包含一个通过浏览器访问的主页面,该主页面包括导航树和操作页面,所述导航树采用树形结构展示后台推送的Zookeeper集群数据,所述操作页面用于用户对导航树展示的Zookeeper集群数据进行处理操作;
[0008] 所述客户端的后台包含一个后台服务模块和一个内存模块,后台服务模块包含一个浏览器页面服务单元、一个Zookeeper客户端服务单元、一个Zookeeper watch服务单元和一个Cometd服务单元;
[0009] 所述浏览器页面服务单元用于接收所述操作页面的处理操作数据并进行合法性验证,验证通过后将数据封装成Zookeeper集群节点使用的格式;所述Zookeeper客户端服务单元用于将所述客户端注册为Zookeeper集群客户端;所述Zookeeper watch服务单元用于通过watch实时获取最新的Zookeeper集群数据并存储在所述内存模块;所述Cometd服务单元用于向前台推送所述内存模块的Zookeeper集群数据。
[0010] 优选的,对于不同字段类型的Zookeeper集群节点数据,所述内存模块构建不同的对象进行存储;对于不同字段类型的处理操作数据,所述浏览器页面服务单元进行差异性封装,以保证Zookeeper集群节点能够使用封装后的数据。
[0011] 优选的,所述树形结构使用Jquery Ztree JS库,前台与后台之间通过Struts2串联;前台与后台之间的数据异步交互通过Jquery Ajax框架实现。
[0012] 优选的,所述内存模块中的Zookeeper集群数据的脚本是可导入/导出的。
[0013] 优选的,所述树形结构以字体和图标的颜色来区分Zookeeper集群节点的状态。
[0014] 优选的,所述Zookeeper集群可以是云化Zookeeper集群。
[0015] 本发明还提出了一种处理Zookeeper集群数据的方法,该方法采用本发明提出的客户端,首次加载Zookeeper集群数据时需要给Zookeeper集群节点挂上Watch,其处理Zookeeper集群数据的流程如图2所示,具体包括以下步骤:
[0016] a,用户通过浏览器访问所述Zookeeper客户端的主页面,对Zookeeper集群节点的数据进行处理操作;
[0017] b,用户的处理操作数据从前台传递到后台,后台验证合法性后封装成Zookeeper集群使用的格式;
[0018] c,通过Zookeeper集群的回调接口判断本次处理操作是否成功,如果成功则继续下一步;
[0019] d,后台利用watch获取最新的Zookeeper集群数据;
[0020] e,后台通过cometd把最新的Zookeeper集群数据推送到浏览器,并为进行处理操作的Zookeeper集群节点重新挂上watch;
[0021] f,导航树采用树形结构展示最新的Zookeeper集群数据。
[0022] 本发明的优点在于:(1)利用Watch感知的特性实时获取最新的集群数据,以保证本地内存数据与实际Zookeeper集群数据实时同步,然后采用Cometd把最新的集群数据推送到浏览器,使用Ajax异步刷新页面,友好高效的保证了页面展示和实际Zookeeper集群数据的一致性。(2)用树形结构形象展示Zookeeper集群数据,使得增删改查节点等处理操作异常简单。(3)不同字段类型的数据进行差异化存储或封装,则不管应用场景多么复杂,通过本发明都可以进行处理操作,集群数据都可以在页面完整无误的展现。(4)以图标和颜色来区分集群节点状态,便于用户发现故障节点等。(5)脚本的导入和导出使得集群移植变得非常简单。

附图说明

[0023] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0024] 图1是本发明提出的客户端的总体结构框图;
[0025] 图2是本发明提出的处理Zookeeper集群数据的方法的流程图;
[0026] 图3是本发明实施例一的SAG3000云化数据的ZK节点关系图;
[0027] 图4是本发明实施例一的在操作页面处理ZK节点的操作示意图;
[0028] 图5是本发明实施例二的添加并启动SAG节点的步骤流程图。

具体实施方式

[0029] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例;需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030] 实施例一:处理云化Zookeeper集群数据的客户端
[0031] 本实施例以McWiLL网络的SAG3000云化数据为例来说明本发明客户端的具体实现,SAG3000云化数据在ZK(ZooKeeper集群)的节点关系如图3所示,SAG_GROUP_***节点下面包含BTS_INFO、RULES、SAG_INFO节点,BTS_INFO为BTSGRP的父节点,下面包括多个BTSGRP_***节点,SAG_INFO为SAG的父节点,下面包括多个SAG_***节点。
[0032] 本实施例的处理AG3000云化ZK数据的客户端(简称NKCLI)采用如图1所示的总体结构,其前台与后台之间通过Struts2串联,前台与后台之间的数据异步交互通过Jquery Ajax框架实现。
[0033] NKCLI的前台主页面的树形结构使用Jquery Ztree JS库,主页面主要包含导航树和操作控制区域,如图3所示。在主页面的左边为导航树,用于展示后台推送的SAG3000云化ZK数据,展示有SAG_ROOT、SAG_GROUP、BTS_INFO、BTSGRP、RULES、SAG_INFO、SAG等节点名称,单击节点前的加号或减号图标可以展开或收拢节点。其中,SAG_ROOT为ZK根节点,SAG_INFO为SAG的父节点,可以对SAG进行批量启停操作,BTS_INFO为BTSGRP的父节点,可以对SAG进行批量启停操作。导航树还以字体和图标的颜色来区分Zookeeper集群节点的状态。例如,SAG_GROUP_***的字体颜色为绿色,表示该SAG_GROUP为启动状态,红色为停止状态,黑色为初始化状态;SAG的绿色图标为启动状态,红色图标为启动但没有排队状态,灰色图标为停止状态,黄色图标为初始化状态;BTSGRP_***的绿色图标表示已经被SAG接管,红色图标表示没有被SAG接管,字体颜色为蓝色表示手工接管,黑色为自动被SAG接管。
[0034] NKCLI主页面的右边为操作页面,用于用户对导航树展示的Zookeeper集群数据进行处理操作。图4为一个处理"/SAG_ROOT/SAG_GROUP_0002/SAG_INFO"节点的操作示意图。在导航树选择该节点后,点击相应处理的按钮或者右键菜单选择相应处理即可进行启动、停止或修改等处理操作。
[0035] NKCLI后台包含一个后台服务模块和一个内存模块,后台服务模块包含一个浏览器页面服务单元、一个Zookeeper客户端服务单元、一个Zookeeper watch服务单元和一个Cometd服务单元。浏览器页面服务单元书写importCheck.js脚本库,检测针对“SAG_GROUP_***”的处理操作数据的合法性,验证通过后将数据封装成ZK节点使用的格式;Zookeeper客户端服务单元用于将NKCLI注册为ZK客户端;Zookeeper watch服务单元用于通过watch实时获取最新的ZK数据并存储在内存模块,本实施例的SAG_GROUP_***的脚本是可导入和可导出的,这样集群的移植就变得非常的简单;Cometd服务单元用于向前台推送内存模块的ZK数据。
[0036] 为了适应SAG3000的云化场景,对于不同字段类型的ZK节点数据,NKCLI的内存模块构建不同的对象进行存储;对于不同字段类型的处理操作数据,浏览器页面服务单元进行差异性封装,以保证ZK节点能够使用封装后的数据。
[0037] 实施例二:处理云化Zookeeper集群数据的方法
[0038] 本实施例具体说明SAG3000云化ZK节点的处理过程。需要注意的是,在首次加载ZK数据时要给ZK节点挂上Watch,以后每次处理完节点后都要给节点重新挂上Watch,这样才能保证可以实时感知ZK数据的变化,从而保证本地内存数据与实际Zookeeper集群数据实时同步。
[0039] 本实施例以实施例一为基础,详细描述SAG3000云化场景下添加一个SAG并启动该SAG的处理过程,其步骤流程如图5所示,包括以下步骤:
[0040] (1)用户通过浏览器访问NKCLI的主页面,在操作页面进行新增SAG的处理操作,相应的SAG数据从前台传递到后台;
[0041] (2)NKCLI在后台验证SAG节点名称的合法性;
[0042] (3)NKCLI在后台将SAG数据封装成ZK使用的格式;
[0043] (4)检测ZK连接是否正常;
[0044] (5)NKCLI指示Zookeeper集群添加SAG节点和相应数据,通过回调接口判断成功则进入下一步;
[0045] (6)watch感知SAG_INFO数据发生变化;
[0046] (7)NKCLI的后台利用watch获取最新的Zookeeper集群数据,更新内存数据;
[0047] (8)为新增的SAG节点重新注册watch;
[0048] (9)NKCLI的后台通过cometd把最新的ZK数据推送到浏览器,主页面显示新增的SAG节点;
[0049] (10)用户在主页面点击启动该SAG的菜单;
[0050] (11)NKCLI修改该SAG的状态为1(即启动状态);
[0051] (12)NKCLI指示Zookeeper集群修改该SAG的数据,通过回调接口判断成功则进入下一步;
[0052] (13)watch感知SAG节点数据发生变化;
[0053] (14)NKCLI的后台利用watch获取最新的Zookeeper集群数据,更新内存数据;
[0054] (15)为该SAG节点重新注册watch;
[0055] (16)NKCLI的后台通过cometd把最新的ZK数据推送到浏览器,主页面该SAG节点状态发生变化。
[0056] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0057] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。