一种数据库访问装置、系统及方法与流程

文档序号:11155604阅读:248来源:国知局
一种数据库访问装置、系统及方法与制造工艺

本发明涉及数据库访问技术领域,更具体地说,涉及一种数据库访问装置、系统及方法。



背景技术:

目前客户端程序对数据库的连接和操作,一般由实现数据库协议的驱动程序来实现。客户端程序调用数据库驱动程序接口,即可很方便地对数据库进行增、删、改、查。当用户访问量增加,就会产生大量数据库连接,如果连接达到数据库连接上限,客户端则会出现等待,如在一定的时间仍未连接上,客户端则出现超时。虽然可以采取增加机器性能、数据库读写分离、增加多个数据库实例、使用内存缓存等方式解决大并发,但还是可能被大量正常或恶意的访问造成系统繁忙或宕机。特别是在企业发展初期或产品推出初期,使用的系统相对简单,扩展性差,难于评估用户访问量,无法抵挡突然大量用户的访问而影响系统的使用。

因此,如何在对数据库访问的基础上,减少由于大量或者恶意的访问造成系统繁忙或者宕机是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种数据库访问装置、系统及方法,以实现在对数据库访问的基础上,减少由于大量或者恶意的访问造成系统繁忙或者宕机。

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

一种数据库访问装置,包括:

接口模块,用于接收业务逻辑发送的访问请求及目标策略,调用策略应用模块获取所述访问请求的执行结果,根据所述执行结果调用数据库访问模块访问数据库;

策略应用模块,用于收集实时监控指标数据,根据实时监控指标数据及所述目标策略确定所述访问请求的执行结果,并将所述执行结果发送至所述接口模块;

所述数据库访问模块,用于根据所述接口模块的调用,对数据库进行访问。

其中,所述策略应用模块包括:

执行结果确定子模块,用于根据实时监控指标数据及所述目标策略判定所述访问请求的执行结果;其中所述目标策略包括:单项指标判定策略或者综合指标判定策略。

其中,所述策略应用模块包括:

监控指标收集子模块,用于实时收集数据库访问信息、数据库运行信息及数据库所在服务器的性能信息中的至少一者。

其中,所述数据库访问模块包括:

数据库访问监控子模块,用于收集数据库访问信息,并将所述数据库访问信息发送至所述监控指标收集子模块,所述数据库访问信息包括:当前调用使用连接数信息、平均每秒连接数信息和平均响应时间信息。

一种数据库访问系统,包括:上述任意一项所述的数据库访问装置,以及监控装置;

所述监控装置用于实时收集数据库运行信息及数据库所在服务器的性能信息,并将所述运行信息及所述性能信息发送至所述策略应用模块。

其中,所述监控装置包括:

数据库监控模块,用于获取数据库的运行信息,并将所述运行信息发送至监控汇总模块;所述运行信息包括:当前数据库连接数信息、剩余数据库连接数信息和内存占用信息;

服务器监控模块,用于获取数据库所在服务器的性能信息,并将所述性能信息发送至监控汇总模块;所述性能信息包括:CPU使用率信息、IO性能信息和内存使用情况信息;

监控汇总模块,用于将所述运行信息和所述性能信息发送至所述策略应用模块。

其中,所述数据库访问装置为应用程序内的SDK。

一种数据库访问方法,包括:

收集实时监控指标数据;

接收业务逻辑发送的访问请求及目标策略;

根据实时监控指标数据及所述目标策略,确定所述访问请求的执行结果;

利用所述执行结果响应所述访问请求,实现对数据库的访问。

其中,所述目标策略包括:单项指标判定策略或者综合指标判定策略。

其中,所述收集实时监控指标数据,包括:

实时收集数据库访问信息、数据库运行信息及数据库所在服务器的性能信息中的至少一者。

通过以上方案可知,本发明实施例提供的一种数据库访问装置,包括:接口模块,用于接收业务逻辑发送的访问请求及目标策略,调用策略应用模块获取所述访问请求的执行结果,根据所述执行结果调用数据库访问模块访问数据库;策略应用模块,用于收集实时监控指标数据,根据实时监控指标数据及所述目标策略确定所述访问请求的执行结果,并将所述执行结果发送至所述接口模块;所述数据库访问模块,用于根据所述接口模块的调用,对数据库进行访问;

可见,在本方案中,业务逻辑发送访问请求时会将与访问请求对于的目标策略一同发送,通过数据库访问装置根据实时监控指标数据及目标策略,对访问请求进行判断,得到相应的执行结果,根据该执行结果响应访问请求,从而对数据库的访问进行控制,避免由于大量或者恶意的访问造成系统繁忙或者宕机;本发明还公开了一种数据库访问系统及方法,同样能实现上述技术效果。

附图说明

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

图1为本发明实施例公开的一种数据库访问装置结构示意图;

图2为本发明实施例公开的一种数据库访问系统结构示意图;

图3为本发明实施例公开的另一种数据库访问系统结构示意图;

图4为本发明实施例公开的一种数据库访问方法流程图。

具体实施方式

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

本发明实施例公开了一种数据库访问装置、系统及方法,以实现对数据库的访问的基础上,减少由于大量或者恶意的访问造成系统繁忙或者宕机。

参见图1,本发明实施例提供的一种数据库访问装置100,包括:

接口模块101,用于接收业务逻辑发送的访问请求及目标策略,调用策略应用模块获取所述访问请求的执行结果,根据所述执行结果调用数据库访问模块访问数据库;

具体的,本实施例中的接口模块101将对数据库的访问调用封装成接口的方法,给程序的业务逻辑调用,同时根据调用方对所选指标的目标策略进行预设,调用策略应用模块102,判断是否达到预设条件,最后根据判断结果调用数据库访问模块103访问数据库。业务逻辑在调用接口模块101时,可以设置单项指标、综合性能指标。比如,接口模块提供的设置指标的方法:

setStrategy(单项指标1,单项指标1值)

setStrategy(综合指标1,综合指标1值)

setStrategy(单项指标1,单项指标1值,单项指标2,单项指标2值,综合指标1,综合指标1值,……)。

业务逻辑设置完指标策略后,调用接口模块101提供的select/update/delete等数据库操作方法,并返回状态或数据库返回结果。这里的状态可能是1.策略阻断,未进行数据库操作;2.数据库连接异常。程序的业务逻辑可以根据返回状态或结果进行相应处理。

策略应用模块102,用于收集实时监控指标数据,根据实时监控指标数据及所述目标策略确定所述访问请求的执行结果,并将所述执行结果发送至所述接口模块;

其中,所述策略应用模块包括:

监控指标收集子模块,用于实时收集数据库访问信息、数据库运行信息及数据库所在服务器的性能信息中的至少一者;

执行结果确定子模块,用于根据实时监控指标数据及所述目标策略判定所述访问请求的执行结果;其中所述目标策略包括:单项指标判定策略或者综合指标判定策略。

具体的,本实施例中的策略应用模块中收集的数据包括数据库访问信息、数据库运行信息及数据库所在服务器的性能信息中的至少一者;策略应用模块接收到接口模块101的调用请求时,根据监控指标数据以及业务逻辑发送的目标策略,对访问请求进行进行分析,得到执行结果,这里对访问请求进行分析判断时,有单项指标的判断,也有综合指标的判断,综合指标是对多个单项指标的综合计算到出的结果值,有利于综合评估,防止忽略个别指标。

具体的,策略应用模块102接收到监控指标数据时,会维护一个实时的指标监控信息映射表,由数据库访问模块103和在服务器中的监控装置实时汇总更新,或者由单项的指标进行综合计算得出。比如,映射表是一个MAP数据结构,key=单项指标或综合指标名,value=指标对应的当前值,其数据结构如:

CPU使用率:40

服务器剩余内存:600(单位MB)

当前数据库连接数:90

剩余数据库连接数:10

剩余数据库连接数百分比:40

平均响应时间:100(单位毫秒)

综合指标1:90(100分为最好,0分为最差)

其中,CPU使用率、服务器剩余内存、当前数据库连接数、剩余数据库连接数、剩余数据库连接数百分比可由监控装置获得,平均响应时间可由数据库访问模块获得。

所述数据库访问模块103,用于根据所述接口模块的调用,对数据库进行访问。

其中,所述数据库访问模块包括:

数据库访问监控子模块,用于收集数据库访问信息,并将所述数据库访问信息发送至所述监控指标收集子模块,所述数据库访问信息包括:当前调用使用连接数信息、平均每秒连接数信息和平均响应时间信息。

具体的,本实施例中的数据库访问模块103由接口模块101调用,连接并访问数据库,同时统计数据库的访问信息,包括当前调用使用连接数、平均每秒连接数、平均响应时间等,上报给策略应用模块。数据库访问模块实现数据库的连接访问协议,能够连接并访问数据库。

具体的,本方案中的数据访问装置给具体的业务逻辑调用,业务逻辑根据业务特点和数据访问装置可选的监控指标数据和策略,预设对数据库的访问要求,即本实施例中业务逻辑发送的目标策略。这里的监控指标数据包括:数据库剩余连接和总连接数百分比、数据库所在服务器的CPU使用率,IO性能等。

并且,业务逻辑预设的策略包括但不限于:1.当CPU使用率超过60%,不对数据库进行操作;2.当CPU使用率超过60%,30%的调用进行数据库的操作,当CPU使用率超过80%,所有调用不对数据库进行操作;3.当连接数剩余30%时,不对数据库进行操作;4.综合指标小于30分时(100分为最好,0分为最差)。

下面对本发明实施例提供的数据库访问系统进行介绍,下文描述的数据库访问系统与上文描述的数据库访问装置可以相互参照。

参见图2,本发明实施例提供的一种数据库访问系统,包括上述实施例所述的数据库访问装置100,以及监控装置200;

所述监控装置200用于实时收集数据库运行信息及数据库所在服务器的性能信息,并将所述运行信息及所述性能信息发送至所述策略应用模块。

具体的,本实施例中的数据库访问系统可包括数据访问装置和监控装置;数据访问装置给应用程序中的业务逻辑调用,在通常的软件设计中,具体是由数据访问层来调用数据访问装置,对数据库进行读写等操作。监控装置用于收集和监控数据库及数据库所在的服务器的运行数据、性能数据,并反馈给数据访问装置,数据访问装置根据监控装置的反馈结果,以及业务逻辑中对数据的访问策略,执行对数据库的操作。

需要说明的是,本实施例中的监控装置200可以为运行在数据库所在服务器的程序,用于监控和收集数据库运行信息和服务器系统信息,这些信息将反馈给数据访问装置,作为数据库的访问策略。

基于上述实施例,参见图3,在本实施例中所述监控装置200包括:

数据库监控模块201,用于获取数据库的运行信息,并将所述运行信息发送至监控汇总模块;所述运行信息包括:当前数据库连接数信息、剩余数据库连接数信息和内存占用信息;

具体的,本方案中的数据库监控模块201:通过shell脚本、数据库命令,实时或定期获取数据库的运行信息,然后将获取的信息上报给监控汇总模块。数据库运行信息包括数据库的连接数,内存占用等。通常情况下,数据库会收集统计与数据库运行相关的信息,并提供相应的工具或者命令进行查看。

服务器监控模块202,用于获取数据库所在服务器的性能信息,并将所述性能信息发送至监控汇总模块;所述性能信息包括:CPU使用率信息、IO性能信息和内存使用情况信息;

具体的,本方案中的服务器监控模块202:通过shell脚本、操作系统命令和工具,实时或定期获取服务器的信息,然后将获取的信息上报给监控汇总模块。服务器信息包括CPU使用率、IO性能、内存使用情况等,可以通过系统命令获取到。

监控汇总模块203,用于将所述运行信息和所述性能信息发送至所述策略应用模块。

具体的,本方案中监控汇总模块203可将获取的信息推送给数据访问装置100,或者由数据访问装置100主动获取。

其中,所述数据库访问装置为应用程序内的SDK。

需要说明的是,本实施例中的数据访问装置100是一个可独立运行的程序,也可以是一个SDK(Software Development Kit,软件开发工具包)。如果是独立运行的程序,那么数据访问装置部署于应用程序之外,业务逻辑通过接口(rpc、http/json等访问协议)进行调用。但通常情况下,数据访问模块会根据不同的开发语言,封装成SDK,由程序进行本地方法调用。因此,本发明中的数据访问装置将作为SDK进行描述说明。

下面对本发明实施例提供的数据库访问方法进行介绍,下文描述的数据库访问方法与上文描述的数据库访问装置可以相互参照。

参见图4,本发明实施例提供的一种数据库访问方法,包括:

S101、收集实时监控指标数据;

S102、接收业务逻辑发送的访问请求及目标策略;

S103、根据实时监控指标数据及所述目标策略,确定所述访问请求的执行结果;

S104、利用所述执行结果响应所述访问请求,实现对数据库的访问。

其中,所述目标策略包括:单项指标判定策略或者综合指标判定策略。

基于上述实施例,所述收集实时监控指标数据,包括:

实时收集数据库访问信息、数据库运行信息及数据库所在服务器的性能信息中的至少一者。

在本实施例中,根据过载保护设计思想,结合对应用系统的业务分析,提前对数据库的操作进行设置,在出现大量访问、数据库繁忙时,在连接数、CPU使用率、IO性能或综合指标达到一定的阀值时,对一些不重要的业务放弃或减少对数据库的操作,而尽量满足重要业务对数据库的操作。从而最大限度的利用有限的数据库资源为应用和产品提供较大量较可靠的访问,而不至于宕机以致完全影响用户使用。

需要说明的是,这里指的不重要的业务,是需要对业务进行分析的,不同的产品的场景不一样。比如微博产品时间线的刷新,也就是获取最新的微博内容,这种读取操作比较频繁,当数据库访问繁忙时,可以不查数据库而直接返回,并在界面上告诉用户没有新内容或直接提示系统繁忙,请稍候再试。再比如一些更新数据库操作,系统中用户每次点击操作都更新最近操作时间的场景,当数据库繁忙时,就可以不进行更新操作。

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

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

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