监控方法、分布式车载系统、交通工具和可读存储介质与流程

文档序号:26444131发布日期:2021-08-27 13:44阅读:111来源:国知局
监控方法、分布式车载系统、交通工具和可读存储介质与流程

本申请涉及数据处理技术领域,特别涉及一种监控方法、分布式车载系统、交通工具和可读存储介质。



背景技术:

目前,车载大屏或客户端会出现由于获取的数据不是想要的数据,会对一个应用程接口进行无意义的频繁请求,会导致流量的过度消耗的情况。可以理解地,由于此种场景不属于后台应用的异常,难以及时发现,会导致客户端流量陡然增多,浪费用户大屏流量,造成损失。

这种情况目前的解决方案是靠运维发现,并且,现在的常用记录问题的方式都是通过日志记录。然而日志记录的不是实时数据,会导致问题发现延迟,从而造成不必要的损失。



技术实现要素:

本申请实施方式提供一种监控方法、分布式车载系统、交通工具和可读存储介质。

本申请实施方式提供一种接口请求的监控方法,用于分布式车载系统。所述监控方法包括:利用拦截器拦截预设接口对应的接口请求;基于远程字典服务创建滑动窗口,所述滑动窗口根据所述接口请求的请求时间将预设数量的所述接口请求记录在有序集合中;在所述拦截器拦截到所述接口请求时,确定当前时间和所述有序集合中序列头部对应所述接口请求的请求时间之间的时间差;在所述时间差小于预设时间阈值的情况下,发送报警信息。

在某些实施方式中,所述利用拦截器拦截预设接口对应的接口请求之前,所述监控方法包括:通过继承适配器类并设置预处理实现所述拦截器;通过继承配置类注册所述拦截器。

在某些实施方式中,所述确定当前时间和所述有序集合中序列头部对应所述接口请求的请求时间之间的时间差之前,还包括:在所述有序集合的接口请求达到所述预设数量的情况下,删除所述有序集合中序列头部对应的所述接口请求和对应的请求时间;将拦截到的所述接口请求和所述当前时间添加到所述有序集合的序列尾部。

在某些实施方式中,所述在所述时间差小于预设时间阈值的情况下,发送报警信息,包括:通过邮件、短信和/或即时通信工具发送所述报警信息。

在某些实施方式中,所述监控方法包括:发送所述报警信息后,在所述远程字典服务的键值对中记录所述报警信息并设置对应的过期时间;在所述拦截器拦截到所述接口请求且再次检测到所述时间差小于预设时间阈值的情况下,查询所述远程字典服务中是否存在所述报警信息;若不存在所述报警信息,则再次发送新的报警信息;若存在所述报警信息,则取消发送所述新的报警信息。

在某些实施方式中,所述利用拦截器拦截预设接口对应的接口请求,包括:利用注解将配置文件映射到所述拦截器,以使所述利用拦截器拦截预设接口对应的接口请求。

在某些实施方式中,所述利用拦截器拦截预设接口对应的接口请求,包括:获取所述接口请求的统一资源标识符;在所述预设接口配置有所述接口请求的统一资源标识符的情况下,拦截所述接口请求。

本申请实施方式还提供一种分布式车载系统。所述分布式车载系统包括:拦截模块、创建模块、时间差确定模块和报警模块。所述拦截模块用于利用拦截器拦截预设接口对应的接口请求;所述创建模块用于基于远程字典服务创建滑动窗口,所述滑动窗口根据所述接口请求的请求时间将预设数量的所述接口请求记录在有序集合中;所述时间差确定模块用于在所述拦截器拦截到所述接口请求时,确定当前时间和所述有序集合中序列头部对应所述接口请求的请求时间之间的时间差;所述报警模块用于在所述时间差小于预设时间阈值的情况下,发送报警信息。

本申请实施方式还提供一种交通工具。所述交通工具包括处理器和存储器,所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现上述任意一项实施方式所述的监控方法。

本申请实施方式还提供一种计算机程序的非易失性计算机可读存储介质。当所述计算机程序被一个或多个处理器执行时,实现上述任意一项实施方式所述的监控方法。

本申请的监控方法基于远程字典服务实现利用滑动窗口算法监控项目中接口请求的调用频率,达到监控接口目的,可以实时发现接口流量异常等情况,及时告警,及时发现问题并急速处理,减少损失。

本申请实施方式的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请的上述和/或附加的方面和优点可以从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:

图1是本申请某些实施方式的监控方法的流程示意图;

图2是本申请某些实施方式的分布式车载系统的结构示意图;

图3是本申请某些实施方式的监控方法中滑动窗口的场景示意图;

图4是本申请某些实施方式的监控方法的流程示意图;

图5是本申请某些实施方式的分布式车载系统的结构示意图;

图6是本申请某些实施方式的监控方法的流程示意图;

图7是本申请某些实施方式的分布式车载系统的结构示意图;

图8是本申请某些实施方式的监控方法的流程示意图;

图9是本申请某些实施方式的监控方法的流程示意图;

图10是本申请某些实施方式的分布式车载系统的结构示意图;

图11是本申请某些实施方式的监控方法的流程示意图;

图12是本申请某些实施方式的分布式车载系统中拦截模块的结构示意图;

图13是本申请某些实施方式的监控方法的流程示意图;

图14是本申请某些实施方式的分布式车载系统中拦截模块的结构示意图;

图15是本申请某些实施方式的交通工具的结构示意图;

图16是本申请某些实施方式的计算机可读存储介质的结构示意图。

具体实施方式

下面详细描述本申请的实施方式,所述实施方式的示例在附图中示出,其中,相同或类似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本申请的实施方式,而不能理解为对本申请的实施方式的限制。

目前,车载大屏或客户端会出现由于获取的数据不是想要的数据,会对一个应用程序接口进行无意义的频繁请求,会导致流量的过度消耗的情况。这种情况目前的解决方案是靠运维发现,其中,运维一般是指对大型组织已经建立好的网络软硬件的维护,其中传统的运维是指信息技术运维(it运维)。在发现问题后,现在的常用记录问题的方式都是通过日志记录。然而日志记录的不是实时数据,会导致问题发现延迟,从而造成不必要的损失。

为了解决上述问题,请参阅图1,本申请提供了一种接口请求的监控方法,用于分布式车载系统。该监控方法包括:

02:利用拦截器拦截预设接口对应的接口请求;

04:基于远程字典服务创建滑动窗口,滑动窗口根据接口请求的请求时间将预设数量的接口请求记录在有序集合中;

06:在拦截器拦截到接口请求时,确定当前时间和有序集合中序列头部对应接口请求的请求时间之间的时间差;

08:在时间差小于预设时间阈值的情况下,发送报警信息。

请参阅图2,本申请还提供一种分布式车载系统10。分布式车载系统10包括拦截模块12、创建模块14、时间差确定模块16、报警模块18。

步骤01可以由拦截模块12实现,步骤02可以由创建模块14实现,步骤03可以由时间差确定模块实现,步骤04可以由报警模块18实现。也即是说,拦截模块12用于利用拦截器拦截预设接口对应的接口请求;创建模块14用于基于远程字典服务创建滑动窗口,滑动窗口根据接口请求的请求时间将预设数量的接口请求记录在有序集合中;时间差确定模块16用于在拦截器拦截到接口请求时,确定当前时间和有序集合中序列头部对应接口请求的请求时间之间的时间差;报警模块18用于在时间差小于预设时间阈值的情况下,发送报警信息。

具体地,车载大屏对应的后台服务为了避免单点故障(单点故障是指引发系统失效的单项故障,会给整个系统带来灾难性的破坏),因此,目前的车载大屏的后台服务系统都是采用分布式系统架构。分布式系统架构,顾名思义,就是将多软件架构设计分散开来,运行在多个服务器上。

可以理解地,若通过传统的利用滑动窗口实现告警的方式针对现代的分布式系统架构发出告警信息,会出现误差。具体地,传统的方式针对现代的多个服务器端的分布式架构的所产生告警方法可能为:若一个客户端在同一时间内对多个服务器端同时进行请求访问,且在达到规定时间内的规定访问次数时,系统会发出告警信息。则对应地,例如,服务器端1和服务器端2均被同一个客户端1访问,若设置该客户端1在20秒访问服务器端的次数为20次时,则系统会发出告警信息。当客户端1对服务器端1在20秒内发出20次访问请求,由于同一时间,客户端1也会对服务器端2在20秒内发出19次访问请求。因此,此时服务器端1和服务器端2在20秒内总共被客户端1访问的次数为39次,系统才发出告警信息,导致系统发出告警信息的时机与原先设置的20秒访问20次则发出告警信息的标准产生偏差。

而本申请的接口请求的监控方法针对分布式系统架构,对不同客户端对应的不同服务器端的不同接口分别设置了不同的发出告警信息的访问请求次数及访问时间,能够适应现代的分布式系统架构。

可以理解地,在本申请中,客户端为请求服务的端,即用户使用的端。软件层面的客户端指的是ie浏览器、qq、暴风影音等。软件层面的服务器指的是web服务器,如apache,对外发布服务,来提供服务,安装在硬件上使用。对于简单的apache,就是给电脑开一个web服务,设置端口,客户端可以通过浏览器访问该服务器电脑。比如,用户在firefox浏览器中输入百度ip,浏览器中弹出来百度首页后,搜索内容1,这时候会得到内容1相关的网页。此时,搜索用户就是在接受百度服务器端的服务。此时,firefox浏览器是用户的客户端,服务器端是远端的百度的电脑。

预设接口指的是应用程序接口(api),也即是指的客户端与服务器端之间连接的应用程序接口。本申请的某些实施例中,以使用springboot1.5.12版本的分布式车载系统为例进行说明,在springboot1.5.12版本的分布式车载系统的开发过程中,可以在代码中新增一个告警拦截器对该应用程序接口中的接口请求先进行拦截,进而可以通过拦截器进行监控该预设接口中的接口请求的访问次数及访问时间。

然后,基于远程字典服务创建滑动窗口,滑动窗口根据接口请求的请求时间将预设数量的接口请求记录在有序集合中。其中,远程字典服务(remotedictionaryserver,redis)是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志类型、key-value数据库,并提供多种语言的应用程序接口(api)。redis是一个内存数据库,与传统的mysql,oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多。

有序集合为远程字典服务(redis)的五种数据结构中的一种。有序集合用于存储键值对(键key-值value)。有序集合的键(key)被称为成员(member),每个成员都是各不相同的。有序集合的值(value)则被称为分值(score),分值必须为浮点数。有序集合是redis里面唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排列顺序访问元素的结构。

可以理解地,本申请的监控方法可以在拦截器中根据参数配置,在远程字典服务中利用有序集合的数据接口定义请求接口的滑动窗口大小。当拦截器拦截到拦截时间仍然在请求时间内的接口请求,但该接口请求的次数超过滑动窗口大小,则将该接口请求添加在滑动窗口的尾部,并去掉此时在该拦截时间时对应滑动窗口的头部的接口请求的请求数据,从而具有一个固定大小的滑动窗口。

预设数量的接口请求即指的是请求访问的次数,例如,最大的请求访问次数为:在请求时间为60秒时,60秒内的预设数量为接口请求60次,则可以将滑动窗口大小记录并定义为请求访问60次,也即是,滑动窗口大小此时只允许存储最多60次接口请求,若滑动窗口中有超过60次接口请求,则去掉头部的接口请求数据(如图3中虚线所示的请求),保持只有60次接口请求(如图3所示)。需要说明的是,本申请的监控方法虽然固定了滑动窗口的大小,但是没有固定最后一次接口请求访问对应的当前时间。

此外,本申请的监控方法还可以动态定义不同接口的滑动窗口大小,对不同的接口利用有序结合的数据结构实现固定长度顺序队列,适应了现代分布式系统的架构。

因此,在拦截器拦截到接口请求时,确定当前时间和有序集合中序列头部对应接口请求的请求时间之间的时间差,在时间差小于预设时间阈值的情况下,发送报警信息。具体地,本申请的监控方法可以通过比较最新一次拦截的接口请求的当前时间与头部对应接口请求的请求时间之间的时间差来确定请求次数(例如为前文所述的60次)的请求用时是否少于预设时间阈值(例如前文所述的60秒),进而判定该请求访问次数是否频繁,若少于请求时间(60秒),则控制分布式车载系统10的报警模块18发出报警信息。

其中,预设时间阈值时根据请求次数对应需要的正常请求时间所决定的。例如,某个接口请求正常的访问时间为60秒60次,则该预设时间阈值为60秒。再例如,某个接口请求正常的访问时间为20秒2次,则该预设时间阈值为20秒。

本申请的监控方法基于远程字典服务实现利用滑动窗口算法监控项目中接口请求的调用频率,达到监控接口目的,可以实时发现接口流量异常等情况,及时告警,及时发现问题并急速处理,减少损失。

请参阅图4,在某些实施例中,在步骤02之前,该监控方法还包括:

011:通过继承适配器类并设置预处理实现拦截器;

012:通过继承配置类注册拦截器。

请结合图5,分布式车载系统10还包括拦截器生成模块11。

步骤011和步骤012可以由拦截器生成模块11实现。也即是说,拦截器生成模块11用于通过继承适配器类并设置预处理实现拦截器,并通过继承配置类注册拦截器。

具体地,本申请中的拦截器为代码中的一段,该拦截器可以基于安卓系统注册生成,也可以基于苹果系统或其他系统注册生成。也即是,适配器类可以是基于安卓系统的手动拦截适配器(handlerinterceptoradapter),设置预处理即为重写prehandler。配置类也可以是基于安桌系统的配置方式(webmvcconfigureradapter)。在申请的其他实施例中,若基于苹果系统或其他系统,则设置与该系统对应的适配器类和配置类,以生成与该系统匹配的拦截器,从而使得本申请的监控方法可以适用于不同的操作系统。

请参阅图6,在步骤06之前,还包括:

051:在有序集合的接口请求达到预设数量的情况下,删除有序集合中序列头部对应接口请求和对应的请求时间;

052:将拦截到的接口请求和当前时间添加到有序集合的序列尾部。

请结合图7,分布式车载系统10还包括删除及添加模块15。

步骤051和步骤052可以由删除及添加模块15实现。也即是说,删除及添加模块15用于在有序集合的接口请求达到预设数量的情况下,删除有序集合中序列头部对应接口请求和对应的请求时间;将拦截到的接口请求和当前时间添加到有序集合的序列尾部。

具体地,在有序集合(zset)中存储的接口请求达到预设数量,例如预设数量为60次接口请求时,则可以删除此时有序集合中序列头部对应的接口请求和对应的请求时间,并将新拦截到的接口请求和当前时间添加到有序集合的序列尾部,从而保证滑动窗口大小固定。此外,本申请的监控方法通过将最新拦截的接口请求和对应的当前时间记录下来,可以比较头部的请求时间与当前时间的时间差,在时间差小于预设时间阈值的情况下,发送报警信息。

另外,在有序集合中存储的接口请求没有达到预设数量时,则直接将拦截的接口请求添加至有序集合的尾部即可。

请参阅图8,在某些实施例中,步骤08包括:

081:通过邮件、短信和/或即时通信工具发送报警信息。

请结合图2,步骤081可以由报警模块18实现。也即是,报警模块18用于通过邮件、短信和/或即时通信工具发送报警信息。

具体地,当报警模块18检测到接口请求的最新拦截的请求的时间与第一次接收接口请求的头部序列的接口请求的时间之间的时间差小于预设时间阈值的情况下,报警模块18可以通过邮件、短信和/或即时通信工具(例如qq、微信、钉钉等即时通信工具)发送报警信息,以提示该异常接口请求对应发出的客户端的用户,提示请求访问出现异常,从而使得用户可以及时发现异常,并作出对应的处理动作,及时止损。

请参阅图9,在某些实施例中,该监控方法包括:

091:发送报警信息后,在远程字典服务的键值对中记录报警信息并设置对应的过期时间;

092:在拦截器拦截到接口请求且再次检测到时间差小于预设时间阈值的情况下,查询远程字典服务中是否存在报警信息;

093:若不存在报警信息,则再次发送新的报警信息;若存在报警信息,则取消发送新的报警信息。

请结合图10,分布式车载系统10还包括过期时间记录模块191、报警信息查询模块192和报警处理模块193。

步骤091可以由过期时间记录模块191实现,步骤092可以由报警信息查询模块192实现,步骤093可以由报警处理模块193实现。也即是,过期时间记录模块191用于发送报警信息后,在远程字典服务的键值对中记录报警信息并设置对应的过期时间;报警信息查询模块192用于在拦截器拦截到接口请求且再次检测到时间差小于预设时间阈值的情况下,查询远程字典服务中是否存在报警信息;报警处理模块193用于若不存在报警信息,则再次发送新的报警信息;若存在报警信息,则取消发送新的报警信息。

具体地,远程字典服务(redis)的键值对(key-value)可以记录报警信息并设置对应的过期时间。

例如,假设设置的过期时间为1分钟,即每个频繁请求的接口请求的告警频率为1分钟一次。

在一个例子中,若在过期时间1分钟以内,拦截器拦截到一个接口请求1,且再次检测到时间差小于预设时间阈值的情况下,即该拦截到的接口请求1也属于频繁请求的其中一次请求。当分布式车载系统10通过报警信息查询模块192查询到远程字典服务中存在该接口请求1对应的报警信息记录,此时报警处理模块193就不需要再次发送新的报警信息,避免频繁地发送报警信息,提升用户体验。

在另一个例子中,若在过期时间1分钟以内,拦截器拦截到一个接口请求2,且再次检测到时间差小于预设时间阈值的情况下,即该拦截到的接口请求2也属于频繁请求的其中一次请求。当分布式车载系统10通过报警信息查询模块192查询到远程字典服务中不存在该接口请求2对应的报警信息记录,此时报警处理模块193就需要再次发送新的报警信息,即本次报警信息代表着再次发现在应用程序接口中存在频繁请求。可以理解地,在过期时间内,远程字典服务一直记录着该接口请求2对应的报警信息记录,在过期时间过后,则远程字典服务会将该接口请求2对应的报警信息记录删除,即在过期时间之后,远程字典服务中不存在该报警信息记录。

本申请的监控方法利用远程字典服务记录报警信息且设置报警信息的过期时间,可以避免同一个异常接口请求频繁地发送报警信息,提升用户体验。

请参阅图11,步骤02包括:

021:利用注解将配置文件映射到拦截器,以使利用拦截器拦截预设接口对应的接口请求。

请参阅图12,拦截模块12包括注解映射单元121。

步骤021可以由注解映射单元121实现。也即是,注解映射单元121用于利用注解将配置文件映射到拦截器,以使利用拦截器拦截预设接口对应的接口请求。

可以理解地,如果说注释是写给人看的,那么注解就是写给程序看的。注解更像一个标签,贴在一个类、一个方法或者字段上。注解的目的是为当前读取该注解的程序提供判断依据。比如程序只要读到加了@test的方法,就知道该方法是待测试方法,又比如@before注解,程序看到这个注解,就知道该方法要放在@test方法之前执行。

本申请的监控方法通过注解将配置文件映射到拦截器,配置文件包括预设接口的相关信息,因此通过将配置文件映射到拦截器,可以保证拦截器拦截的接口请求与配置文件中的预设接口相对应。例如,若某个接口请求a在配置文件中没有与其对应的预设接口a’,则拦截器不会对该接口请求a进行拦截,会直接让该接口请求a通过。若某个接口请求b在配置文件中有与其对应的预设接口b’,则拦截器会对该接口请求b进行拦截。

请参阅图13,在某些实施例中,步骤02还包括:

022:获取接口请求的统一资源标识符;

023:在预设接口配置有接口请求的统一资源标识符的情况下,拦截接口请求。

请结合图14,拦截模块12还包括获取单元122和拦截单元123。

步骤022可以由获取单元122实现,步骤023可以由拦截单元123实现。也即是,获取单元122用于获取接口请求的统一资源标识符(uri);拦截单元123用于在预设接口配置有接口请求的统一资源标识符的情况下,拦截接口请求。

具体地,统一资源标识符可以为uri或其他标识符。在本申请的某些实施例中,接口请求可以设置有与预设接口一一对应的统一资源标识符,便于拦截器快速拦截与预设接口相对应的接口请求。

请参阅图15,本申请还提供一种交通工具20。该交通工具20包括处理器21和存储器22,存储器22上存储有计算机程序221,当计算机程序221被处理器21执行时,实现上述任意一个实施例中所述的监控方法。交通工具20可以指的是任意类型的车辆或其他应用分布式车载系统的交通工具。

请参阅图16,本申请还提供一种计算机程序的非易失性计算机可读存储介质200。当计算机程序210被一个或多个处理器220执行时,实现上述任意实施例的监控方法。

例如,计算机程序210被处理器220执行时实现以下应用管理方法的步骤:

02:利用拦截器拦截预设接口对应的接口请求;

04:基于远程字典服务创建滑动窗口,滑动窗口根据接口请求的请求时间将预设数量的接口请求记录在有序集合中;

06:在拦截器拦截到接口请求时,确定当前时间和有序集合中序列头部对应接口请求的请求时间之间的时间差;

08:在时间差小于预设时间阈值的情况下,发送报警信息。

可以理解,计算机程序211包括计算机程序代码。计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、以及软件分发介质等。

本申请的交通工具20和计算机可读存储介质200基于远程字典服务实现利用滑动窗口算法监控项目中接口请求的调用频率,达到监控接口目的,可以实时发现接口流量异常等情况,及时告警,可以及时发现问题,可以急速处理,减少损失。

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