一种redis调用监控方法和装置与流程

文档序号:11138277阅读:374来源:国知局
一种redis调用监控方法和装置与制造工艺

本发明涉及基于redis的分布式缓存集群的维护和管理领域,特别地涉及一种redis调用监控方法和装置。



背景技术:

随着技术的发展和人们生活习惯的改变,互联网在我们的生活中占据着越来越重要的地位;一方面给互联网相关的行业带来巨大的发展机会,但是爆发式的用户群体增长,也给互联网的开发和维护带来了巨大的挑战,而如何应对大规模的爆炸式的访问量的增长,也成为互联网行业开发的经久不变的命题。而在应对大量并发访问的解决方案中,基于分布式缓存技术的服务端解决方案基本是必不可少的,其高性能、动态扩展、高可用、易于开发等特性,能够为一个互联网产品带来几倍甚至几十上百倍的性能提升。

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的API。

Redis是一个高性能的key-value数据库。Redis的出现,很大程度补偿了memcached这类键/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

虽然目前基于redis的分布式缓存集群被广泛用于互联网产品,但是由于其本身仅提供一些简单的监控接口,所以当前对于基于redis的分布式缓存集群的监控都采用大致相同的方式:中心式监控。即整个 监控系统为一个中心节点,它会轮询所有需要监控的redis实例,调用redis自己实现的监控接口以获取redis状态信息,然后保存在监控系统中最后再通过合并统计等操作,形成监控报表(部署图详见图1)。基于容灾的策略和应对复杂的生产部署环境,在一个这样的监控系统中,监控中心可能会在系统不同位置部署多个,组成一个监控中心集群,互相对照监控数据以避免部署结构、网络环境对监控中心的影响。

现有的监控方案本身的设计结构决定了它始终有一个巨大的缺陷:监控中心和redis实例的网络环境和应用redis的网络环境可能区别很大,当应用redis实例的网络发生故障时,监控中心并不能感知到。

同时,由于缓存本身的高并发的特性,在qps上万的情况下,做到类似于例如mysql或者mssql的标准数据库那样精确细致的监控,所需要消耗的代价是非常巨大的,所以目前业内主要都是基于redis本身的监控接口,只能针对例如redis实例的qps、内存使用量、存储的键(key)的总数等进行监控。目前还没有一个对于redis具体调用信息的监控,往往都是内存超过限额直接清空,或者事后通过分析redis中保存的数据来了解具体redis中到底存储了什么数据。而对于redis调用失败等信息,也是在应用中而不是在监控中进行统计,当redis本身存活但是不能正常提供服务时,监控中心也不能及时发现。在现有技术中,仅仅可以实现redis调用的状态监控。本发明的目的是为了弥补现有技术中关于redis调用监控方面的缺失。



技术实现要素:

鉴于本领域中存在的上述问题,本发明提出了一种redis调用监控的方法和装置。在本申请技术方案中,根据键前缀进行合并监控统计以及通过代理采集监控信息是实现本监控方案的关键点。通过本方案,突破了传统的redis监控的内容限制,不仅能够监控redis实例本身的状态信息,还能够对真实调用内容进行一定的监控;同时也增加了应对复杂多变的生产环境的能力。所有监控数据均是来自真实redis调用的 数据,而不受监控中心和redis实例的网络环境的影响。这些特性对于保证分布式缓存集群的稳定和健壮都具有非常大的帮助,对于分布式缓存集群的运营和维护有巨大的促进作用。

根据本发明的一个方面,提供了一种redis调用监控方法。所述方法包括:通过前缀和后缀,拼接redis操作所需要的键;执行调用信息的埋点和数据采集,针对每一次调用的所采集信息,依据键的前缀进行合并,以获得带标记的监控信息;并且对针对每一次调用获得的带标记的监控信息进行统计,并将统计的信息上报给监控中心。

根据本发明的一个实施例,其中针对每一次调用的所采集信息为针对每一次调用的耗时,流量的信息。

根据本发明的一个实施例,还包括将统计的信息异步地上报给监控中心。

根据本发明的另一个方面,提供了一种redis调用监控装置。所述装置包括:键管理模块,用于通过前缀和后缀,拼接redis操作所需要的键;redis调用代理模块,用于执行调用信息的埋点和数据采集,针对每一次调用的所采集信息,依据键的前缀进行合并,以获得带标记的监控信息;以及本地统计模块,用于对针对每一次调用获得的带标记的监控信息进行统计,并将统计的信息上报给监控中心。

根据本发明的一个实施例,其中针对每一次调用的所采集信息为针对每一次调用的耗时,流量的信息。

根据本发明的一个实施例,其中所述本地统计模块还能够将统计的信息异步地上报给监控中心。

附图说明

附图用于更好地理解本发明,并不构成对本发明的不当限定。其中:

图1是现有技术的redis监控部署结构示意框图;

图2是根据本发明实施例的redis调用监控方法的示意流程图;

图3是根据本发明实施例的redis调用监控装置10的示意框图;以及

图4是根据本发明实施例的redis调用监控中的各模块的调用时序的示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图2是根据本发明实施例的一种redis调用监控方法的示意流程图。如图2所示,redis调用监控方法包括:步骤S01,通过前缀和后缀,拼接redis操作所需要的键;步骤S02,执行调用信息的埋点和数据采集,针对每一次调用的所采集信息,依据键的前缀进行合并,以获得带标记的监控信息;以及步骤S03,对针对每一次调用获得的带标记的监控信息进行统计,并将统计的信息上报给监控中心。

根据本发明的一个实施例,在redis调用监控方法中,其中针对每一次调用的所采集信息为针对每一次调用的耗时,流量的信息。

根据本发明的一个实施例,redis调用监控方法还包括将统计的信息异步地上报给监控中心。

图3是根据本发明实施例的一种redis调用监控装置10的示意框图。如图3所示,redis调用监控装置10包括:键管理模块110,用于通过前缀和后缀,拼接redis操作所需要的键;redis调用代理模块120,用于执行调用信息的埋点和数据采集,针对每一次调用的所采集信息,依据键的前缀进行合并,以获得带标记的监控信息;以及本地统计模块130,用于对针对每一次调用获得的带标记的监控信息进行统计,并将统计的信息上报给监控中心。

根据本发明的实施例的装置10,其中针对每一次调用的所采集信息为针对每一次调用的耗时,流量的信息,并且其中所述本地统计模块还能够将统计的信息异步地上报给监控中心。

本发明技术方案在现有的技术方案进行了改进。图4是根据本发明实施例的redis调用监控中的各模块的调用时序的示意图。如图4所示,新的技术方案在redis调用的过程中进行了代理,在代理中对redis的调用情况、调用结果等信息进行了采集,采集的信息在经过合并、统计之后,上报给监控中心。整个方案由三部分构成:键管理模块、redis调用代理模块、本地统计模块组成。

键管理模块:虽然单个redis实例的qps少则数千多则数万,但是所有的调用依然还是有迹可循的,即一般来说所有redis的键基本上都是通过前缀参数(一般是根据业务类型确定)和后缀(一般是id或者uid等唯一标识信息)拼接而成。键管理模块的主要功能则是通过前缀和后缀拼接真实redis操作所需要的键。

调用代理模块:调用代理模块是对redis客户端的一个封装,在其中执行调用信息的埋点和数据采集,同时把键的前缀信息标记到这次redis调用中,即将针对每一次调用的采集的信息,依据键的前缀进行合并,以获得带标记的监控信息。在调用结束后将带标记的监控信息交由本地统计模块。其中通过埋点和数据采集可以得到例如针对每一 次调用的耗时,流量等的信息,即采集的信息可以是调用的耗时,流量等的信息。在实际生产环境中由于redis的高并发,监控并记录每一次调用是消耗非常大的动作,而根据本发明所需要进行统计和传输的数据量则是非常小且可以接受的。

本地统计模块:本地统计模块一方面需要将redis调用代理模块采集的信息进行统计,同时还需要异步地将统计的信息上报给监控中心。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

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