CN104052677A - 单一数据源的软负载均衡方法和装置 - Google Patents
单一数据源的软负载均衡方法和装置 Download PDFInfo
- Publication number
- CN104052677A CN104052677A CN201310081728.7A CN201310081728A CN104052677A CN 104052677 A CN104052677 A CN 104052677A CN 201310081728 A CN201310081728 A CN 201310081728A CN 104052677 A CN104052677 A CN 104052677A
- Authority
- CN
- China
- Prior art keywords
- database
- request
- configuration
- connection request
- priority
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本申请涉及一种单一数据源的软负载均衡的方法和装置。该方法包括:触发数据库请求并定位数据库请求配置;依据数据库请求配置对数据库请求进行数据库配置解析处理,并发送相应的数据库连接请求;根据所述数据库连接请求,计算数据源的负载均衡以生成执行策略,并据此创建数据库连接任务;根据所述数据库连接任务,基于所述执行策略调度所述数据库连接任务,以创建数据库连接。本申请对数据库请求进行优先级划分,单一数据源通过数据源代理而自动识别数据库请求的优先级,并按照请求的优先级建立数据连接,从而在数据源侧形成一种负载均衡策略,优化了网络数据处理能力,提高了网络的可用性。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种单一数据源的软负载均衡方法和装置。
背景技术
在访问数据库时,需要以数据源为中间媒质,与数据库建立连接,在数据源中通常包含用于建立数据连接的信息,如:数据库名称、和服务器通讯使用的网络协议名称、数据库使用的端口等等。
数据源不具备识别数据库请求优先级的功能,即已有数据源无法对sql请求进行优先级区分,所以数据库连接的建立只能根据请求时刻进行分配,并按照请求时刻顺序建立数据连接,即数据源对所有的数据库请求只能根据请求的时间来获取数据库连接。再者,目前的线上系统的业务,其对应的功能通常包括重要业务功能和非重要业务功能,这样,如果是单一数据源、以及在高并发的情况下,非重要的业务功能等都会去竞争数据库的连接,将导致数据库连接不够用进而会导致重要业务功能无法使用。
也就是说,如果在访问量和数据流量快速增长时,尤其在单一数据源和高并发访问的情况下,就目前已有数据源无法识别数据库请求的优先级,数据库连接的分配方案为先到先得,一旦高并发,很可能一些重要业务功能的数据库请求在数据源配置最大超时策略方案下就无法获得数据库连接,数据库数据连接会产生瓶颈,甚至会导致最终重要业务功能无法获得数据连接进行处理的情况发生,整个用户请求因为无法获取数据库连接而不可用,即整个功能都在高并发时期处于不可用状态。
但若为单个数据库配置多个数据源,则会因为多个数据源之间的数据连接不可以公用,出现多个数据源的资源不能统一协调的现象,而且多个数据源分别都包含数据连接的获取、释放等、以及超时终结中断空闲连接也都给予各自不同的数据源配置,这样,增加了数据库连接的管理方案复杂性。再者,单台服务器配置多个数据源的效果也无法达到多台服务器的(每台服务器配置一个数据源,数据源配置相同,高并发情况下通过一些负载均衡(F5硬负载均衡,apache或者nginx软负载均衡通过对http请求的分流最终间接地减轻高并发情况下数据源的压力))效果。
而负载均衡技术具有如下特点:可以做ISO模型4-7层负载均衡,具有负载均衡、应用交换、会话交换、状态监控、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、连接加速、高速缓存、Cookie加密、防火墙—包过滤、包消毒等功能。利用负载均衡技术,可以将大量的并发访问或数据流量分配给多个数据库,减少用户等待响应的时间,提高系统处理能力,采用负载均衡的方法,较上述为单个数据库配置多个数据源的方法可以减轻高并发访问带来的数据源压力。
但在现有技术中,针对高并发系统的负载均衡技术主要有三种,均存在各种缺陷:
1、在数据库连接允许的情况下,配置多个数据源,对于低优先级的功能采用独立的数据源,高优先级的功能采用其他的数据源,避免相互竞争。但是配置多个数据源较为复杂,而且会导致业务功能依赖多个数据源,代码复杂度高度,并且数据源之间高度耦合,不满足软件解耦和内聚的特性。其次多个数据源之间的连接无法公用。
2、添加数据库节点,提高数据库总的连接数,然后修改数据源配置提高最大连接数配置,添加数据库节点,也会增加管理员的管理复杂度,而且在不是优先考虑稳定性的前提下代价相对较高。
3、在数据库连接支持情况下,添加应用服务器,通过业内通用的负载均衡策略间接降低数据源的压力,但是缺点成本高昂。
发明内容
基于上述已有针对数据库连接的负载均衡技术的缺陷,本申请的主要目的在于提供一种单一数据源的软负载均衡的方法和装置,以解决在发生大量并发的数据库访问时出现的数据流量瓶颈的问题。
为了解决上述技术问题,本申请提供了一种单一数据源的软负载均衡的方法,包括以下步骤:触发数据库请求并定位数据库请求配置;依据数据库请求配置对数据库请求进行数据库配置解析处理,并发送相应的数据库连接请求;根据所述数据库连接请求,计算数据源的负载均衡以生成执行策略,并据此创建数据库连接任务;根据所述数据库连接任务,基于所述执行策略调度所述数据库连接任务,以创建数据库连接。
其中,所述依据数据库请求配置对数据库请求进行数据库配置解析处理,并发送相应的数据库连接请求,包括:对所述数据库请求,基于数据库配置解析结果,生成对应所述数据库请求的数据库连接请求,并发送相应的数据库连接请求。
其中,在根据本申请所述的方法中,所述数据库配置中包含对应数据库请求的优先级;所述数据库连接请求具有与数据库配置中包含的对应数据库请求的优先级相同的优先级。
其中,所述根据所述数据库连接请求,计算数据源的负载均衡以生成执行策略,并据此创建数据库连接任务,包括:基于数据源的最大数据库连接量,预设每一种优先级数据库连接请求的数据库连接量;计算当前数据源负载情况,释放一个或多个具有低优先级的在处理的数据库连接请求占用的数据库连接,并将释放的所述数据库连接分配给具有高优先级的数据库连接请求;为所述具有高优先级的数据库连接请求创建相应的数据库连接任务。
其中,所述根据所述数据库连接任务,基于所述执行策略调度所述数据库连接任务,以创建数据库连接还包括:调度所述数据库连接任务,通过调用数据源建立数据库连接。
本申请还提供了一种单一数据源的软负载均衡的装置,包括:数据库配置资源模块,用于触发数据库请求并定位数据库请求配置;数据库请求配置解析器,用于依据数据库请求配置对数据库请求进行数据库配置解析处理,并发送相应的数据库连接请求;连接请求容器,用于根据所述数据库连接请求,计算数据源的负载均衡以生成执行策略,并据此创建数据库连接任务;连接调度模块,用于根据所述数据库连接的任务,基于所述执行策略调度所述数据库连接任务,以创建数据库连接。
其中,所述数据库请求配置解析器还包括:对所述数据库请求,基于数据库配置解析结果,生成对应所述数据库请求的数据库连接请求,并发送相应的数据库连接请求。
其中,在根据本申请所述的装置中,所述数据库配置中包含对应数据库请求的优先级;所述数据库请求配置解析器还包括:所述数据库连接请求具有与数据库配置中包含的对应数据库请求的优先级相同的优先级。
其中,所述连接请求容器还可以包括:基于数据源的最大数据库连接量,预设每一种优先级数据库连接请求的数据库连接量;计算当前数据源负载情况,释放一个或多个具有低优先级的在处理的数据库连接请求占用的数据库连接,并将释放的所述数据库连接分配给具有高优先级的数据库连接请求;为所述具有高优先级的数据库连接请求创建相应的数据库连接任务。
其中,在根据本申请所述的装置中,还可以包括:数据源模块,用于基于调度数据库连接任务,通过调用数据源建立数据库连接。
为解决上述技术问题,本申请提供的单一数据源的软负载均衡的方法和装置,与现有技术相比,根据本申请的技术方案具有以下优点:对数据库请求进行优先级划分,单一数据源通过数据源代理而自动识别数据库请求的优先级,并按照请求的优先级建立数据连接,从而在数据源侧形成一种单一数据源的软负载均衡策略,优化了网络数据处理能力,提高了网络的可用性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的单一数据源的软负载均衡的装置的方框图;
图2是本申请实施例的单一数据源的软负载均衡的方法的流程图;
图3是本申请实施例的单一数据源的软负载均衡的方法中一数据库连接请求生成流程图;
图4是本申请实施例的单一数据源的软负载均衡的方法中一连接任务建立流程图。
具体实施方式
本申请的主要思想在于,通过标识数据库配置文件中数据库请求的优先级,通过数据源代理以结合数据库当前的负载和数据库请求的优先级进行处理。
首先,数据源配置可以采用原有数据源的配置,例如单一数据源的原有配置,不做变动,因而简单有效不增加配置负担和运算管理等复杂度。
其次,不需要增加服务器或者数据库节点,只是一种在软件端的负载均衡策略,因而简单且成本低。
另外,对于数据库的管理全部托管到数据源代理上,没有将数据源分散至系统的各个部分,满足软件的内聚和解耦。
为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本申请作进一步地详细说明。
参见图1,根据本申请的方案,提供了一种单一数据源的软负载均衡的装置100,图1为本申请装置的结构示意的方框图。
该装置100:包括数据库配置资源模块(SqlConfigResouce)103(这里,数据库配置资源为Sql配置资源);数据源代理模块(DataSourceProxy)105,又称核心部分;数据源模块(DataSource)107。
数据库配置资源模块103,主要用来存储数据库的配置资源,包括数据库请求配置(Sql请求配置,包含数据库请求的优先级),延迟时间,备份策略等。当接收到来自用户的数据库访问请求时,该数据库访问请求触发数据库请求,该数据库请求可以定位数据库请求配置,即,数据库配置资源模块103触发数据库请求并定位数据库请求配置。
DataSourceProxy核心部分105,包括:数据库配置解析器(SqlConfigResource)1051、连接请求容器(ConnectionRequestContainer)1053、连接调度模块(ConnectionDispatch)1055。
其中,数据库配置解析器1051主要用于对数据库配置资源的解析。当定位数据库请求配置后,依据数据库请求配置对数据库请求进行数据库配置解析处理,并发送相应的数据库连接请求。对所述数据库请求,基于数据库配置解析结果可以生成对应该数据库请求(即对应相应的数据库访问请求)的数据库连接请求,并发送相应的数据库连接请求,如,发送至连接请求容器1053。由于所述数据库请求配置中包含对应数据库请求的优先级,所以,所述数据库连接请求具有与数据库配置中包含的对应数据库请求的优先级相同的优先级。
连接请求容器1053主要用于包装数据库连接,所有的数据库连接请求都会经过该连接请求容器1053。该连接请求容器1053中包含了目前数据源的负载情况,所以,连接请求容器1053,可以根据所述数据库连接请求,计算数据源的负载均衡以生成执行策略,并据此创建数据库连接任务。例如:计算新接收的数据库连接请求量、在处理的数据库连接请求量和待处理的数据库连接请求量。通过该连接请求容器1053拦截数据库连接请求,从而根据请求的优先级和调度策略,结合负载情况,进而向连接调度模块1055创建一个数据库连接任务。
这里,负载均衡的执行策略可以看作,基于数据源的数据库连接量,预设每一种优先级数据库连接请求的数据库连接量;计算当前数据源负载情况,释放一个或多个具有低优先级的在处理的数据库连接请求占用的数据库连接,并将释放的所述数据库连接分配给具有高优先级的数据库连接请求;为所述具有高优先级的数据库连接请求创建相应的数据库连接任务。
连接调度模块1055,包括决定连接的调度策略,判断是否真正获取数据库连接、或者是延迟获取、或者是先记录再激活,以及根据所述数据库连接的任务,基于所述执行策略调度所述数据库连接任务,以创建数据库连接。
数据源模块(DataSource)107,即数据源,主要用来封装目前已有的数据源,例如:dbcp,c3p0。其是DataSourceProxy核心部分(数据源代理)105与外部数据源的协议层或者契约层,在此基础上,数据源模块107基于调度数据库连接任务,通过调用数据源建立数据库连接。
各个模块之间相互关联,实现其负载均衡。
结合装置各个模块,基于下面的单一数据源的软负载均衡的具体实施步骤,描述单一数据源的软负载均衡的方法和装置各个模块功能的实现。
根据本申请的方案,提供了相应的于上述装置的一种单一数据源的软负载均衡的方法,优选的,具体实施流程参见图2所示。当用户需要访问数据库时,用户会发起一个请求,即发出一个数据库访问请求。而后,则会根据接收的数据库访问请求,定位到数据库请求配置,并解析数据库请求配置,发起一个连接请求,最终创建一个数据库连接任务,通过连接调度策略(如:利用连接调度模块1055)将所述数据库连接任务分发到具体的数据库连接队列中,最终通过数据源获取到数据库连接。具体可参见以下优选实施步骤举例。
在步骤S202,用户可以通过终端使用互联网,并且在终端使用搜索、查询、浏览等功能时,会进行数据库访问,用于获取有用数据。用户互联网数据库访问发起sql请求时,通常,在这种情况下,若存在大量的用户互联网访问,则会出现高并发数据访问,这些数据库访问需要的数据库连接量往往远远大于系统处理性能所能支持的最大数据库连接量,导致在特定时间内,不能获得有效的数据库连接,在系统中产生网络拥堵。
在进行数据库访问时,数据库所在服务器端(下称数据库服务器)会接收到用户自终端传送来的数据库访问请求,并定位数据库请求配置。服务器端将基于该数据库访问请求进行数据库连接以获得用户需要的数据。如,在步骤S204处,数据库服务器接收到用户自终端发来的数据库访问请求,该数据库访问请求触发数据库请求(Sql请求)。
步骤S206,接收数据库请求并定位Sql配置资源(即定位数据库请求配置)。例如,在单一数据源的软负载均衡的装置100接收到数据库访问请求,根据与该数据库访问请求触发相对应的数据库请求,定位到数据库请求配置(如Sql配置资源/数据库配置资源)。该装置100的数据库配置资源模块103,存储有数据库请求配置,包括数据库请求的优先级,延迟时间,备份策略等。在数据库配置资源(数据库请求配置)中通常还会定义数据库名称、服务器端口、连接、缓存、临时表、会话内存、日志等数据。
步骤S202-S206,实现触发数据库请求并定位数据库请求配置(如单一数据源的软负载均衡的装置100及其数据库配置资源模块103的功能),为数据库解析提供基础。
步骤S208,依据定位数据库请求配置对数据库请求进行数据库配置解析处理,并发送相应的数据库连接请求(如:发送数据库连接请求)。
例如,在该装置100的(核心部分105)数据库配置解析器1051,数据库配置资源模块103的数据库配置资源存储有数据库请求配置,依据该数据库请求配置对数据库访问请求(数据库请求)进行数据库配置解析处理,如图3步骤S301;接着,对所述数据库请求,基于数据库配置解析结果,生成对应所述数据库请求的数据库连接请求,该数据库连接请求的生成基于该数据库请求的配置(如其优先级等),即,生成具有相应优先级的数据库连接请求,其中,进一步地,可以对该数据库连接请求通过一配置形式,标识优先级和执行策略方案(如记录或首先处理等),即对当前数据库连接请求进行负载均衡计算,如图3步骤S303;再提交该数据库连接请求,以发送相应的数据库连接请求,例如向该装置100的连接请求容器1053发送/传送该连接请求,如图3步骤S305。这里,解析数据库请求(具体如:解析数据库请求配置/Sql配置资源等),是为后续实现数据库的数据连接操作做准备。
而在解析时,数据库配置中包含对应数据库请求的优先级,则其通过配置方式标识数据库请求的优先级和执行方案,这样,在生成数据库连接请求(即生成连接对象)时,所述数据库连接请求具有与数据库配置中包含的对应数据库请求的优先级相同的优先级,其依据该优先级别可辨识可区别。若利用该数据库连接请求去获取数据库连接,则能实现更有效的数据库访问提升网络数据处理性能。而后通过该具有优先级标识的数据库连接请求去创建一个数据连接任务,建立数据库的数据连接,并将终端所需的数据返回给该终端,从而完成对用户请求的响应(这在后面将具体描述)。
一般,每一个数据库连接请求都涉及到用户方经终端发送的请求相对应的一业务功能,以达到用户操作的预期目的,例如:监控、统计、查询等。这些业务功能重要性不同,比如查询请求所对应的业务功能的重要性高,而监控请求所对应的业务功能的重要性低,以此可以划分优先级别,比如,重要的可划入高优先级,非重要的可划入低优先级。
依据本申请的方案,优选地,在数据库配置资源模块103的数据库配置资源中,其存储的数据库请求的配置,是将数据库请求的优先级写在数据库请求的配置中,对这些数据库请求(及生成的数据库连接请求)相应的业务功能都进行分级管理,从而使用优先级的概念来区分何种功能重要,何种功能不重要。
当生成数据库连接请求时,由于该数据库连接请求中包含的优先级标识,可以判断出该数据库连接请求所处的优先级。一旦确定所述数据库连接请求的优先级,就可以结合当前负载情况进行负载均衡计算,按照每一个数据库连接请求所属的优先级对大量的数据库连接请求进行负载均衡,即,对单一数据源高并发数据库访问会产生流量拥堵瓶颈的情形,则将获取数据库的连接分出了优先次序,优先级高的访问业务请求(数据库连接请求)会优先连接数据库、优先处理,反之低优先级的则不予连接或滞后连接、不处理或后处理。
数据库配置解析器1051、连接请求容器1053和数据库配置资源模块103的功能参见上述装置及其模块的描述。
在步骤S210,根据传送来的数据库连接请求,计算负载均衡以生成执行策略,并据此创建获取数据库连接的任务Job。此后,可发送该数据库连接任务进行调度处理。总的来说,根据所述数据库连接请求,计算数据源的负载均衡以生成执行策略,并据此创建数据库连接任务。
例如,连接请求容器1053接收到来自数据库配置解析器1051的数据库连接请求,则如图4:添加一个数据库连接请求,步骤S401;进入负载均衡算法,计算当前数据源负载情况,以执行负载均衡算法,最终,生成执行策略,步骤S403;据此建立一个数据库连接任务Job,并提交该数据库连接任务做下一步处理,例如提交给连接调度模块1055等,步骤S405。
这里,例如在所述数据库连接请求的优先级被确定后,由连接请求容器1053计算当前负载情况。连接请求容器1053的功能参见上述装置100中的描述。
采用负载均衡算法原理如:预设数据源最大数据库连接量,并基于该数据源的最大数据库连接量,预设每一种优先级的数据库连接请求的数据库连接量,例如,一种优先级为高,一种优先级为中,一种优先级为低。这里为便于描述,用两种优先级(即高优先级、低优先级)。计算当前数据源负载情况,如:在处理的数据库连接请求数量、数据源的最大数据库连接数量、待处理的数据库连接请求数量、以及新接收的数据库连接请求数量(步骤S301中生成的数据库连接请求),判断数据源的整体负载情况。如果数据源负载满足高并发负载情况,例如,同一时间,系统并发访问量很高,超过该系统处理性能能够处理的范围,造成数据库连接请求在特定时间内不能获得有效的数据库连接。可以先按照比例将数据源的最大数据库连接数量,分给高、低优先级别的数据库连接请求(例如最大数量100,高级别组分60、低级别组分40等)。首先扫描正在运行的连接数,根据配置的延迟策略和记录策略(如数据库配置资源模块103中的数据库的配置),对低优先级别的在处理的数据库连接请求进行延迟处理或备份处理,释放此部分数据库连接,获取高优先级别的待处理的数据库连接请求,先进入连接调度(如上述装置100描述的连接调度模块1055的功能),以分发建立的相应的数据库连接任务Job。对于前述释放此部分数据库连接的那些低优先级别的数据库连接请求,则延迟产生数据库连接任务Job和备份请求,不生成或延迟生成数据库连接任务Job。
也就是说,负载均衡算法可以计算出当前数据源负载情况,释放一个或多个具有低优先级的在处理的数据库连接请求占用的数据库连接,并将释放的所述数据库连接分配给具有高优先级的数据库连接请求;先为所述具有高优先级的数据库连接请求创建相应的数据库连接任务。
例如:预设系统性能支持的最大数据库连接处理量为10、数据源的最大数据库连接量为10、A(具有第一优先级的数据库连接请求)获得5个数据库连接量、B(具有第二优先级的数据库连接请求)获得5个数据库连接量,其中,第一优先级高于第二优先级。
在表1的每一种情况中,同一时间,接收的数据库连接请求量、在处理的数据库连接请求量、待处理的数据库连接请求量,三者总和均大于系统性能能够支持的最大数据库连接量,导致负担过重,造成在特定时间内(如指定的获取数据库连接的等待时间内),接收的数据库连接请求未能获得有效的数据库连接(即没有有效数据库连接给新来的数据库请求使用),出现高并发数据访问的情况,此时,可以对数据库连接请求采用本申请所述的负载均衡算法。
表1
表1中,接收的数据库连接请求(即新接收、新来的)、在处理的数据库连接请求和待处理的数据库连接请求,均处于连接请求容器1053中,连接请求容器1053对该接收的数据库连接请求量、在处理的数据库连接请求量和待处理的数据库请求量进行计算,并向连接调度模块1055为数据库连接请求建立数据库连接任务,数据库连接任务可以调用数据源,通过调用数据源与数据库建立数据库连接并进行数据交互。连接调度模块1055将数据库连接任务分发到具体的执行队列,如将A的任务分发至A的执行队列,将B分发至B的执行队列。具体可参加以下4种情况:
对于情况1,接收到A为4个,B为4个,并且没有待处理的数据库连接请求,在处理的A有3个、剩余空闲2个,在处理的B有3个、剩余空闲2个。这时,则将A按照数据库连接请求发生的时间进行排序,先发生的2个A可以获得数据库连接,后发生的2个A作为待处理的数据库请求,等待处理,同理,B也要对数据库连接请求时间排序,先发生的2个B可以获得数据库连接,后发生的B等待处理。在另一实施例中,在处理的B存在2个空闲,在处理的A可以向在处理的B借取这2个空闲,将接收的4个A都获得数据库连接,在处理的B的2个空闲被占用,则接收的B作为待处理的数据库请求等待处理。
对于情况2,接收到A为2个,B为0个,可以看到,在处理的A中包含2个B,这是因为,数据库原本可以处理5个A,但是由于系统空闲而出现的,在一段时间内未接收到A,这时B可以借取在处理的A的2个空闲。但是当接收到所述的2个A时,由于A的优先级高于B,则B要归还这两个被占用的空闲,又由于在处理的B为5个,已经达到对B预设的处理量,则占用A空闲的2个B被连接调度模块1055判断为延迟获取数据库连接并且记录这2个B(如保存备份等),等待在处理的B出现空闲时立即被处理(可插队)或者通过人工干预的方法恢复数据库连接,在处理的A中溢出所述2个B,将接收到的2个A进入在处理队列。
对于情况3,接收到A为5个,B为5个,但是在处理的A和B已经达到预设的处理数量,则接收的A和B作为待处理的数据库连接请求等待处理(例如,多个A、B数据库连接请求,都在各自级别下,按照时间顺序或具体优先级处理)。
对于情况4,接收到A为1个,B没有,但在处理的A为5个、B为5个(包含3个A),等待的A、B暂时没有,此时,也已经超过系统处理性能范围,如情况2,于是,将B中在执行的1个B释放连接,延迟并记录以等待,而让与新来该1个A优先占用使用连接。
该连接请求容器1053的负载均衡、执行策略及创建任务(见步骤S403-S405):
计算,以获取当前在处理的数据库连接请求数量、数据源最大数据库连接量和待处理的数据库连接请求数量,从而判断当前负载是否满足高并发数据库访问的条件。如,若确定在等待时间内获取不到请求的连接则高并发情况出现。
具体的,预设数据源最大数据库连接量;衡量不同优先级的数据库连接请求重要性,按照一定比例为每种优先级(如:高、中、低)的数据库连接请求分配各自的数据库连接量,由于不同优先级的数据库连接请求公用一个数据源,所以,可以相互借用数据库连接量,在生成数据库连接任务后归还该借用的数据库连接,但是在低优先级的数据库连接请求借用高优先级的数据库连接请求的数据库连接量时,连接请求容器1053可以要求溢出该低优先级的数据库连接请求,用以执行高优先级的数据库连接请求,该被溢出的低优先级的数据库连接请求被延迟处理或备份处理。其中,该延迟处理表示,当负载降低之后,在由数据源负责处理请求,一般只针对非实时性的请求;该备份处理表示,当数据源高负载的情况下,对那些低优先级的请求直接备份,存储在某个地方,然后由人手动触发或者通过定时任务触发。
在一个实施例中,所有的数据库连接均通过单一数据源,如数据源模块107进行建立,从而可以在高并发访问数据库时,自动识别数据库连接请求的优先级别(例如:区分其属于哪个优先级别队列或组),使单一数据源107只优先处理优先级高的数据连接请求。而且采用优先级的方法建立数据库连接,可以减轻数据库所在服务器端的负担,避免出现网络流量瓶颈。同时,使用单一数据源107,不必增加调度和管理的复杂性,提高了网络数据处理性能。
在另一实施例中,可以利用数据库连接池的方式对数据库连接请求进行分配、管理和释放。单一数据源107维护多个数据库连接池,每一个数据库连接池负责处理对应的一个优先级别的那些数据库连接请求(如:高级池、中级池、低级池),多个数据库连接池之间可以通过数据库请求配置(如sql请求配置)互相协调,针对不同优先级的数据库连接请求通过不同的数据库连接池获得数据库连接,在高并发数据访问的情况下,可以让重要的数据库连接池满足高优先级数据库连接请求的数据访问业务。
步骤S212,接收数据库连接任务job,通过连接调度策略(如利用上述装置100的连接调度模块1055的功能)将所述数据库连接任务分发到具体的数据库连接执行队列中,最终通过调用该数据源107获取数据库连接,即基于调度数据库连接任务job,通过调用数据源107创建数据库连接。也即是说,根据所述数据库连接任务,基于所述执行策略调度所述数据库连接任务,以创建数据库连接,最终,基于调度数据库连接任务,通过调用数据源建立数据库连接。
本申请通过声明式的对数据库请求进行优先级的划分,让数据库的请求具有优先级标识,从而让数据源自动识别数据库请求,对于低优先级的数据库请求,延后或者记录不处理,对于高优先级的请求优先处理,从而使得单一数据源具有多个数据源的功能,同时这些多个数据源的资源(连接数)又是可公用,可协调的,一种在数据源端的软负载均衡策略。
本说明书中的各个实施例一般采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块或单元。一般地,程序模块或单元可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。一般来说,程序模块或单元可以由软件、硬件或两者的结合来实现。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块或单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
最后,还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其主要思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种单一数据源的软负载均衡的方法,其特征在于,包括:
触发数据库请求并定位数据库请求配置;
依据数据库请求配置对数据库请求进行数据库配置解析处理,并发送相应的数据库连接请求;
根据所述数据库连接请求,计算数据源的负载均衡以生成执行策略,并据此创建数据库连接任务;
根据所述数据库连接任务,基于所述执行策略调度所述数据库连接任务,以创建数据库连接。
2.根据权利要求1所述的方法,其特征在于,所述依据数据库请求配置对数据库请求进行数据库配置解析处理,并发送相应的数据库连接请求,包括:
对所述数据库请求,基于数据库配置解析结果,生成对应所述数据库请求的数据库连接请求,并发送相应的数据库连接请求。
3.根据权利要求2所述的方法,其特征在于,包括:
所述数据库配置中包含对应数据库请求的优先级;
所述数据库连接请求具有与数据库配置中包含的对应数据库请求的优先级相同的优先级。
4.根据权利要求3所述的方法,其特征在于,所述根据所述数据库连接请求,计算数据源的负载均衡以生成执行策略,并据此创建数据库连接任务,包括:
基于数据源的最大数据库连接量,预设每一种优先级数据库连接请求的数据库连接量;
计算当前数据源负载情况,释放一个或多个具有低优先级的在处理的数据库连接请求占用的数据库连接,并将释放的所述数据库连接分配给具有高优先级的数据库连接请求;
为所述具有高优先级的数据库连接请求创建相应的数据库连接任务。
5.根据权利要求4所述的方法,其特征在于,所述根据所述数据库连接任务,基于所述执行策略调度所述数据库连接任务,以创建数据库连接还包括:
调度所述数据库连接任务,通过调用数据源建立数据库连接。
6.一种单一数据源的软负载均衡的装置,其特征在于,包括:
数据库配置资源模块(103),用于触发数据库请求并定位数据库请求配置;
数据库请求配置解析器(1051),用于依据数据库请求配置对数据库请求进行数据库配置解析处理,并发送相应的数据库连接请求;
连接请求容器(1053),用于根据所述数据库连接请求,计算数据源的负载均衡以生成执行策略,并据此创建数据库连接任务;
连接调度模块(1055),用于根据所述数据库连接的任务,基于所述执行策略调度所述数据库连接任务,以创建数据库连接。
7.根据权利要求6所述的装置,其特征在于,所述数据库请求配置解析器(1051)还包括:
对所述数据库请求,基于数据库配置解析结果,生成对应所述数据库请求的数据库连接请求,并发送相应的数据库连接请求。
8.根据权利要求7所述的装置,其特征在于,
所述数据库配置中包含对应数据库请求的优先级;
所述数据库请求配置解析器(1051)还包括:所述数据库连接请求具有与数据库配置中包含的对应数据库请求的优先级相同的优先级。
9.根据权利要求8所述的装置,其特征在于,所述连接请求容器(1053)还包括:
基于数据源的最大数据库连接量,预设每一种优先级数据库连接请求的数据库连接量;
计算当前数据源负载情况,释放一个或多个具有低优先级的在处理的数据库连接请求占用的数据库连接,并将释放的所述数据库连接分配给具有高优先级的数据库连接请求;
为所述具有高优先级的数据库连接请求创建相应的数据库连接任务。
10.根据权利要求9所述的装置,其特征在于,还包括:
数据源模块(107),用于基于调度数据库连接任务,通过调用数据源建立数据库连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310081728.7A CN104052677B (zh) | 2013-03-14 | 2013-03-14 | 单一数据源的软负载均衡方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310081728.7A CN104052677B (zh) | 2013-03-14 | 2013-03-14 | 单一数据源的软负载均衡方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104052677A true CN104052677A (zh) | 2014-09-17 |
CN104052677B CN104052677B (zh) | 2018-04-10 |
Family
ID=51505059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310081728.7A Active CN104052677B (zh) | 2013-03-14 | 2013-03-14 | 单一数据源的软负载均衡方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104052677B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104917810A (zh) * | 2015-04-14 | 2015-09-16 | 天脉聚源(北京)教育科技有限公司 | 一种基于全局变量的用户设备的连接方法及连接装置 |
WO2016169102A1 (zh) * | 2015-04-20 | 2016-10-27 | 宇龙计算机通信科技(深圳)有限公司 | 一种多路数据连接管理方法、系统及移动终端 |
CN106899657A (zh) * | 2017-01-16 | 2017-06-27 | 东南大学常州研究院 | 一种面向gps移动目标定位追踪系统的高并发接入方法 |
CN111158888A (zh) * | 2019-12-31 | 2020-05-15 | 北京明略软件系统有限公司 | 多任务调度方法和装置 |
CN111737017A (zh) * | 2020-08-20 | 2020-10-02 | 北京东方通科技股份有限公司 | 一种分布式元数据管理方法和系统 |
CN111949721A (zh) * | 2020-08-25 | 2020-11-17 | 深圳市广通软件有限公司 | 实现Web数据库快速访问的方法、系统和存储介质 |
CN111966488A (zh) * | 2020-07-17 | 2020-11-20 | 北京思特奇信息技术股份有限公司 | 接口网关多中心应用系统和方法 |
CN111966488B (zh) * | 2020-07-17 | 2024-04-23 | 北京思特奇信息技术股份有限公司 | 接口网关多中心应用系统和方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1723434A (zh) * | 2002-12-06 | 2006-01-18 | 思科技术公司 | 用于可扩展网络附接存储系统的装置和方法 |
CN102006282A (zh) * | 2010-10-26 | 2011-04-06 | 福州星网视易信息系统有限公司 | 客户端/服务器模式下的数据库访问集中控制方法 |
CN102243597A (zh) * | 2011-06-16 | 2011-11-16 | 苏州阔地网络科技有限公司 | 一种数据库连接的控制管理方法及装置 |
CN102722575A (zh) * | 2012-06-05 | 2012-10-10 | 河北世窗信息技术有限公司 | 一种多类型数据库连接池管理系统及管理方法 |
US20130013752A1 (en) * | 2010-03-22 | 2013-01-10 | Koninklijke Kpn N.V. | System and Method for Handling a Configuration Request |
-
2013
- 2013-03-14 CN CN201310081728.7A patent/CN104052677B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1723434A (zh) * | 2002-12-06 | 2006-01-18 | 思科技术公司 | 用于可扩展网络附接存储系统的装置和方法 |
US20130013752A1 (en) * | 2010-03-22 | 2013-01-10 | Koninklijke Kpn N.V. | System and Method for Handling a Configuration Request |
CN102006282A (zh) * | 2010-10-26 | 2011-04-06 | 福州星网视易信息系统有限公司 | 客户端/服务器模式下的数据库访问集中控制方法 |
CN102243597A (zh) * | 2011-06-16 | 2011-11-16 | 苏州阔地网络科技有限公司 | 一种数据库连接的控制管理方法及装置 |
CN102722575A (zh) * | 2012-06-05 | 2012-10-10 | 河北世窗信息技术有限公司 | 一种多类型数据库连接池管理系统及管理方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104917810A (zh) * | 2015-04-14 | 2015-09-16 | 天脉聚源(北京)教育科技有限公司 | 一种基于全局变量的用户设备的连接方法及连接装置 |
CN104917810B (zh) * | 2015-04-14 | 2019-07-26 | 天脉聚源(北京)教育科技有限公司 | 一种基于全局变量的用户设备的连接方法及连接装置 |
WO2016169102A1 (zh) * | 2015-04-20 | 2016-10-27 | 宇龙计算机通信科技(深圳)有限公司 | 一种多路数据连接管理方法、系统及移动终端 |
CN106899657A (zh) * | 2017-01-16 | 2017-06-27 | 东南大学常州研究院 | 一种面向gps移动目标定位追踪系统的高并发接入方法 |
CN111158888A (zh) * | 2019-12-31 | 2020-05-15 | 北京明略软件系统有限公司 | 多任务调度方法和装置 |
CN111966488A (zh) * | 2020-07-17 | 2020-11-20 | 北京思特奇信息技术股份有限公司 | 接口网关多中心应用系统和方法 |
CN111966488B (zh) * | 2020-07-17 | 2024-04-23 | 北京思特奇信息技术股份有限公司 | 接口网关多中心应用系统和方法 |
CN111737017A (zh) * | 2020-08-20 | 2020-10-02 | 北京东方通科技股份有限公司 | 一种分布式元数据管理方法和系统 |
CN111737017B (zh) * | 2020-08-20 | 2020-12-18 | 北京东方通科技股份有限公司 | 一种分布式元数据管理方法和系统 |
CN111949721A (zh) * | 2020-08-25 | 2020-11-17 | 深圳市广通软件有限公司 | 实现Web数据库快速访问的方法、系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104052677B (zh) | 2018-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109218355B (zh) | 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法 | |
CN102299959B (zh) | 一种数据库集群系统的负载均衡实现方法和装置 | |
CN106933669B (zh) | 用于数据处理的装置和方法 | |
CN104052677A (zh) | 单一数据源的软负载均衡方法和装置 | |
CN101909048B (zh) | 一种集中式转码处理方法和装置 | |
CN111124662B (zh) | 一种雾计算负载均衡方法及系统 | |
CN107241281B (zh) | 一种数据处理方法及其装置 | |
CN110602156A (zh) | 一种负载均衡调度方法及装置 | |
CN108449410A (zh) | 一种云平台中消息管理方法、系统及相关装置 | |
CN109831524B (zh) | 一种负载均衡处理方法及装置 | |
CN105338061A (zh) | 一种轻量级消息中间件的实现方法与系统 | |
CN104079630A (zh) | 一种业务服务端负载均衡方法、客户端、服务端以及系统 | |
CN103607424B (zh) | 一种服务器连接方法及服务器系统 | |
CN103118076A (zh) | 升级服务器集群系统及其负载均衡方法 | |
CN109697122A (zh) | 任务处理方法、设备及计算机存储介质 | |
CN106027596A (zh) | 一种任务分发方法和装置 | |
US8606908B2 (en) | Wake-up server | |
CN105491150A (zh) | 基于时间序列的负载均衡处理方法及系统 | |
CN109639591A (zh) | 配电数据反向传输方法及系统和计算机可读存储介质 | |
CN103067486A (zh) | 基于PaaS平台的大数据处理方法 | |
CN109388501B (zh) | 基于人脸识别请求的通信匹配方法、装置、设备及介质 | |
CN113014611A (zh) | 一种负载均衡方法及相关设备 | |
US10984011B1 (en) | Distributing non-transactional workload across multiple database servers | |
CN114416355A (zh) | 资源调度方法、装置、系统、电子设备及介质 | |
CN111913784B (zh) | 任务调度方法及装置、网元、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191209 Address after: P.O. Box 31119, grand exhibition hall, hibiscus street, 802 West Bay Road, Grand Cayman, Cayman Islands Patentee after: Innovative advanced technology Co., Ltd Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: Alibaba Group Holding Co., Ltd. |
|
TR01 | Transfer of patent right |