一种资源数据的查询方法、查询客户端和查询系统与流程

文档序号:11590428阅读:208来源:国知局

本发明涉及互联网技术领域,特别涉及一种资源数据的查询方法、查询客户端和查询系统。



背景技术:

网管监控系统主要包含资源、告警和性能三种类型的数据,其中资源数据是基础,告警数据和性能数据都是基于或者关联资源数据的。因此,在网管监控系统处理过程中,资源数据的查询速度,对告警数据和性能数据的处理速度有很大的影响。为了提升网管监控系统的处理能力,必须提升资源数据的查询速度。

在传统的网管系统中,资源数据一般都是存储在关系型数据库中的,例如存储在oracle甲骨文数据库、mysql数据库,对于资源数据的单个数据查询和组合查询,都是基于数据库查询实现的。关系型数据库的查询方式较为适用于存储资源数据量较小的关系型数据库,当资源数据量比较大时,例如超过1000万的资源数据,且告警数据量和性能数据量都比较大时,假设活动告警产生速度达到5000条/秒的速度,整个系统中对单个资源的查询速度可能需要达到2万次/秒以上,若仅仅依赖于关系型数据库来实现快速查询,是无法达到要求的。

针对上述问题,现有的网管系统一般通过将资源数据初始化到本地缓存中,如缓存到jvm内存中,来提高资源数据的查询速度。但当资源数据量达到1000万或更多时,缓存这些资源数据将会消耗大量的内存,而且重启时还需要将资源数据重新加载到内存中,加载时间过长。

因此,亟需一种新型的网管监控系统,以适应大资源数据量的快速查询。



技术实现要素:

鉴于上述问题,本发明提供了一种资源数据的查询方法、查询客户端和 查询系统,以解决传统网管监控系统无法满足大数据的查询需求的问题。

为达到上述目的,本发明的技术方案是这样实现的:

一方面,本发明提供了一种资源数据的查询方法,所述资源数据按照资源唯一标识resid分布式缓存在redis集群中,该资源数据的查询方法包括:

接收查询指令,并从查询指令中获取待查询资源数据的资源唯一标识resid;

根据待查询资源数据的资源唯一标识resid查询本地ehcache缓存;

在本地ehcache缓存中未查询到该资源唯一标识resid的资源数据时,将该资源唯一标识resid发送到redis集群中,并将redis集群返回的资源数据的哈希表hashmap作为查询结果,将查询结果组装成资源对象resobject记录到本地ehcache缓存中。

另一方面,本发明提供了一种资源数据的查询方法,资源数据按照资源唯一标识resid分布式缓存在redis集群中,该资源数据的查询方法包括:

接收客户端发送的待查询资源数据的资源唯一标识resid,在客户端的本地ehcache缓存中根据该资源唯一标识resid未查询到相应资源数据;

根据接收到的资源唯一标识resid从redis集群中获取该资源唯一标识resid对应的资源数据的哈希表hashmap,并将哈希表hashmap作为查询结果发送给客户端,使客户端将接收到的查询结果组装成资源对象resobject记录到客户端本地的ehcache缓存中。

一方面,本发明还提供了一种资源数据的查询客户端,资源数据按照资源唯一标识resid分布式缓存在redis集群中,该资源数据的查询客户端包括:

资源查询接口,用于接收查询指令,并从查询指令中获取待查询资源数据的资源唯一标识resid;

本地查询单元,用于根据待查询资源数据的资源唯一标识resid查询本地ehcache缓存;

服务器查询单元,用于在本地ehcache缓存中未查询到该资源唯一标识resid的资源数据时,将该资源唯一标识resid发送到所述redis集群中,并 将所述redis集群返回的资源数据的哈希表hashmap作为查询结果,将所述查询结果组装成资源对象resobject记录到本地ehcache缓存中。

又一方面,本发明提供了一种资源数据的查询系统,包括:资源数据查询客户端和redis集群,资源数据按照资源唯一标识resid分布式缓存在redis集群中,资源数据查询客户端包括:资源查询接口、本地查询单元和服务器查询单元;

资源查询接口,用于接收查询指令,并从所述查询指令中获取待查询资源数据的资源唯一标识resid;

本地查询单元,用于根据所述待查询资源数据的资源唯一标识resid查询本地ehcache缓存;

服务器查询单元,用于在本地ehcache缓存中未查询到该资源唯一标识resid的资源数据时,将该资源唯一标识resid发送到所述redis集群中,并将所述redis集群返回的资源数据的哈希表hashmap作为查询结果,将所述查询结果组装成资源对象resobject记录到本地ehcache缓存中;

redis集群,用于接收客户端发送的所述资源唯一标识resid,并根据接收到的所述资源唯一标识resid获取该资源唯一标识resid对应的资源数据的哈希表hashmap,以及将所述哈希表hashmap作为查询结果发送给客户端。

本发明实施例的有益效果是:本发明将资源数据进行分布式缓存,利用redis集群的负载均衡能力和错误恢复能力,实现了资源数据的可扩展性和高可用性;并且本发明基于资源数据的分布式缓存,还提供一种新型的资源数据的查询方法,通过借助ehcache实现本地缓存,避免频繁地远程从redis集群中获取资源数据,达到加快资源数据读取速度的目的;通过借助搜索引擎实现条件查询,保证条件查询的查询速度。本发明结合本地ehcache缓存和redis集群能够实现资源数据的快速查询,以及结合solr搜索引擎实现了资源数据的条件查询,从而改进了传统网管监控系统的数据库查询方式带来的速度慢、灵活性差的问题。

附图说明

图1为实施例一提供的资源数据的查询方法流程图;

图2为实施例一提供的单个资源查询的查询方法示意图;

图3为实施例一提供的条件查询的查询方法示意图;

图4为实施例二提供的资源数据的查询方法流程图;

图5为实施例二提供的redis集群中redis服务器的分布示意图

图6为实施例三提供的资源数据的查询客户端结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一:

图1为本实施例提供的资源数据的查询方法流程图,该资源数据按照资源唯一标识resid分布式缓存在redis集群中,如图1所示,图1中的方法包括:

s110,接收查询指令,并从查询指令中获取待查询资源数据的资源唯一标识resid。

在本步骤中,当查询指令为单个资源查询指令时,从查询指令中获取待查询资源数据的唯一标识为:从单个资源查询指令中获取该资源唯一标识resid;

当查询指令为条件查询指令时,从查询指令中获取待查询资源数据的唯一标识为:根据查询条件从搜索引擎solr中获取满足查询条件的资源唯一标识resid集合。

搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。

本实施例优选地使用solr搜索引擎,solr搜索引擎是apachelucene项目的开源企业搜索平台,支持全文检索命中显示、分面搜索、动态聚类和数据库集成;具有高度可扩展,并提供分布式搜索和索引复制;支持多种输出格式;具有易于安装和配置的特点,且附带基于http的管理界面。

s120,根据待查询资源数据的资源唯一标识resid查询本地ehcache缓存,其中该本地ehcache缓存采用最近最少使用(leastrecentlyused,lru)策略实现。

ehcache缓存是一种轻量级的缓存实现方案,通过内存和磁盘的两级缓存实现数据的缓存,因此无需担心容量的问题。

在实际应用中,可以为本地ehcache缓存设置滑动过期阈值,当一条资源数据在本地ehcache缓存中的存放时间超过该滑动过期阈值时,从本地ehcache缓存中删除该资源数据。该滑动过期阈值的具体数值可以根据需要进行调整,例如,设置为1小时。

本地ehcache缓存在初始化时可以设置为空,即初始化时未缓存任何资源数据,在后续的查询过程中,会不断有新的资源数据追加到本地ehcache缓存中,则当一条资源数据在本地ehcache缓存中的时间超过滑动过期阈值时,如超过1小时后,强制删除该条资源数据,这种处理方式实现了一种简单的lru方案,能够控制缓存的容量,节省缓存空间。

s130,在本地ehcache缓存中未查询到该资源唯一标识resid的资源数据时,将该资源唯一标识resid发送到redis集群中,并将redis集群返回的资源数据的哈希表hashmap作为查询结果,将查询结果组装成资源对象resobject记录到本地ehcache缓存中。

本实施例中的资源数据的查询方法尤其适用于网管监控系统对其资源数据的查询。

由上可见,本实施例将资源数据进行分布式缓存,利用redis集群的负载均衡能力和错误恢复能力,实现了资源数据缓存的可扩展性和高可用型;并且基于资源数据的分布式缓存,提供了一种新型的资源数据查询方法,通过借助ehcache实现本地缓存,避免频繁地远程从redis集群获取数据,从而显著地加快数据读取速度;通过借助搜索引擎实现了条件查询,保证条件查询速度。本实施例结合本地ehcache缓存和redis集群能够实现资源数据的快速查询,以及结合solr搜索引擎实现了资源数据的条件查询,从而改进了传统网管监控系统的数据库查询方式带来的速度慢、灵活性差的问题。

在本实施例的一具体实现中,对于网管系统,当接收到告警需要查询该 告警数据对应的资源数据时,或者需要查询性能数据对应的资源数据时,采用图2所示的方法进行查询。

图2为本实施例提供的单个资源查询的查询方法示意图,假设图2是根据告警数据来查询相应的资源数据,则图2中的查询方法如下:

s210,获取告警数据中告警对象的资源唯一标识resid。

s220,根据获取的资源唯一标识resid查询本地ehcache缓存。

s230,当本地ehcache缓存中存在该资源唯一标识resid的资源对象resobject时,将本地ehcache缓存中该资源唯一标识resid的资源对象resobject作为查询结果。

s240,当本地ehcache缓存中不存在该资源唯一标识resid的资源对象时,从redis集群中获取该资源唯一标识resid的资源数据的哈希表hashmap并返回。

s250,将该哈希表hashmap组装成资源对象resobject记录到本地ehcache缓存中。

在本具体实现中,利用本地ehcache缓存能够使资源数据的读取速度达到每秒2万次以上。

在本实施例的另一具体实现中,对于网管监控系统,当进行条件查询时,是无法从本地ehcache缓存和/或redis集群获取查询结果的,这是因为本地ehcache缓存和redis集群中均采用键值对key-value形式进行数据缓存,key是指资源的资源唯一标识resid,value是指该资源的资源数据对象,包含了该资源的所有属性。

基于上述分析,在客户端接收到条件查询指令时,采用图3所示的方法进行资源数据的查询,图3为本实施例提供的条件查询的查询方法示意图,如图3所示,通过借助solr搜索引擎实现资源数据的条件查询,本实施例中的条件包括分页查询,其查询过程如下:

s310,获取查询条件。

s320,使搜索引擎solr按照获取的查询条件进行搜索查询。

s330,从搜索引擎solr中获取满足查询条件的资源唯一标识resid集合。

s340,从redis集群中获取该资源唯一标识resid集合中的资源数据的哈希表hashmap集合并返回。

s350,将该哈希表hashmap集合组装成资源对象resobject集合记录到本地ehcache缓存中。

需要说明的是,在进行条件的资源数据查询时,本发明优选地根据获取资源唯一标识resid集合直接查询resid集群,这是因为在进行条件查询时,通常在本地ehcache缓存中无法获取全部的满足条件的资源数据,因此本实施例直接查询resid集群,且无需将返回的资源数据的哈希表hashmap组装成资源对象resobject记录到本地ehcache缓存中。

实施例二:

基于与实施例一相同的技术构思,本实施例提供了一种资源数据的查询方法。

图4为本实施例提供的资源数据的查询方法流程图,如图4所示,图4中的方法包括:

s410,接收客户端发送的待查询资源数据的资源唯一标识resid,在客户端的本地ehcache缓存中根据该资源唯一标识resid未查询到相应资源数据。

s420,根据接收到的资源唯一标识resid从redis集群中获取该资源唯一标识resid对应的资源数据的哈希表hashmap,并将该哈希表hashmap作为查询结果发送给客户端,使客户端将接收到的查询结果组装成资源对象resobject记录到客户端本地的ehcache缓存中。

需要说明的是,本实施例中的redis集群可采用集群管理工具redis-sentinel管理redis集群,可通过利用集群管理工具redis-sentinel实现redis集群的负载均衡能力和错误恢复能力。

对于redis集群的负载均衡能力,由于集群管理工具redis-sentinel对该redis集群中的所有redis服务器进行分组,因此在将资源数据缓存到redis集群中时,可以将资源数据比较均衡地写入到用于缓存资源数据的redis服务器分组中。对于网管监控系统,因其主要包括资源数据、告警数据和性能数据,集群管理工具redis-sentinel将redis集群中的redis服务器分为三组, 分别用于缓存资源数据、告警数据和性能数据。假如用于缓存资源数据的redis服务器分组包括3台redis服务器,在实际应用中,可以将资源数据的资源唯一标识resid取模处理,根据取模结果将该资源数据分布式缓存到相应的redis服务器上,从而保证redis集群可以通过增加redis服务器实现资源数据的横向扩展。

对于redis集群的错误恢复能力,由于集群管理工具redis-sentinel对该redis集群中的用于缓存资源数据的多台redis服务器进行交叉配置,实现多台redis服务器的主从关系。若在执行某个任务的资源出现故障时,其从服务器执行同一任务的资源可以接着完成任务,从而保证redis集群可以通过主从redis服务器实现资源数据的高可用性。

此外,借助于redis服务器的持久化缓存特性,本实施例将资源数据按照资源唯一标识resid分布式缓存在redis集群的多台redis服务器上,使得重启后原来缓存的资源数据无需重新加载,从而能够实现资源数据的快速读取。

其中,对于redis集群的错误恢复能力的实现方案,具体为:

参照如5所示,图5为本实施例提供的redis集群中redis服务器的分布示意图,本实施例步骤s420中的资源数据按照资源唯一标识resid分布式缓存在redis集群中具体为:将资源数据按照其资源唯一标识resid分布式缓存在redis集群的多台redis服务器上,并在每台redis服务器上启动redis和redisslave服务进程,不同redis服务器上的redis和redisslave服务进程交叉配置实现多台redis服务器的主从关系。

则步骤s420中的根据接收到的资源唯一标识resid从redis集群中获取该资源唯一标识resid对应的资源数据的哈希表hashmap具体为:

将接收到的资源唯一标识resid映射到redis集群相应的redis服务器上,判断该相应的redis服务器的redis服务进程是否异常,

若该redis服务器的redis服务进程无异常,从该redis服务器的redis服务进程获取该资源唯一标识resid的资源数据的哈希表hashmap;

若该redis服务器的redis服务进程异常,从该redis服务器的从服务器的redisslave服务进程获取该资源唯一标识resid的资源数据的哈希表 hashmap。

由上可见,本实施例将资源数据进行分布式缓存,利用redis服务器分布式缓存的集群特性,实现了资源数据缓存的横向扩展、高可用和快速读取。

实施例三:

基于与实施例一相同的技术构思,本实施例提供了一种资源数据的查询客户端,资源数据按照资源唯一标识resid分布式缓存在redis集群中。

图6为本实施例提供的资源数据的查询客户端结构示意图,如图6所示,图6中的客户端包括:

资源查询接口61,用于接收查询指令,并从查询指令中获取待查询资源数据的资源唯一标识resid。

其中,当查询指令为单个资源查询指令时,资源查询接口61具体用于从单个资源查询指令中获取该资源唯一标识resid;当查询指令为条件查询指令时,资源查询接口61具体用于根据查询条件从搜索引擎solr中获取满足查询条件的资源唯一标识resid集合。

本地查询单元62,用于根据待查询资源数据的资源唯一标识resid查询本地ehcache缓存,其中该ehcache缓存采用rlu策略实现。

服务器查询单元63,用于在本地ehcache缓存中未查询到该资源唯一标识resid的资源数据时,将该资源唯一标识resid发送到redis集群中,并将redis集群返回的资源数据的哈希表hashmap作为查询结果,将查询结果组装成资源对象resobject记录到本地ehcache缓存中。

本实施例将资源数据进行分布式缓存,基于资源数据的分布式缓存,使得本地客户端可以通过ehcache实现本地缓存,避免频繁地远程从redis服务器获取数据,从而显著地加快数据读取速度;以及通过搜索引擎实现条件查询,保证条件查询速度。本实施例结合本地ehcache缓存和redis集群实现资源数据的快速查询,通过结合solr搜索引擎能够实现资源数据的条件查询,从而改进了传统网管监控系统的数据库查询方式带来的速度慢、灵活性差的问题。

实施例四:

基于与实施例二和三相同的技术构思,本实施例提供了一种资源数据的查询系统。

本实施例的资源数据的查询系统包括:资源数据查询客户端和redis集群,资源数据按照资源唯一标识resid分布式缓存在redis集群中。

本实施例中资源数据查询客户端组成单元和各单元的具体工作方式可以参见实施例三中的资源数据查询客户端,在此不再赘述。

本实施例中的redis集群,用于接收客户端发送的资源唯一标识resid,并根据接收到的资源唯一标识resid获取该资源唯一标识resid对应的资源数据的哈希表hashmap,以及将哈希表hashmap作为查询结果发送给客户端。

优选地,本实施例中的redis集群包括:多台redis服务器和集群管理单元;其中,资源数据按照其资源唯一标识resid分布式缓存在redis集群的多台redis服务器上,每台redis服务器上启动redis和redisslave服务进程,不同redis服务器上的redis和redisslave服务进程交叉配置实现多台redis服务器的主从关系;

集群管理单元,用于将接收到的资源唯一标识resid映射到redis集群相应的redis服务器上,并判断相应的redis服务器的redis服务进程是否异常,

若该redis服务器的redis服务进程无异常,从该redis服务器的redis服务进程获取该资源唯一标识resid的资源数据的哈希表hashmap;

若该redis服务器的redis服务进程异常,从该redis服务器的从服务器的redisslave服务进程获取该资源唯一标识resid的资源数据的哈希表hashmap。

需要说明的是,本实施例的资源数据的查询系统应用于网管监控系统。

综上所述,本发明公开了一种资源数据的查询方法、查询客户端和查询系统,本发明将资源数据进行分布式缓存,利用redis集群的负载均衡能力和错误恢复能力,实现了资源数据的可扩展性和高可用性;并且本发明基于资源数据的分布式缓存,还提供一种新型的资源数据的查询方法,通过借助ehcache实现本地缓存,避免频繁地远程从redis集群中获取资源数据,达 到加快资源数据读取速度的目的;通过借助搜索引擎实现条件查询,保证条件查询的查询速度。本发明结合本地ehcache缓存和redis集群能够实现资源数据的快速查询,以及结合solr搜索引擎实现了资源数据的条件查询,从而改进了传统网管监控系统的数据库查询方式带来的速度慢、灵活性差的问题。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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