1、10申请公布号CN101963969A43申请公布日20110202CN101963969ACN101963969A21申请号200910164774722申请日20090722G06F17/3020060171申请人阿里巴巴集团控股有限公司地址英属开曼群岛大开曼岛资本大厦一座四层847号邮箱72发明人张清74专利代理机构北京集佳知识产权代理有限公司11227代理人逯长明王宝筠54发明名称ORACLERAC系统中实现负载均衡的方法和数据库服务器57摘要ORACLERAC系统中实现负载均衡的方法和数据库服务器。一种ORACLERAC系统中实现负载均衡的方法,包括数据库服务器查找空闲的节点服务器;
2、数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算;计算任务模块向数据库服务器申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系。利用本方法,可以保证计算性能。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书6页附图3页CN101963970A1/2页21一种ORACLERAC系统中实现负载均衡的方法,其特征在于,包括数据库服务器查找空闲的节点服务器;数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算;计算任务模块向数据库服务器申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系。2
3、如权利要求1所述的方法,其特征在于,所述数据库服务器查找空闲的节点服务器,包括数据库服务器对节点服务器按照标识排序,并依排序顺序查找空闲的节点服务器。3如权利要求1所述的方法,其特征在于,所述数据库服务器查找空闲的节点服务器,包括数据库服务器通过比对节点服务器LIST表与运行记录表找出空闲的节点服务器;所述运行记录表中包括计算任务模块,以及该计算任务模块占用的节点服务器这两项,计算任务模块这一项记载该计算任务模块的标识,配对节点服务器这一项记载该计算任务模块占用的节点服务器的标识;所述节点服务器LIST表中包括与所述服务器数据库相连的所有节点服务器的标识。4如权利要求1所述的方法,其特征在于,
4、对于没有被提交至空闲节点服务器而又需要运行的计算任务模块,对这些计算任务模块执行SHELL中的SLEEP动作。5如权利要求4所述的方法,其特征在于,对于执行SLEEP动作的所述计算任务模块,当执行SLEEP动作达到预定的时间段之后的,重新为该需要运行的计算任务模块配对一空闲的节点服务器,并申请节点锁以保障该计算任务模块与所述节点服务器的唯一配对关系。6一种数据库服务器,其特征在于,包括查找单元,用于查找空闲的节点服务器;提交单元,用于提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算;上锁单元,用于申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系。7如权利要求6所
5、述的数据库服务器,其特征在于,所述查找单元包括排序单元和顺序查找单元,其中,排序单元,用于对节点服务器按照标识排序;顺序查找单元,用于依排序顺序查找空闲的节点服务器。8如权利要求6所述的数据库服务器,其特征在于,所述查找单元包括LIST表单元、运行记录表单元和比对单元,其中,LIST表单元,包括与所述服务器数据库相连的所有节点服务器的标识;运行记录表单元,包括计算任务模块,以及该计算任务模块占用的节点服务器这两项,计算任务模块这一项记载该计算任务模块的标识,配对节点服务器这一项记载该计算任务模块占用的节点服务器的标识;比对单元,用于通过比对节点服务器LIST表与运行记录表找出空闲的节点服务器。
6、权利要求书CN101963969ACN101963970A2/2页39如权利要求5所述的数据库服务器,其特征在于,还包括SLEEP单元,对于没有被提交至空闲节点服务器而又需要运行的计算任务模块,对这些计算任务模块执行SHELL中的SLEEP动作。10如权利要求9所述的数据库服务器,其特征在于,还包括再次配对单元,对于执行SLEEP动作的所述计算任务模块,当执行SLEEP动作达到预定的时间段之后的,重新为该需要运行的计算任务模块配对一空闲的节点服务器,并申请节点锁以保障该计算任务模块与所述节点服务器的唯一配对关系。权利要求书CN101963969ACN101963970A1/6页4ORACLER
7、AC系统中实现负载均衡的方法和数据库服务器技术领域0001本发明涉及数据库技术领域,特别涉及一种ORACLERAC系统中实现负载均衡的方法和数据库服务器。背景技术0002ORACLERACREALAPPLICATIONCLUSTERS系统中,包括数据库和与之相连的若干节点服务器,其系统结构如图1所示。0003数据库中具有数量较多的计算任务模块,对于企业来说,每个计算任务模块对应某个或某些业务问题、商业问题的程序实现。不同的计算任务模块由于业务问题、商业问题的复杂性不同,需要处理的数据量不同,且计算方式也可能不同。例如,问题越多越复杂,需要处理的数据量一般就会越大,耗费的计算资源也会越多。耗费的
8、计算资源具体可以包括节点服务器的CPU,内存,硬盘等硬件资源以及逻辑资源等。0004计算任务模块中的程序需要交给相连的节点服务器上实现计算。这样,数据库中大量的计算任务模块中的程序就会交给若干相连的节点服务器进行计算。0005为了实现良好的计算性能,现有技术中采用负载均衡技术。现有的ORACLERAC系统中,根据每个节点可以并行执行的进程数量来决定将某个计算任务模块对应的程序分配给哪个节点服务器执行。节点服务器的并行进程是ORACLE系统中处理任务的最小单元,对应的要耗费前述所说的节点服务器的CPU、内存、硬盘等硬件资源以及逻辑资源。随着计算任务模块中的程序的处理,该程序所需的并行进程数量是动
9、态变化的。而现有的负载均衡技术中,在特定情况下,会给已被计算任务模块中程序占用一定量运行进程,但还有剩余可用运行进程的节点服务器分配新的计算任务模块中的程序,以利用该节点服务器剩余的可用资源。而当节点服务器上先前运行的计算任务模块中的程序需要的并行进程数动态变化较多时,则很可能此时节点服务器已达到最大负载,无法提供更多的资源,从而影响计算任务模块中程序的计算,导致计算性能下降。0006例如,节点服务器A初始时运行计算任务模块1中的程序1,设该程序1初始时需要4个并行进程,即节点服务器提供4个并行进程执行计算任务模块1中的程序1;当有计算任务模块2中的程序2需要运行,且所述节点服务器A上存在2个
10、空闲的并行进程时,可能分配节点服务器A的这两个空闲并行进程运行计算任务模块2的程序2。由于计算任务模块中的程序需要的进程是动态变化的,经过一段时间后,程序1可能需要共6个并行进程来运行,对于当前节点服务器A最大只支持提供6个并行进程的情况,则此时节点服务器A已达到最大负载,无法提供更多的资源来运行程序1,这样,影响计算任务模块中程序的计算,导致计算性能下降。0007可见,现有技术中的负载均衡方案,会导致计算性能的下降。发明内容0008本申请实施例的目的是提供一种ORACLERAC系统中实现负载均衡的方法和数据说明书CN101963969ACN101963970A2/6页5库服务器,以保证计算性
11、能。0009为解决上述技术问题,本申请实施例提供一种ORACLERAC系统中实现负载均衡的方法和数据库服务器是这样实现的0010一种ORACLERAC系统中实现负载均衡的方法,包括0011数据库服务器查找空闲的节点服务器;0012数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算;0013计算任务模块向数据库服务器申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系。0014一种数据库服务器,包括0015查找单元,用于查找空闲的节点服务器;0016提交单元,用于提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算;0017上锁单元,用于申请节
12、点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系。0018由以上本申请实施例提供的技术方案可见,数据库服务器查找空闲的节点服务器,数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算,计算任务模块向数据库服务器申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系,通过在业务模块这个层次,而不是业务模块内部的SQL段层次进行RAC节点资源的负载均衡的分配,并在并发业务模块申请的情况下通过申请ORACLE内部锁机制来确保一个节点在一个时间点的时候只有一个业务模块运行。这种负载均衡机制彻底解决了ORACLE的机遇并行进程数的负载均衡策略,是一种全新的负载均
13、衡策略。附图说明0019为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。0020图1为现有技术中ORACLERAC系统的结构图;0021图2为本申请ORACLERAC系统的结构图;0022图3为本申请ORACLERAC系统中实现负载均衡的方法实施例的流程图;0023图4为本申请数据库服务器实施例的框图;0024图5为本申请数据库服务器另一实施例的框图;0025图6为本申请数据库服务
14、器另一实施例的框图;0026图7为本申请数据库服务器另一实施例的框图;0027图8为本申请数据库服务器另一实施例的框图。具体实施方式0028本申请实施例提供一种ORACLERAC系统中实现负载均衡的方法和数据库服务器。说明书CN101963969ACN101963970A3/6页60029首先对数据库和数据仓库的概念做一些辨析。数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。维是看问题的角
15、度,比如时间,部门,维表就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID。以银行业务为例,数据库是事务系统的数据平台,客户在银行做的每笔交易都会写入数据库,被记录下来,这里,可以简单地理解为用数据库记账。数据仓库是分析系统的数据平台,它从事务系统获取数据,并做汇总、加工,为决策者提供决策的依据。比如,某银行某分行一个月发生多少交易,该分行当前存款余额是多少。如果存款又多,消费交易又多,那么该地区就有必要设立ATM了。0030本申请中的数据库也可以为数据仓库的概念,针对ORACLERAC的负载均衡技术,两者都可以适用。0031为了使本技术领域的人员更好地理解本申请中的技术方案,下面将
16、结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。0032图2示出了本申请由数据库服务器和节点服务器组成的ORACLERAC系统。如图2中所示,ORACLERAC系统中包括数据库服务器和若干节点服务器。在数据库服务器中,又包括若干计算任务模块。如前所述,每个计算任务模块对应某个或某些业务问题、商业问题的程序实现,不同的计算任务模块需要耗费一定的计算资源。耗费的计算资源具体可以包括节点服务器
17、的CPU,内存,硬盘等硬件资源以及逻辑资源等。计算任务模块中的程序需要交给相连的节点服务器以完成计算。0033图3示出了本申请ORACLERAC系统中实现负载均衡的方法实施例的流程图,如图3所示,包括0034S310数据库服务器查找空闲的节点服务器。0035本申请的实现方式定位于计算任务模块和节点服务器这两个层次。数据库服务器查找空闲的节点服务器,具体的,在单个节点服务器上,只要有一个计算任务模块正在运行,那么就跳过此节点服务器,继续寻找下一个空闲节点服务器。0036在数据库服务器中,可以按照节点服务器的标识排序,如按照节点标识中的数字大小进行排序节点服务器1,节点服务器2,节点服务器3。进而
18、,依排序顺序查找空闲的节点服务器。例如如果找到的第一个节点服务器不是空闲的,则继续按照排序顺序查找,直到找到空闲的节点服务器。0037另外,数据库服务器中可以存储有运行记录表和节点服务器LIST表。该运行记录表中包括计算任务模块,以及该计算任务模块占用的节点服务器或称为与该计算任务模块配对的节点服务器,简称配对节点服务器这两项。该运行记录表中计算任务模块这一项记载该计算任务模块的标识,配对节点服务器这一项记载该计算任务模块占用的节点服务器的标识。当然,如果某一计算任务模块没有配对的节点服务器,则运行记录表中该计算任务模块对应的配对节点服务器表项为空。节点服务器LIST表中包括与所述服务器数据说
19、明书CN101963969ACN101963970A4/6页7库相连的所有节点服务器的标识,即记录所有可以提供计算的节点服务器的标识。则,通过比对节点服务器LIST表与运行记录表,即比对得到在节点服务器LIST表中而不在运行记录表的配对节点服务器的节点服务器,从而可以找出空闲的节点服务器。0038S320数据库服务器提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算。0039如前所述,数据库中大量的计算任务模块中的程序需要交给相连的节点服务器进行计算。从整体上来看,把计算任务模块分配给节点服务器进行计算,实际上就是通过使用ORACLE提供的SQLPLUS客户端连接到数据库上,执
20、行分配到节点服务器的计算任务模块。0040S330计算任务模块向数据库服务器申请节点锁以保障所述该计算任务模块与所述节点服务器的唯一配对关系。0041ORACLE内部提供了锁机制,该锁机制可以保障在某一计算任务模块抢到节点锁并没有释放的情况下,其他计算任务模块无法再申请得到该节点锁。0042考虑到对于S310中查找出某一空闲的节点服务器,可能同时有多个计算任务模块需要提交至这个空闲的节点服务器以完成计算。对于这种多个计算任务模块数量并发的情况,如果没有一种机制,则会将多个计算任务模块都提交至找到的空闲节点服务器。本申请中,通过ORACLE内部的锁机制,可以保障所述计算任务模块与所述节点服务器的
21、唯一配对关系。0043向数据库服务器申请节点锁,典型的可以采用下面的代码实现0044DBMS_LOCKALLOCATE_UNIQUEL_INSTNAME,LOCKHANDLE;0045LNDBMS_LOCKREQUESTLOCKHANDLE,TIMEOUT100;0046WHILELNNOTIN0,4LOOP0047DBMS_LOCKSLEEP300;0048LNDBMS_LOCKREQUESTLOCKHANDLE,TIMEOUT0;0049特别的,如果多个计算任务模块同时申请节点锁,那么节点锁可以随机分配给提出申请的一个计算任务模块。0050对于没有被提交至空闲节点服务器而又需要运行的计算任
22、务模块,可以对这些计算任务模块执行SHELL中的SLEEP动作,直到一个预定的时间段之后再重新为该计算任务模块配对一空闲的节点服务器,并同样申请节点锁以保障该计算任务模块与所述节点服务器的唯一配对关系。这个预定时间段在可能的情况下越短越好,不过太短的话对系统也有负面影响,一般来说,分钟级别的长度可以接受。SHELL是系统的用户界面,提供了用户与内核进行交互操作的一种接口,用于接收用户输入的命令并将其送入内核去执行。0051由以上实施例可见,通过在业务模块这个层次,而不是业务模块内部的SQL段层次进行RAC节点资源的负载均衡的分配,并在并发业务模块申请的情况下通过申请ORACLE内部锁机制来确保
23、一个节点在一个时间点只运行一个业务模块。这种负载均衡机制彻底解决了现有ORACLE中的负载均衡策略导致计算能力下降的问题,保证了计算性能,是一种全新的负载均衡策略。0052以下介绍本申请中的数据库服务器实施例,图4示出了该数据库服务器实施例的框图,如图4所示,包括0053查找单元41,用于查找空闲的节点服务器;说明书CN101963969ACN101963970A5/6页80054提交单元42,用于提交需要运行的计算任务模块至所述查找到的空闲的节点服务器以完成计算;0055上锁单元43,用于申请节点锁以保障所述计算任务模块与所述节点服务器的唯一配对关系。0056所述数据库服务器还可以如图5所示
24、,所述查找单元41包括排序单元51和顺序查找单元52,其中,0057排序单元51,用于对节点服务器按照标识排序;0058顺序查找单元52,用于依排序顺序查找空闲的节点服务器。0059所述数据库服务器中还可以如图6所示,所述查找单元41包括LIST表单元61、运行记录表单元62和比对单元63,其中,0060LIST表单元61,包括与所述服务器数据库相连的所有节点服务器的标识;0061运行记录表单元62,包括计算任务模块,以及该计算任务模块占用的节点服务器这两项,计算任务模块这一项记载该计算任务模块的标识,配对节点服务器这一项记载该计算任务模块占用的节点服务器的标识;0062比对单元63,用于通过
25、比对节点服务器LIST表与运行记录表找出空闲的节点服务器。0063所述数据库服务器还可以如图7所示,还包括0064SLEEP单元44,对于没有被提交至空闲节点服务器而又需要运行的计算任务模块,对这些计算任务模块执行SHELL中的SLEEP动作。0065所述数据库服务器还可以如图8所示,还包括0066再次配对单元45,对于执行SLEEP动作的所述计算任务模块,当执行SLEEP动作达到预定的时间段之后的,重新为该需要运行的计算任务模块配对一空闲的节点服务器,并申请节点锁以保障该计算任务模块与所述节点服务器的唯一配对关系。0067为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施
26、本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。0068通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备可以是个人计算机,服务器,或者网络设备等执行本发明各个实施例或者实施例的某些部分所述的方法。0069本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他
27、实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。0070本发明可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。说明书CN101963969ACN101963970A6/6页90071本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例
28、程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。0072虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。说明书CN101963969ACN101963970A1/3页10图1图2说明书附图CN101963969ACN101963970A2/3页11图3图4图5图6说明书附图CN101963969ACN101963970A3/3页12图7图8说明书附图CN101963969A
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1