节点信息获取方法、装置、设备及计算机可读存储介质与流程

文档序号:16312715发布日期:2018-12-19 05:20阅读:143来源:国知局
节点信息获取方法、装置、设备及计算机可读存储介质与流程

本发明涉及节点信息获取技术领域,更具体地说,涉及一种节点信息获取方法、装置、设备及计算机可读存储介质。

背景技术

随着云计算技术的飞速发展和大数据技术在日常生活中的日益渗透,存储系统在大规模数据中心担负起越来越重要的责任,存储系统中的每个主机节点也顺势成为连接集群的核心角色。那么,对于集群系统的管理和监控也成为存储系统中必不可少的一个组成部分。因此,在存储系统中,集群对于节点信息的存储、监控,也成为分布式存储集群系统中不可缺失的一项重要功能。分布式存储集群大多采用主从结构,主节点、子节点等组成部分。而存储集群内部对于节点信息的管理主要分为节点信息的存储和节点信息的查询两个部分:节点信息存储主要是不断地从集群各个节点中采集节点信息数据(如,电源、网口、风扇、cpu、内存、磁盘等相关数据),并实时监控数据变化,当监控端发现异常数据,则会产生相应的告警信息;而节点信息查询主要用于客户端(如,管理界面等)对节点信息的浏览和设备信息的查览等。节点信息的查询依赖于底层硬件驱动及其相应的查询接口,而且信息来源于不同的底层指令;随着集群规模的不断增大,对底层指令依赖的查询会使得查询耗时严重,同时对集群的资源造成大规模占用,集群压力越高,相应的业务风险越大。

目前,节点信息的存储和查询主要集中在客户端和服务端的交互上,主要有如下两种方式,1.客户端定时轮询:该种方式需要客户端定时启用大批量线程请求集群服务端各个节点数据,以保证数据获取的实时性,但是大批量定时线程开启执行底层耗时命令往往使得内存紧张,集群压力过大,出现客户端卡顿甚至卡死等问题;2.主节点汇集:主节点需要将集群中的各个节点数据汇总并持久化在一个主节点上,由主节点对节点信息数据集中汇总并上报进行处理,该种方式能够及时更新数据,主节点相当于做了一次中间流程缓存,保障数据的一致性,但是集群压力主要集中在主节点,如何分散主节点的压力成为关键。

因此,如何分散节点及集群压力,实现客户端对节点信息的获取是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种节点信息获取方法、装置、设备及计算机可读存储介质,以实现客户端获取节点信息时,减小节点及集群压力,有利于集群负载均衡。

为实现上述目的,本发明实施例提供了如下技术方案:

一种节点信息获取方法,基于分布式存储系统,所述分布式存储系统包括主节点及子节点;所述节点信息获取方法包括:

主节点接收客户端发送的节点信息查询请求;

判断主节点缓存中是否存在与所述查询请求对应的节点信息;

若是,则响应所述查询请求;

若否,则从所述查询请求中确定哨兵请求,将所述哨兵请求下发至子节点,以从所述子节点的数据库中获取节点信息;

利用所述节点信息更新所述主节点缓存,并响应所述查询请求;其中,所述子节点以固定频率周期性的采集本节点的节点信息,并存储至所述子节点的数据库。

其中,所述节点信息获取方法还包括:

按照预先设定的哨兵请求缓存失效时间,再次向所述子节点下发哨兵请求,并将从所述子节点获取的节点信息更新至主节点缓存中;

其中,所述哨兵请求缓存失效时间比普通请求失效时间至少提前一个数据查询返回时钟。

其中,所述节点信息获取方法还包括:

按照预设时长为间隔,将所述主节点的配置信息及所述主节点缓存内的节点信息,同步至所述分布式存储系统内的其他主节点。

其中,所述分布式存储系统内的主节点与主节点间,以及主节点与子节点之间通过异步消息通道进行数据传输。

一种节点信息获取装置,包括:

查询请求接收模块,用于接收客户端发送的节点信息查询请求;

判断模块,用于判断主节点缓存中是否存在与所述查询请求对应的节点信息;

响应模块,用于在主节点缓存中存在与所述查询请求对应的节点信息时,响应所述查询请求;在更新模块对主节点缓存更新后,响应所述查询请求;

节点信息获取模块,用于在主节点缓存中不存在与所述查询请求对应的节点信息时,从所述查询请求中确定哨兵请求,将所述哨兵请求下发至子节点,以从所述子节点的数据库中获取节点信息;

第一更新模块,用于利用所述节点信息更新所述主节点缓存;其中,所述子节点以固定频率周期性的采集本节点的节点信息,并存储至所述子节点的数据库。

其中,本方案还包括:

请求下发模块,用于按照预先设定的哨兵请求缓存失效时间,再次向所述子节点下发哨兵请求;

第二更新模块,用于将从所述子节点获取的节点信息更新至主节点缓存中;其中,所述哨兵请求缓存失效时间比普通请求失效时间至少提前一个数据查询返回时钟。

其中,本方案还包括:

信息同步模块,用于按照预设时长为间隔,将所述主节点的配置信息及所述主节点缓存内的节点信息,同步至所述分布式存储系统内的其他主节点。

其中,所述分布式存储系统内的主节点与主节点间,以及主节点与子节点之间通过异步消息通道进行数据传输。

一种节点信息获取设备,包括:

存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实上述节点信息获取方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述节点信息获取方法的步骤。

通过以上方案可知,本发明实施例提供的一种节点信息获取方法,基于分布式存储系统,所述分布式存储系统包括主节点及子节点;所述节点信息获取方法包括:主节点接收客户端发送的节点信息查询请求;判断主节点缓存中是否存在与所述查询请求对应的节点信息;若是,则响应所述查询请求;若否,则从所述查询请求中确定哨兵请求,将所述哨兵请求下发至子节点,以从所述子节点的数据库中获取节点信息;利用所述节点信息更新所述主节点缓存,并响应所述查询请求;其中,所述子节点以固定频率周期性的采集本节点的节点信息,并存储至所述子节点的数据库。

可见,在本方案中,将节点信息的采集及持久化存储下沉到各个子节点,减轻主节点压力及集群压力,有利于集群负载均衡;并且主节点从子节点读取数据时,仅仅将哨兵请求下发至子节点,极大的减少了数据读写io,并且子节点周期性的采集并保存本节点的节点信息,可以保证了数据查询的实时性。本发明还公开了一种节点信息获取装置、设备及计算机可读存储介质,同样能实现上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种节点信息获取方法流程示意图;

图2为本发明实施例公开的系统整体框架示意图;

图3为本发明实施例公开的数据采集单元处理数据流程图;

图4为本发明实施例公开的节点信息查询时序图;

图5为本发明实施例公开的分布式缓存单元中哨兵策略示意图;

图6为本发明实施例公开的分布式缓存单元中的哨兵策略缓存失效更新示意图;

图7为本发明实施例公开的消息通道单元订阅模型示意图;

图8为本发明实施例公开的一种节点信息获取装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种节点信息获取方法、装置、设备及计算机可读存储介质,以实现客户端获取节点信息时,减小节点及集群压力,有利于集群负载均衡。

参见图1,本发明实施例提供的一种节点信息获取方法,基于分布式存储系统,所述分布式存储系统包括主节点及子节点;所述节点信息获取方法包括:

s101、主节点接收客户端发送的节点信息查询请求;

具体的,在本实施例中,根据实现功能的不同分为四部分,在分布式存储系统中部署四部分,即数据采集单元、分布式缓存单元、异步消息通道和主节点消息处理单元,用户在客户端(如:管理软件等)通过网络请求与本方案中的分布式存储系统通信交互。

参见图2,为本实施例提供的系统整体框架示意图;在该图中可以看出,每个节点上存在两个独立进程:缓存进程(cache进程)和主进程(master进程),各个节点的master进程负责不同部分间的消息封装、分发以及数据格式化。所述分布式存储系统内的主节点与主节点间,以及主节点与子节点之间通过异步消息通道进行数据传输。

在s101中接收客户端发送的节点信息查询请求时,主要是通过主节点中的主节点消息处理单元接收处理的。具体来说,主节点消息处理单元主要负责从客户端到主节点到子节点的各个层间的消息的编码与解码,对传递的消息格式进行封装和回显以及格式化处理。

主节点消息处理单元对接收的查询请求进行解码后,将查询请求发送至主节点的分布式缓存单元,该单元存在于主节点,主要负责维护节点信息数据的缓存,例如客户端请求何时读数据库、何时读缓存,也就是说,后续s102-s105均是由分布式缓存单元执行,但是在s105中响应查询请求后,还是需要将响应结果,即获取的节点信息发送至主节点消息处理单元,通过主节点消息处理单元进行编码等操作发送至客户端。其中,分布式缓存单元、数据采集单元、主节点消息处理单元之间通过异步消息通道进行数据交互、通信。

s102、判断主节点缓存中是否存在与所述查询请求对应的节点信息;

若否,则执行s103;若是,则执行s105;

s103、从所述查询请求中确定哨兵请求,将所述哨兵请求下发至子节点,以从所述子节点的数据库中获取节点信息;其中,所述子节点以固定频率周期性的采集本节点的节点信息,并存储至所述子节点的数据库;

s104、利用所述节点信息更新所述主节点缓存;

s105、响应所述查询请求。

具体的,在本实施例中,数据采集单元部署于各个节点,对外提供数据接口,以json格式交互。该模块将节点信息数据采集任务下沉到各个节点,是集群中每个子节点上独立维护的缓存进程(cache进程)的一部分,负责以固定频率周期性地采集本节点数据并将数据持久化在各自节点上。

进一步的,本方案中的数据采集单元中存在一个独立采集进程和一个对外提供数据查询的接口。该采集进程内根据不同的节点数据源,创建不同的定时采集线程,定时时间可设定为15秒,即每隔15秒的频率通过底层命令查询一次节点数据,并将数据持久化至本节点数据中。同时,该模块对外提供一个json数据交换格式的查询接口,供上层查询调用使用。参见图3,为本实施例提供的数据采集单元处理数据流程图,具体包括如下步骤:

step1:数据采集单元在各个子节点上创建独立的采集进程。

step2:采集进程根据不同的数据采集源,按照15s的时间粒度开启不同的定时采集线程。

step3:定时采集线程调用不同的底层命令获取相应类型的节点信息数据,并将采集数据持久化到本节点数据库中。

step4:独立进程内的数据查询线程将数据库中的数据封装为统一的数据查询接口供上层查询使用。

step5:判断查询线程是否接收到查询请求,如果接收到,则执行step6;

step6:当数据查询请求传至数据采集模块,该模块按照消息通道格式将消息封装后由该节点的主进程(master进程)分发到对应的单元,例如分布式缓存单元。

需要说明的是,本实施例中的分布式缓存单元主要提供节点信息的缓存更新处理能力,即通过哨兵策略选择读取缓存或数据库;具体来说,当客户端查询请求下发,首先从主节点缓存中读取查询数据,如果存在对应的节点信息,则直接返回查询数据,也就是本实施例中的响应查询请求;否则,需要将请求继续下发至子节点。参见图4,为本实施例提供的整个节点信息查询时序图,该模块的具体数据流程如下:

step1:不同的客户端传来大批量节点信息数据查询请求。

step2:主节点消息处理单元将消息封装、编码后,分发至分布式缓存单元。

step3:分布式缓存单元从缓存中读取数据,如果数据请求成功则返回数据,转step5;如果请求数据失败,则根据哨兵策略更新维护缓存数据,转step4。

step4:哨兵策略线程将客户端请求消息进一步下发至子节点,从子节点数据库中读取数据,并更新缓存。

step5:分布式缓存单元通过消息通道将请求成功的数据发送至主节点消息处理单元。

step6:主节点消息处理单元根据消息类型,封装请求回显消息。

step7:主节点消息处理单元通过消息通道将消息发往客户端。

step8:客户端收到请求返回数据后,将数据通过ui元素显示到客户端上。

综上所述,本发明将节点信息数据采集从主节点下沉到集群的各个子节点,减轻主节点压力,同时将主节点消息处理功能规范化约束、精细化分工,用于保障数据的时效性和准确性。

基于上述节点信息获取方法实施例,在本实施例中,该节点信息获取方法还包括:

按照预先设定的哨兵请求缓存失效时间,再次向所述子节点下发哨兵请求,并将从所述子节点获取的节点信息更新至主节点缓存中;其中,所述哨兵请求缓存失效时间比普通请求失效时间至少提前一个数据查询返回时钟。

具体的,在本实施例中,为了尽可能地保证数据从缓存读取时的一致性,在分布式缓存处理单元中设置基于哨兵策略的缓存更新方法,参见图5,为本实施例提供的分布式缓存单元中哨兵策略示意图。具体处理流程如下:

step1:第一次大批量节点信息数据查询请求相继下发至分布式缓存处理单元。

step2:分布式缓存单元获取第一个到达的查询请求,将该请求标记为哨兵请求。

step3:分布式缓存单元设置哨兵请求,并直接下发哨兵请求至子节点,从子节点的获取数据库数据并更新主节点缓存,而之后的普通请求则优先从缓存中读取数据。

step4:分布式缓存单元中第一次缓存数据生成后,设置哨兵请求线程和普通请求线程数据缓存时间一致,设置哨兵请求线程缓存失效时间比普通请求线程缓存失效时间提前一个数据查询返回时钟(rt),参见图6,为本实施提供的分布式缓存单元中的哨兵策略缓存失效更新示意图。

step5:当有大批量请求再次下发,分布式缓存单元再次标记哨兵请求,哨兵请求线程根据缓存失效时间提前苏醒,下发至子节点读取数据更新缓存数据。

通过step1至step5的步骤,可以保证大批量请求从缓存中读取到数据,而缓存失效时每次仅有一个请求线程下发至子节点,读取数据库,极大的减少了数据读写io;哨兵线程提前苏醒更新缓存,保证了其他请求每次都能得到缓存数据,提高了缓存命中率,减少了请求时间、加快了系统反应;同时数据采集单元15秒定时更新数据库数据保证了数据查询的实时性。也就是说,分布式缓存单元通过设置基于哨兵策略的缓存更新方法提高了缓存的命中率,减少了io读写次数和数据请求时间,提升了系统反应时间

基于上述任意节点信息获取方法实施例,在本实施例中,所述节点信息获取方法还包括:

按照预设时长为间隔,将所述主节点的配置信息及所述主节点缓存内的节点信息,同步至所述分布式存储系统内的其他主节点。

具体的,本实施例中的分布式存储系统内存在多个主节点,每个主节点的主节点消息处理单元设置独立的数据中心(datacenter,简称dc),用于保持主节点与主节点间的数据同步,保持数据一致性。并且,可以设置每隔预定时间间隔,可启用数据中心(dc)功能,向其他主节点同步缓存数据和配置,该配置具体指用户设置,比如对数据库或者节点的配置。通过设置多个主节点,可以实现某个主节点异常时,实现缓存数据的读取切换,增加系统的可靠性。

需要说明的是,本实施例中的异步消息通道作用于各个节点和各个单元之间,主要负责节点间或单元间的数据通信与交互,用于传递客户端对节点消息请求和回应等。即异步消息通道分散在主节点与主节点,主节点与子节点,主节点与客户端之间,通过一致的消息格式进行通信。

其中,主节点消息处理单元利用节点上的master进程通过异步消息通道与客户端和各个节点进行通信,通信过程中主要涉及客户端节点数据查询请求、主节点间数据同步、分布式缓存单元消息传递、子节点采集消息分发与处理等,这些消息的处理流程基本一致,参见图7,为本实施例提供的消息通道单元订阅模型示意图,图中的模块a和模块b可以是:主节点与主节点、子节点与主节点、本节点的数据采集单元与本节点master进程、本节点的分布式缓存单元与本节点master进程、本节点的数据中心与本节点matser进程等。具体数据交互步骤如下:

step1:消息源(客户端、主节点或者子节点)与主节点消息处理单元通过异步消息通道产生消息模块订阅和被订阅关系。

step2:消息源通过异步消息通道将数据发送至主节点消息处理单元。

step3:主节点消息处理单元将收到消息后解码,根据不同的消息类型,进行消息处理、消息过滤后(重复消息过滤等)发送到目的地,对不同的消息进行分发。

综上所述,本发明将节点信息数据的采集及其持久化存储下沉到各个子节点,并在集群中设置多个主节点,相较于之前的仅有一个主节点增加去中心化功能,各个主节点与主节点之间、主节点与子节点之间通过异步消息通道进行通信,所有数据交互格式统一使用json。每个节点内部创建并开启两个进程:缓存进程(cache进程)和主进程(master进程),缓存进程负责在各自子节点上进行数据采集、数据持久化和缓存策略维护操作处理;主进程负责节点信息的汇集过滤、消息分发以及数据通信。同时,在分布式缓存单元中设置基于哨兵策略的缓存更新方法,用于节点中缓存数据的更新和替换。这样可以分散各个节点压力、减轻集群压力,有利于集群负载均衡,同时提高数据的准确性和一致性。

下面对本发明实施例提供的节点信息获取装置进行介绍,下文描述的节点信息获取装置与上文描述的节点信息获取方法可以相互参照。

参见图8,本发明实施例提供的一种节点信息获取装置,包括:

查询请求接收模块100,用于接收客户端发送的节点信息查询请求;

判断模块200,用于判断主节点缓存中是否存在与所述查询请求对应的节点信息;

响应模块300,用于在主节点缓存中存在与所述查询请求对应的节点信息时,响应所述查询请求;在更新模块对主节点缓存更新后,响应所述查询请求;

节点信息获取模块400,用于在主节点缓存中不存在与所述查询请求对应的节点信息时,从所述查询请求中确定哨兵请求,将所述哨兵请求下发至子节点,以从所述子节点的数据库中获取节点信息;

第一更新模块500,用于利用所述节点信息更新所述主节点缓存;其中,所述子节点以固定频率周期性的采集本节点的节点信息,并存储至所述子节点的数据库。

其中,本方案还包括:

请求下发模块,用于按照预先设定的哨兵请求缓存失效时间,再次向所述子节点下发哨兵请求;

第二更新模块,用于将从所述子节点获取的节点信息更新至主节点缓存中;其中,所述哨兵请求缓存失效时间比普通请求失效时间至少提前一个数据查询返回时钟。

其中,本方案还包括:

信息同步模块,用于按照预设时长为间隔,将所述主节点的配置信息及所述主节点缓存内的节点信息,同步至所述分布式存储系统内的其他主节点。

其中,所述分布式存储系统内的主节点与主节点间,以及主节点与子节点之间通过异步消息通道进行数据传输。

本发明实施例还提供一种节点信息获取设备,包括:

存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述节点信息获取方法实施例的步骤。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述节点信息获取方法实施例的步骤。

其中,该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1