OracleRAC系统中实现负载均衡的方法和数据库服务器的制作方法

文档序号:6579786阅读:139来源:国知局
专利名称:Oracle RAC系统中实现负载均衡的方法和数据库服务器的制作方法
技术领域
本发明涉及数据库技术领域,特别涉及一种Oracle RAC系统中实现负载均衡的方 法和数据库服务器。
背景技术
Oracle RAC(Real Application Clusters)系统中,包括数据库和与之相连的若 干节点服务器,其系统结构如图1所示。数据库中具有数量较多的计算任务模块,对于企业来说,每个计算任务模块对应 某个或某些业务问题、商业问题的程序实现。不同的计算任务模块由于业务问题、商业问题 的复杂性不同,需要处理的数据量不同,且计算方式也可能不同。例如,问题越多越复杂,需 要处理的数据量一般就会越大,耗费的计算资源也会越多。耗费的计算资源具体可以包括 节点服务器的CPU,内存,硬盘等硬件资源以及逻辑资源等。计算任务模块中的程序需要交给相连的节点服务器上实现计算。这样,数据库中 大量的计算任务模块中的程序就会交给若干相连的节点服务器进行计算。为了实现良好的计算性能,现有技术中采用负载均衡技术。现有的Oracle RAC系 统中,根据每个节点可以并行执行的进程数量来决定将某个计算任务模块对应的程序分配 给哪个节点服务器执行。节点服务器的并行进程是oracle系统中处理任务的最小单元,对 应的要耗费前述所说的节点服务器的CPU、内存、硬盘等硬件资源以及逻辑资源。随着计算 任务模块中的程序的处理,该程序所需的并行进程数量是动态变化的。而现有的负载均衡 技术中,在特定情况下,会给已被计算任务模块中程序占用一定量运行进程,但还有剩余可 用运行进程的节点服务器分配新的计算任务模块中的程序,以利用该节点服务器剩余的可 用资源。而当节点服务器上先前运行的计算任务模块中的程序需要的并行进程数动态变化 较多时,则很可能此时节点服务器已达到最大负载,无法提供更多的资源,从而影响计算任 务模块中程序的计算,导致计算性能下降。例如,节点服务器A初始时运行计算任务模块1中的程序1,设该程序1初始时需 要4个并行进程,即节点服务器提供4个并行进程执行计算任务模块1中的程序1 ;当有计 算任务模块2中的程序2需要运行,且所述节点服务器A上存在2个空闲的并行进程时,可 能分配节点服务器A的这两个空闲并行进程运行计算任务模块2的程序2。由于计算任务 模块中的程序需要的进程是动态变化的,经过一段时间后,程序1可能需要共6个并行进程 来运行,对于当前节点服务器A最大只支持提供6个并行进程的情况,则此时节点服务器A 已达到最大负载,无法提供更多的资源来运行程序1,这样,影响计算任务模块中程序的计 算,导致计算性能下降。可见,现有技术中的负载均衡方案,会导致计算性能的下降。

发明内容
本申请实施例的目的是提供一种Oracle RAC系统中实现负载均衡的方法和数据库服务器,以保证计算性能。为解决上述技术问题,本申请实施例提供一种Oracle RAC系统中实现负载均衡的 方法和数据库服务器是这样实现的一种Oracle RAC系统中实现负载均衡的方法,包括数据库服务器查找空闲的节点服务器;数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服务器 以完成计算;计算任务模块向数据库服务器申请节点锁以保障所述计算任务模块与所述节点 服务器的唯一配对关系。一种数据库服务器,包括查找单元,用于查找空闲的节点服务器;提交单元,用于提交需要运行的计算任务模块至所述查找到的空闲的节点服务器 以完成计算;上锁单元,用于申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配 对关系。由以上本申请实施例提供的技术方案可见,数据库服务器查找空闲的节点服务 器,数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成 计算,计算任务模块向数据库服务器申请节点锁以保障所述计算任务模块与所述节点服务 器的唯一配对关系,通过在业务模块这个层次,而不是业务模块内部的sql段层次进行rac 节点资源的负载均衡的分配,并在并发业务模块申请的情况下通过申请Oracle内部锁机 制来确保一个节点在一个时间点的时候只有一个业务模块运行。这种负载均衡机制彻底解 决了 Oracle的机遇并行进程数的负载均衡策略,是一种全新的负载均衡策略。


为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提 下,还可以根据这些附图获得其他的附图。图1为现有技术中Oracle RAC系统的结构图;图2为本申请Oracle RAC系统的结构图;图3为本申请Oracle RAC系统中实现负载均衡的方法实施例的流程图;图4为本申请数据库服务器实施例的框图;图5为本申请数据库服务器另一实施例的框图;图6为本申请数据库服务器另一实施例的框图;图7为本申请数据库服务器另一实施例的框图;图8为本申请数据库服务器另一实施例的框图。
具体实施例方式本申请实施例提供一种Oracle RAC系统中实现负载均衡的方法和数据库服务器。
5
首先对数据库和数据仓库的概念做一些辨析。数据库一般存储在线交易数据,数 据仓库存储的一般是历史数据。数据库设计是尽量避免冗余,一般采用符合范式的规则来 设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。数据库是为捕获数据而 设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。维是看问题的 角度,比如时间,部门,维表就是这些东西的定义,事实表里放着要查询的数据,同时有维的 ID。以银行业务为例,数据库是事务系统的数据平台,客户在银行做的每笔交易都会写入数 据库,被记录下来,这里,可以简单地理解为用数据库记账。数据仓库是分析系统的数据平 台,它从事务系统获取数据,并做汇总、加工,为决策者提供决策的依据。比如,某银行某分 行一个月发生多少交易,该分行当前存款余额是多少。如果存款又多,消费交易又多,那么 该地区就有必要设立ATM 了。本申请中的数据库也可以为数据仓库的概念,针对Oracle Rac的负载均衡技术, 两者都可以适用。为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实 施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施 例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通 技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护 的范围。图2示出了本申请由数据库服务器和节点服务器组成的Oracle RAC系统。如图 2中所示,Oracle RAC系统中包括数据库服务器和若干节点服务器。在数据库服务器中,又 包括若干计算任务模块。如前所述,每个计算任务模块对应某个或某些业务问题、商业问题 的程序实现,不同的计算任务模块需要耗费一定的计算资源。耗费的计算资源具体可以包 括节点服务器的CPU,内存,硬盘等硬件资源以及逻辑资源等。计算任务模块中的程序需要 交给相连的节点服务器以完成计算。图3示出了本申请Oracle RAC系统中实现负载均衡的方法实施例的流程图,如图 3所示,包括S310 数据库服务器查找空闲的节点服务器。本申请的实现方式定位于计算任务模块和节点服务器这两个层次。数据库服务 器查找空闲的节点服务器,具体的,在单个节点服务器上,只要有一个计算任务模块正在运 行,那么就跳过此节点服务器,继续寻找下一个空闲节点服务器。在数据库服务器中,可以按照节点服务器的标识排序,如按照节点标识中的数字 大小进行排序节点服务器1,节点服务器2,...,节点服务器3。进而,依排序顺序查找空 闲的节点服务器。例如如果找到的第一个节点服务器不是空闲的,则继续按照排序顺序查 找,直到找到空闲的节点服务器。另外,数据库服务器中可以存储有运行记录表和节点服务器List表。该运行记录 表中包括计算任务模块,以及该计算任务模块占用的节点服务器(或称为与该计算任务模 块配对的节点服务器,简称配对节点服务器)这两项。该运行记录表中计算任务模块这一 项记载该计算任务模块的标识,配对节点服务器这一项记载该计算任务模块占用的节点服 务器的标识。当然,如果某一计算任务模块没有配对的节点服务器,则运行记录表中该计算 任务模块对应的配对节点服务器表项为空。节点服务器List表中包括与所述服务器数据库相连的所有节点服务器的标识,即记录所有可以提供计算的节点服务器的标识。则,通过 比对节点服务器List表与运行记录表,即比对得到在节点服务器List表中而不在运行记 录表的配对节点服务器的节点服务器,从而可以找出空闲的节点服务器。S320:数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服 务器以完成计算。如前所述,数据库中大量的计算任务模块中的程序需要交给相连的节点服务器进 行计算。从整体上来看,把计算任务模块分配给节点服务器进行计算,实际上就是通过使用 Oracle提供的sqlplus客户端连接到数据库上,执行分配到节点服务器的计算任务模块。S330:计算任务模块向数据库服务器申请节点锁以保障所述该计算任务模块与所 述节点服务器的唯一配对关系。Oracle内部提供了锁机制,该锁机制可以保障在某一计算任务模块抢到节点锁并 没有释放的情况下,其他计算任务模块无法再申请得到该节点锁。考虑到对于S310中查找出某一空闲的节点服务器,可能同时有多个计算任务模 块需要提交至这个空闲的节点服务器以完成计算。对于这种多个计算任务模块数量并发的 情况,如果没有一种机制,则会将多个计算任务模块都提交至找到的空闲节点服务器。本申 请中,通过Oracle内部的锁机制,可以保障所述计算任务模块与所述节点服务器的唯一配 对关系。向数据库服务器申请节点锁,典型的可以采用下面的代码实现DBMS_L0CK. allocate_unique (l_instname, lockhandle);LN = DBMS_L0CK. request (lockhandle, TIMEOUT = > 100);while (LN NOT ΙΝ(0,4)) loopDBMS_L0CK. SLEEP (300);LN = DBMS_L0CK. request (lockhandle, TIMEOUT => 0);特别的,如果多个计算任务模块同时申请节点锁,那么节点锁可以随机分配给提 出申请的一个计算任务模块。对于没有被提交至空闲节点服务器而又需要运行的计算任务模块,可以对这些计 算任务模块执行shell中的sleep动作,直到一个预定的时间段之后再重新为该计算任务 模块配对一空闲的节点服务器,并同样申请节点锁以保障该计算任务模块与所述节点服务 器的唯一配对关系。这个预定时间段在可能的情况下越短越好,不过太短的话对系统也有 负面影响,一般来说,分钟级别的长度可以接受。Shell是系统的用户界面,提供了用户与内 核进行交互操作的一种接口,用于接收用户输入的命令并将其送入内核去执行。由以上实施例可见,通过在业务模块这个层次,而不是业务模块内部的sql段层 次进行rac节点资源的负载均衡的分配,并在并发业务模块申请的情况下通过申请Oracle 内部锁机制来确保一个节点在一个时间点只运行一个业务模块。这种负载均衡机制彻底解 决了现有Oracle中的负载均衡策略导致计算能力下降的问题,保证了计算性能,是一种全 新的负载均衡策略。以下介绍本申请中的数据库服务器实施例,图4示出了该数据库服务器实施例的 框图,如图4所示,包括查找单元41,用于查找空闲的节点服务器;
提交单元42,用于提交需要运行的计算任务模块至所述查找到的空闲的节点服务 器以完成计算;上锁单元43,用于申请节点锁以保障所述计算任务模块与所述节点服务器的唯一 配对关系。所述数据库服务器还可以如图5所示,所述查找单元41包括排序单元51和顺序 查找单元52,其中,排序单元51,用于对节点服务器按照标识排序;顺序查找单元52,用于依排序顺序查找空闲的节点服务器。所述数据库服务器中还可以如图6所示,所述查找单元41包括List表单元61、运 行记录表单元62和比对单元63,其中,List表单元61,包括与所述服务器数据库相连的所有节点服务器的标识;运行记录表单元62,包括计算任务模块,以及该计算任务模块占用的节点服务器 这两项,计算任务模块这一项记载该计算任务模块的标识,配对节点服务器这一项记载该 计算任务模块占用的节点服务器的标识;比对单元63,用于通过比对节点服务器List表与运行记录表找出空闲的节点服 务器。所述数据库服务器还可以如图7所示,还包括sle印单元44,对于没有被提交至空闲节点服务器而又需要运行的计算任务模 块,对这些计算任务模块执行shell中的sle印动作。所述数据库服务器还可以如图8所示,还包括再次配对单元45,对于执行sle印动作的所述计算任务模块,当执行sle印动作达 到预定的时间段之后的,重新为该需要运行的计算任务模块配对一空闲的节点服务器,并 申请节点锁以保障该计算任务模块与所述节点服务器的唯一配对关系。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本 发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可 借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质 上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品 可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些 部分所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部 分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实 施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例 的部分说明即可。本发明可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务 器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶 盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的 分布式计算环境等等。
8
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序 模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组 件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由 通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以 位于包括存储设备在内的本地和远程计算机存储介质中。虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和 变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的 精神。
权利要求
一种Oracle RAC系统中实现负载均衡的方法,其特征在于,包括数据库服务器查找空闲的节点服务器;数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算;计算任务模块向数据库服务器申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系。
2.如权利要求1所述的方法,其特征在于,所述数据库服务器查找空闲的节点服务器, 包括数据库服务器对节点服务器按照标识排序,并依排序顺序查找空闲的节点服务器。
3.如权利要求1所述的方法,其特征在于,所述数据库服务器查找空闲的节点服务器, 包括数据库服务器通过比对节点服务器List表与运行记录表找出空闲的节点服务器; 所述运行记录表中包括计算任务模块,以及该计算任务模块占用的节点服务器这两 项,计算任务模块这一项记载该计算任务模块的标识,配对节点服务器这一项记载该计算 任务模块占用的节点服务器的标识;所述节点服务器List表中包括与所述服务器数据库相连的所有节点服务器的标识。
4.如权利要求1所述的方法,其特征在于,对于没有被提交至空闲节点服务器而又需 要运行的计算任务模块,对这些计算任务模块执行shell中的sle印动作。
5.如权利要求4所述的方法,其特征在于,对于执行sleep动作的所述计算任务模块, 当执行sleep动作达到预定的时间段之后的,重新为该需要运行的计算任务模块配对一空 闲的节点服务器,并申请节点锁以保障该计算任务模块与所述节点服务器的唯一配对关 系。
6.一种数据库服务器,其特征在于,包括 查找单元,用于查找空闲的节点服务器;提交单元,用于提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完 成计算;上锁单元,用于申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系。
7.如权利要求6所述的数据库服务器,其特征在于,所述查找单元包括排序单元和顺 序查找单元,其中,排序单元,用于对节点服务器按照标识排序; 顺序查找单元,用于依排序顺序查找空闲的节点服务器。
8.如权利要求6所述的数据库服务器,其特征在于,所述查找单元包括List表单元、运 行记录表单元和比对单元,其中,List表单元,包括与所述服务器数据库相连的所有节点服务器的标识; 运行记录表单元,包括计算任务模块,以及该计算任务模块占用的节点服务器这两项, 计算任务模块这一项记载该计算任务模块的标识,配对节点服务器这一项记载该计算任务 模块占用的节点服务器的标识;比对单元,用于通过比对节点服务器List表与运行记录表找出空闲的节点服务器。
9.如权利要求5所述的数据库服务器,其特征在于,还包括sleep单元,对于没有被提交至空闲节点服务器而又需要运行的计算任务模块,对这些 计算任务模块执行shell中的sle印动作。
10.如权利要求9所述的数据库服务器,其特征在于,还包括再次配对单元,对于执行sleep动作的所述计算任务模块,当执行sleep动作达到预定 的时间段之后的,重新为该需要运行的计算任务模块配对一空闲的节点服务器,并申请节 点锁以保障该计算任务模块与所述节点服务器的唯一配对关系。
全文摘要
Oracle RAC系统中实现负载均衡的方法和数据库服务器。一种Oracle RAC系统中实现负载均衡的方法,包括数据库服务器查找空闲的节点服务器;数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算;计算任务模块向数据库服务器申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系。利用本方法,可以保证计算性能。
文档编号G06F17/30GK101963969SQ20091016477
公开日2011年2月2日 申请日期2009年7月22日 优先权日2009年7月22日
发明者张清 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1