在多节点系统中资源动态分配的分层管理的制作方法

文档序号:6490634阅读:132来源:国知局
专利名称:在多节点系统中资源动态分配的分层管理的制作方法
技术领域
本发明涉及工作负荷管理,具体而言,涉及多节点计算机系统内的工作负荷管理。
背景技术
各企业正在寻找办法使他们的数据处理系统降低成本并提高效率。典型的企业数据处理系统是为每个企业应用程序都分配单独的资源。预先为每个应用程序分配足够的资源以处理该应用程序的估计最大负荷。各应用程序具有不同的负荷特性;一些应用程序在白天繁忙;而另一些应用程序则在晚上繁忙;一些报告每周运行一次,而另一些报告则每月一次。因此,有大量资源能力被闲置。网格计算使利用或消除这种闲置能力成为可能。实际上,网格计算被平衡以显著地改变了计算的经济效果。
网格是多个提供处理和一定程度的共享存储的计算元件的集合;网格资源被动态分配,以满足其客户机(client)的计算需求和优先级。网格计算可显著地降低计算成本,扩大计算资源的可用性,以及实现更高的生产率和更高的质量。网格计算的基本思想是将计算看作一种公用事业(utility),类似于电网或电话网。网格的客户机不关心其数据在何处或者在何处执行计算。客户机所想要的只是使计算被执行,以及当客户机需要时,将信息传递给客户机。
这类似于电力公用事业运行的方式;客户不知道发电机在何处,或者电网是如何连接的。客户只是要电力并得到了电力。目的是将计算变成一种公用事业—无处不在的商品。因此将其命名为网格。
当然,将网格计算看作一种公用事业是客户机侧的看法。从服务器侧或者现场后面来看,网格是关于资源分配、信息共享、和高可用性。资源分配确保所有那些需求或请求资源的都如愿以偿。资源不会被持续闲置,而请求却得不到服务。信息共享确保在信息客户机和应用程序被需要的地方和时刻,所需的信息客户机和应用程序可用。高可用性确保了所有数据和计算必须一直运转—正如公用事业公司必须一直提供电力。
用于数据库的网格计算可以从网格计算获益的一个计算机技术领域是数据库技术。网格可以支持多数据库以及根据要求动态分配和重新分配资源,以支持每个数据库的当前需求。当对数据库的需求增长时,更多的资源分配给该数据库,而从另一数据库释放其他资源。例如,在企业网格上,数据库是由运行在网格上的一个服务器刀片上的一个数据库服务器来服务的。向数据库请求数据的用户数量增加。响应于该增加,从一台刀片式服务器上取消用于另一数据库的数据库服务器,向该刀片式服务器提供用于正经受增长的用户请求的数据库的数据库服务器。
用于数据库的网格计算要求以不同的级别分配和管理资源。在对应于单数据库的级别,提供给数据库用户的性能以及用户之间所分配的数据库资源必须被监控,以确保每个用户的性能目标被满足。在数据库之间,必须管理数据库之间的网格资源的分配,以确保满足所有数据库的用户的性能目标。管理这些不同级别的资源的分配的工作,以及执行这种管理所需要的信息非常复杂。因此,要求提供一种机制,能够简化和有效地处理用于数据库系统的网格计算系统中的资源的管理,以及在网格内以不同级别分配资源的其它类型的系统。
本节中所描述的方法是可执行的方法,但不必是已被构思或执行的方法。因此,除非在此另有说明,在此部分中描述的方法不能仅因为包含在此背景技术部分中,就认为是现有技术。


本发明通过实例而不是限制的方式被阐明,附图中相同的附图标号表示相同的部件,其中图1是示出了本发明的一个实施例可在其上实现的多节点计算机系统的框图;图2是示出了根据本发明的一个实施例的节点的集群的框图;图3是示出了根据本发明的一个实施例的参与提供用于数据库的各种服务的集群的各组件和多节点数据库服务器的框图;图4是示出了用于将服务扩展至目标数据库实例和停止该目标数据库实例上的服务的进程的流程图;图5是示出了用于双相停止的进程的流程图;以及图6是可用在本发明的实施例中的计算机系统的框图。
具体实施例方式
描述了管理多节点环境中的资源分配的方法和装置。在下面的描述中,出于解释的目的,许多具体的细节被阐明以提供对本发明的彻底理解。然而,显而易见,本发明可以在没有这些具体细节的情况下实施。在其它实例中,已知的结构和装置以框图的形式示出,以避免对本发明造成不必要的混淆。
这里所描述的是用于有效且高效地管理在多节点数据库系统所提供的服务之间的多节点数据库系统的资源的动态分配的方法。服务是指特定种类或类型的工作,执行该工作是为了一个或多个客户机的利益。该服务包括对计算机资源的任何使用或消耗,包括,例如CPU处理时间、在易失性存储器中存储和存取数据、向永久性存储器(即磁盘存储器)写入和从中读出、以及使用网络或总线带宽。服务可以是例如,为数据库服务器的客户机上的特定应用程序而执行的工作。
本方法管理不同级别的资源分配。对于使用特定数据库的工作,由服务实现的性能被监控。分派给数据库的资源在服务之间被分配,以确保满足每一个的性能目标。分派给节点的集群的资源在数据库之间被分配,以确保满足使用数据库的所有服务的性能目标。
本方法使用分层导控器(director)管理不同级别的资源。一种导控器(数据库导控器)管理分配给服务之间的数据库的资源,这些服务使用数据库及其数据库实例。数据库导控器管理服务之间的数据库实例的分配。集群导控器管理数据库之间的节点的集群的资源,这些数据库的数据库服务器驻留于集群上。而另一导控器(场导控器(farm director))管理分配在集群之间的资源。
图1示出了可用于实现本发明的实施例的多节点计算机系统。参照图1,示出了集群场(cluster farm)101。集群场是一组节点,这些节点被组织成被称之为集群的节点组。集群在该集群中的节点之间提供了一定程度的共享存储(例如,共享一组磁盘驱动器)。
集群场中的节点的形式可以是通过网络相互连接的计算机(例如工作站、个人计算机)。可选地,节点可以是网格的节点。网格由节点构成,这些节点的形式是与机架上其它服务器刀片相互连接的服务器刀片。每个服务器刀片都是包括处理器、存储器、网络连接、以及单一主板上的有关的电子器件的计算机系统。通常,服务器刀片不包括板上存储器(处了易失性存储器),并且这些服务器刀片共享机架内的存储单元(例如,共享的磁盘),以及电源、冷却系统、和电缆。
在集群场中的集群的限定特性是通过软件控制可在场内的集群之间自动地转移该集群的节点,而无需将来自一个集群的节点有形地重新连接至另一集个。集群被在此称作集群软件的软件应用程序控制和管理。可执行集群软件以从集群中删除节点,以及为集群提供节点。集群软件提供命令行界面,其接收来自管理人员的请求,允许管理员输入命令以为集群提供节点和从集群中删除节点。该界面还可以采取应用程序接口(“API”)的形式,该接口可以被在该集群场内执行的其他软件调用。集群软件使用和维持元数据,这些元数据定义了场内集群的配置,包括集群配置元数据,其定义了场中集群的拓扑结构,包括了哪些特定节点在该集群中。元数据被修改以反映集群软件对集群场内的集群作出的改变。集群软件的实例是由OracleTM开发的软件,例如Oracle9i Real Application Clusters或Oracle Real Application Clusters 10g。在Oracle9i RACOracle RealApplication Clusters Configuration and Internals(作者为Mike Ault和Madhu Tumma,第二版,2003年8月2日)中描述了Oracle9i RealApplication Clusters。
集群场101包括集群110、120、和130。每个集群容留一个或多个多节点数据库服务器,这些服务器提供并管理对数据库的访问。
集群和多节点数据库服务器图2是示出了根据本发明的实施例的集群110。集群的定义特征是,集群被集群的客户机看作单个单元或实体,因为客户机发出对由该集群容留的业务的请求,而不指定哪个或哪些特定的节点执行请求,下面将对此作更详细的说明。
集群110包括多节点数据库服务器222、232、和242。多节点数据库服务器222、232、和242位于集群100的一个或多个节点上。诸如多节点服务器的服务器是集成的软件组件的与计算资源(例如,存储器、节点、和用于在处理器上执行集成的软件组件的进程)的结合,其中软件与计算资源的结合用于代表一个或多个客户机执行特定的函数。在数据库管理的其他函数中,多节点服务器控制和帮助访问特定数据库,处理客户机访问该数据库的请求。多节点服务器222、232、和242分别控制和提供对数据库220、230、和240的访问。服务器的另一个实例是网站服务器。
来自多节点计算系统中的多个节点的资源可以被分配,以运行服务器的软件。每个软件与来自节点的资源分配的结合是在此被称作“服务器实例”或“实例”的服务器。因此,多节点数据库服务器包括可在多个节点上运行的多个服务器实例。实际上,多节点数据库服务器的多个实例可以在相同的节点上运行。多节点数据库服务器包括多个“数据库实例”,每个数据库实例在节点上运行,并控制和帮助对特定数据库的访问。因此,每个实例在此可被称作特定数据库的数据库实例。集群通常被用于容留多节点数据库服务器。
集群110的客户机以及多节点数据库服务器222、232、和242包括客户机203和205。客户机203和205在经由例如网络与集群110互连的计算机上执行应用程序。在此使用的术语“应用程序”是指被设计为与服务器的函数交互以及使用服务器的函数的软件单元。总之,应用程序由执行一组相关函数的集成函数和软件模块(例如,由机器可执行代码或可解释代码、动态链接库构成的程序)所构成。
例如,客户机203包括执行FIN应用程序和PAY应用程序的计算机程序。FIN应用程序包括产生和分析企业的帐目和财务信息的软件。PAY应用程序产生和跟踪关于企业的职员报酬的信息。
数据库服务器222、232、和242的客户机不限于经由网络与集群110互连的计算机。例如,数据库服务器222可以是数据库服务器232的客户机。
诸如数据库220、230、和240的数据库是数据库对象的集合。数据库对象包括任何形式的结构数据。结构数据是根据限定该结构的元数据描述而构造的数据。结构数据包括关系表、对象表、对象关系表、和根据可扩展标记语言(“XML”)而构造的数据体,例如XML文档。
会话为了使客户机与集群110上的数据库服务器交互,为该客户机建立会话。会话,例如数据库会话,是为客户机建立的至服务器(例如数据库实例)的特定连接,通过会话,客户机发出一系列请求(请求执行数据库语句)。对于数据库实例上建立的每个数据库会话,会话状态数据被保持为反映数据库会话的当前状态。这些信息包含了,例如,为其建立该会话的客户机的身份,和由在数据库会话内执行软件的进程产生的临时变量值。
客户机通过向集群110发送数据库连接请求来建立数据库会话。
集群110的客户机,例如客户机203和205,可通过位于客户机的同一计算机上的客户机端界面组件来与集群110交互。客户机端界面组件包括API函数,其由被客户机203和205执行的应用程序调用。当指派了对数据库服务器的连接时,识别节点的连接信息被客户机端界面组件接收,并被它们用来由客户机向节点发送后续的请求。
指派给客户机的数据库会话可以迁移至另一数据库实例。迁移数据库会话必然要求在另一节点上创建新的数据库会话。当将关于迁移和连接的信息发送给客户机端界面组件时,该信息对于应用程序是不可访问的,该应用程序“没有意识”该迁移。由此,对于应用程序,该迁移是透明地执行的。在新数据库会话内执行将与旧数据库会话相关联的请求。在“Transparent Session Migration AcrossServers(50277-2383)”中描述了以这种方式迁移数据库会话的技术。
服务如上所述,服务是为了一个或多个客户机的利益而执行的特定类型或种类的工作。集群110向客户机203和205提供用于访问数据库220的数据库服务、用于访问数据库230的数据库服务、和用于访问数据库240的数据库服务。通常,数据库服务是由数据库服务器执行的用于客户机的工作,通常包括处理和/或计算要求访问数据库的查询的工作。在此所用的术语“查询”是指符合数据库语言(例如SQL)的数据库语句,以及包括指定操作的数据库语句以添加、删除、或修改数据以及创建和修改数据库对象,例如表、对象视图、和可执行例程。
与任何服务一样,数据库服务可以进一步分成或分类成子类。用于数据库220的数据库服务可进一步分成FIN服务和PAY服务。FIN服务是由数据库服务器222执行的用于FIN应用程序的数据库服务。通常,该服务包括访问数据库220上的数据库对象,该数据库存储了用于FIN应用程序的数据库数据。PAY服务是由数据库服务器222执行的用于PAY应用程序的数据库服务。通常,该服务包括访问数据库220上的数据库对象,该数据库存储了用于PAY应用程序的数据库数据。
有多种方式可以将由集群实现的工作分成或分类为服务的多个种类或子类,本发明并不限定于任何特定的方式。例如,工作可以基于用户或者用户组(商业企业,企业内的部门)被分成多个服务,其中工作是为用户或用户组而执行的。
提供服务的参与者图3示出了参与提供用于数据库220的各种服务的集群110和多节点数据库服务器222的组件。参照图3,多节点数据库服务器222包括数据库实例322、332、342、352、和362,其分别位于节点320、330、340、350、和360上,并管理对数据库220的访问。数据库实例可使用实例管理应用程序提供给特定节点或从特定节点中删除。例如作为Oracle9i Real Application Clusters或Oracle RealApplication Clusters 10g的一部分,可得到实例管理应用程序。实例管理应用程序提供可由管理员或客户机调用的命令行界面或API,以为节点提供数据库实例或从节点中删除数据库实例。
多节点数据库服务器222的数据库实例被分配了特定服务。数据库实例322和332被分配了服务FIN。数据库实例342和352被分配了服务PAY。实例362还没有被分配任何服务。当实例、节点、或集群已经被分配以执行服务时,服务被称作运行或位于或驻留在实例、节点或集群上。因此,FIN服务被称作运行或位于数据库实例322和332、以及节点320和330上。
接收器390是运行在集群110上的进程,其接收客户机数据库连接请求,并将它们指引至集群110内的数据库实例。所接收的客户机连接请求与服务(例如,服务FIN、PAY)相关联。将该客户机请求指引至容留该服务的数据库实例,在此为该客户机建立数据库会话。如上所述,该会话可以迁移至另一数据库实例。接收器390以对应用程序透明的方式将该请求指引至特定的数据库实例和/或节点。接收器390可以在集群110内的任何节点上运行。一旦为客户机建立了数据库会话,则客户机可发布另外的请求,其可以是函数的形式或者远程程序调用的形式,并且其包括了以下请求开始执行交易、执行查询、执行更新以及其他类型的交易操作、提交或终止交易、以及终止数据库会话。
监控工作负荷资源被分配和再分配以满足资源上的性能的级别和基数限制。为特定服务建立的性能级别和资源可用性在此被称作服务级别协定(service-level agreement)。通常应用于多节点系统且并不一定应用于特定服务的资源上的性能级别和基数约束在此被称作策略。例如,用于服务FIN的服务级别协定可能要求用于服务FIN的平均交易时间不超过给定阈值作为性能级别,以及至少两个实例容留服务FIN作为可用性要求。策略可能要求任何节点的CPU利用率不应超过80%。
在此策略还可以被称作后台策略,因为它们被后台管理员用来管理整个系统的性能,以及用来在认为资源不足以满足所有服务组的服务级别协定时,在一组服务之间分配资源。例如,策略为一个数据库指定相对于另一数据库较高的优先级。当资源不足以满足两个数据库的服务的服务级别协定时,具有较高优先级的数据库,以及使用该数据库的服务在分配资源时将会优先。
为了满足服务级别协定,需要一种机制来监控和测量各种资源上的工作负荷。这些工作负荷的测量用于确定服务级别协定是否被满足,以及根据满足服务级别协定所需来调节资源的分配。
工作负荷监控器,例如工作负荷监控器388,是运行于集群的节点上的分布式进程组,以监控和测量集群的工作负荷,并产生“性能度量”。工作负荷监控器388运行在集群110上。性能度量是基于性能测量指示一个或多个资源或服务的性能级别的数据。在“Measuring Workload by Service(50277-2337)”中描述了执行这些函数的方法。所产生的信息可以被多节点数据库服务器222内的各种组件访问,其中各种组件负责管理资源的分配以满足服务级别协定,后面将对此更详细地描述。
可被用于测量指示性能或工作负荷的级别的特性或条件的特定类型的性能度量,在此被称作性能指标(performance measure)。性能指标包括例如交易执行时间或CPU使用百分率。通常,涉及性能级别的服务级别协定可通过基于性能指标的阈值和标准来限定。
例如,交易的执行时间是性能指标。基于该指标的服务级别协定是,用于服务FIN的交易应该在300毫秒内执行。然而,另一个工作指标是节点的CPU使用百分率。基于该指标的后台策略是,节点不承受超过80%的使用率。
性能度量可指示集群的性能、在集群、集群中的节点、或特定数据库实例上运行的服务的性能。服务所特有的性能度量或指标在此被称作服务性能度量或指标。例如服务FIN的服务性能度量是为服务FIN执行的用于交易的交易时间。
分层资源分配网格计算涉及动态分配计算机资源以满足服务级别协定。在实施例中,以一级或多级的资源分配分层来平衡或调节计算机资源。该分层的每级具有在用户(例如服务)之间分配的不同的资源池组。资源池是特定类型的一群资源,例如服务可用的节点和数据库实例、数据库可用的节点或集群可用的节点。资源分配中的三级是数据库级、集群级、和场级。
数据库级在数据库级,被分配的资源池是那些当前用于特定数据库的资源池,包括数据库的数据库实例和容留它们的节点。数据库级的资源池(即,可以在数据库级被分配的资源)可以在数据库的服务之间被分配,以满足服务级别协定。通常,这涉及将服务安置于实例上,和将会话安置于实例上。
可以以多种方式安置会话。第一种方式在此称作连接时间平衡。在连接时间平衡之下,接收器390通过指引向数据库220的实例请求特定服务的数据库连接请求来平衡多个服务实例之间的工作负荷。例如,假定数据库实例322上的服务FIN比其他实例提供了更好的服务性能。因此,接收器390将要求FIN服务的数据库连接请求的较大部分指引至数据库实例322。
安置会话的第二种方法被称作运行时(run-time)会话平衡。在运行时会话平衡之下,数据库会话从一个数据库实例迁移至另一个数据库实例。数据库会话利用透明的会话迁移来迁移。如上所述,“Transparent Session Migration Across Servers”中描述了用于执行该迁移的技术。
服务安置需要扩展和压缩服务。在服务扩展和压缩之下,数据库实例被分配给容留的服务或从容留的服务中解除分配。当数据库实例被分配以容留业务时,在该实例上可为该服务创建更多的数据库会话,从而增加与该服务相关联和该服务可用的数据库会话的数量。例如,为了满足用于服务FIN的服务级别协定,实例322和332被分配以运行服务FIN。随着用于该服务的需求的增长,该服务级别协定不再被满足。当服务级别协定不被满足时,该服务级别协定被称作被违反。响应于该服务级别违反,FIN服务被分配有另一实例,实例342。一个实例可以运行不止一个服务。出于说明的目的,一个实例仅运行一个服务。因此,当将FIN添加至实例342时,服务PAY从实例342中停止,即,实例342解除分配给用于PAY服务的资源,并停止该实例上的该服务。
集群级在集群级,在数据库(即,数据库服务)之间平衡当前分配给集群的资源,以满足服务级别协定。在该级别平衡的资源池是数据库实例和容留数据库实例的节点。通常,在此级别平衡资源涉及在该集群中现有的节点中加入实例和从中删除实例。例如,响应于服务级别违反,为了满足服务级别协定,将实例362加入节点360,该节点已经存在于用于多节点数据库服务器222的集群中。
场级在该级,可在多个服务之间分配的资源是集群中的节点。用于集群的节点池是动态的。例如,响应于服务级别违反,向多节点数据库服务器222的集群中加入节点370。
调节资源分配的动作的分层通常,在较低级别的资源分配分层上调节资源比在较高级别的资源分配分层上有较少的破坏性(disruptive)。将数据库对话和服务迁移到在数据库级上的运行实例和从运行实例中迁移出,比在集群级提供或删除新的数据库实例具有较少的失败和较低成本。重配置在实体(资源已经分配给了这些实体)之间指派的资源比从较高级别请求指派更多的资源要便宜。在数据库级别上的服务安置和会话迁移比在集群级改变用于数据库的数据库实例的数量要便宜。在数据库级内,迁移会话以在已经容留了服务的实例之间重配置这些会话比服务扩展和收缩要便宜,因为后者影响了服务的拓扑结构,可能会对负荷分布有较大的整体影响。
为了补救服务级别违反,从资源分配分层的最低级开始调节资源分配。以此方式,服务级别违反通常以较少的失败和较低成本的方式被补救。如果可通过调节数据库级的资源分配来解决服务级别违反,则不求助于较高级别的资源分配。某些服务级别违反要求一些或所有级别的调节。
例如,响应于服务级别违反,将FIN提供给实例352,并从同一实例中删除PAY,但只有当删除服务PAY不违反PAY的服务级别协定时。否则,将服务FIN扩展至另一数据库实例。然而,如果没有可用的可向其提供服务FIN的实例,则提供新实例。这是通过在集群级进行分配,向集群中已有的节点360提供新实例362。然后,通过将服务FIN扩展至实例362,可在数据库级进行分配,该实例在服务被提供时,是已经分配给数据库220的实例。
导控器(director)分层根据一个实施例,被称作分布式导控器的分布式系统组件负责管理各级别上的资源的工作负荷和资源分配。作为在此使用的术语,系统组件是软件、数据、以及一个或多个执行该软件以及使用和维护该数据以执行特定函数的进程的结合。分布式系统组件是在多个节点上执行。优选地,但不是必须的,导控器是数据库实例的系统组件,并在该数据库实例的控制之下进行操作。分布式导控器包括在集群场101的多个节点上执行的导控器。
根据一个实施例,导控器负责管理在资源分配分层的一个或多个级别上的资源分配。特别地,对于每个数据库,导控器用作在数据库级管理资源分配的数据库导控器。数据库的其他数据库实例可具有用作备份数据库导控器的导控器,准备如果当前有效的数据库导控器由于例如系统故障而变得不能执行该任务,则接管来作为有效的数据库导控器。
对于每个集群,集群被用作集群导控器。集群导控器负责管理在用于集群的集群级的资源分配。集群内的其他导控器作为备份集群导控器。
最后,导控器充当场导控器。场导控器负责管理在场级的资源分配。集群内的其他导控器充当备份场导控器。
导控器接收、保持、和产生管理在该导控器的对应级上的工作负荷所需的信息。
参照图3,导控器380在数据库实例342上运行。导控器380充当用于数据库220的数据库导控器、用于集群110的集群导控器、和用于集群场101的场导控器。其他导控器分别用作用于数据库230和240的数据库导控器,以及分别用作用于集群120和130的集群导控器。
通常,为了解决服务级别违反,在资源分配分层的所有级别上的导控器可参与补救该违反。数据库导控器试图通过调节在数据库级上的资源分配来补救服务级别违反。如果服务级别违反要求在资源分配分层的下一更高级别(即集群级)上的调节,则数据库导控器将服务级别违反的解决升级到集群导控器。如果服务级别违反要求在资源分配分层的最高级别(即,场级别)的调节,则集群导控器将服务级别违反的解决升级到场导控器。对服务级别违反的补救可涉及通过所有导控器来调节资源分配。
导控器使用消息队列相互通信。根据一个实施例,消息队列是储存于容留导控器的数据库实例的数据库中的表。该表的记录或行对应于消息队列。记录指示由负责响应该类型消息的导控器响应消息所采取的任何动作的状态。例如,数据库导控器可从集群导控器请求数据库实例。将该请求被添加至队列。集群导控器扫描消息队列,检测到该请求,然后对它作用,更新记录以反映响应于该请求所采取的动作。集群导控器发送消息至数据库导控器,消息安置于数据库导控器的消息队列中。
使用数据库220中的表的优点是使得面向交易的数据库系统(例如多节点数据库服务器222)的能力(power)和容量可以用来持久地和可恢复地存储消息队列。当有效数据库、集群、或场导控器失败时,进入其位置的备份导控器可以以与导控器失败时留下的方式一致的状态访问消息队列。在“Recoverable AsynchronousMessage Driven Processing in a Multi-Node System”(50277-2414)中描述了这种消息队列及其使用。
数据库导控器数据库导控器负责监控服务的服务性能以确保满足服务级别协定,用于从数据库220的数据库实例扩展或收缩服务、以及用于在数据库220的数据库实例之间迁移数据库会话。数据库导控器还可访问和储存用于每个使用数据库的服务的服务性能度量和服务级别协定。基于这些服务性能度量和服务级别协定,数据库导控器确保了以两种方式满足服务级别协定(1)通过产生和发送信息至接收器,保持与服务级别协定一致的服务性能以允许接收器平衡在服务实例之间的负荷;以及(2)通过检测服务级别违反和启动对资源分配的调节来补救服务级别违反。
为了保持与服务级别协定一致的服务性能,使用了连接时间平衡。特别地,导控器380产生和提供在此称作性能等级的信息至接收器390。性能等级引导具有平衡负荷的接收器390,以保持服务性能一致。性能等级指示一个实例上的服务相对于其他实例的相对服务性能。基于该性能等级,接收器390将请求服务的连接用户的分布倾向于提供更好服务性能的数据库实例。“Calculation ofService Performance Grades in a Multi-node Environment That Hoststhe Services”(50277-2410)中描述了产生性能等级和基于性能等级以该方式分配用户请求的技术。
补救服务级别违反要求检测服务级别违反。导控器380通过将服务性能度量与服务级别协定相比较来检测服务的业务级别违反。例如,导控器380从工作负荷监控器388接收指示用于服务FIN的平均交易时间超过30毫秒的服务性能度量。用于服务FIN的服务级别协定要求平均交易时间不多于20毫秒。导控器380通过将实际平均交易时间与服务级别协定相比较来检测服务级别违反。
当数据库导控器检测到服务的服务级别违反时,其根据资源分配分层,在尝试更有破坏性的和更高成本的资源分配调节之前先尝试最不具破坏性的和最低成本的资源分配调节。为此,数据库导控器首先确定,通过将分配给服务的数据库会话迁移至另一服务性能更好的数据库实例,来在已容留服务的实例之间平衡工作量是否可补救服务级别违反。以实现服务实例之间的平衡负荷为目标的方式来选取迁移的数据库会话的数量。
如果数据库导控器确定不应该通过重新平衡现有服务实例之间的负荷来解决服务级别违反,则导控器380尝试通过扩展服务,即通过分配另外的现有数据库实例(在此称之为目标数据库实例)容留该业务来补救该服务级别违反。如果目标数据库实例不是正在容留业务,则通过分配该目标数据库实例容留该服务来扩展该服务。如果目标数据库实例容留了另外的服务,则如果数据库导控器确定了如此做不会导致其他服务的服务级别违反,那么数据库导控器可终止该服务。
图4示出了当必须首先终止目标数据库实例上的服务时,导控器380作为用于数据库220的数据库导控器所执行的,用于扩展服务至另一目标数据库(目标数据库)实例的进程的流程图。出于说明的目的,服务PAY由数据库实例342、352、和362容留,后者位于节点360上。服务FIN被扩展至数据库实例342。运行在实例342上的服务PAY的服务实例正被终止。
参照图4,在步骤410,导控器380发送阻止消息至接收器390。阻止信息指示接收器390停止将用于服务PAY的用户请求分配到目标数据库实例342。
在步骤420,数据库导控器380将目标数据库实例上的数据库会话迁移至容留服务FIN的其他数据库实例。以平衡其他数据库实例之间的工作负荷的方式来在其他数据库实例之间分配数据库会话。
在步骤430,导控器380发送服务启动消息至接收器390。服务启动消息指示接收器390服务FIN正在实例362上运行。
在步骤440,导控器380使用运行时平衡来平衡在其上正在运行服务FIN的实例(即实例322、332、342)之间的工作负荷。
有时,导控器380可能确定没有服务能够不违反目标实例上的服务级别协定而收缩来为其他业务的扩展腾出空间。在此情况下,导控器380可选择将服务扩展至没有容留任何服务的数据库实例。如果没有数据库实例可用,则导控器380从集群导控器请求一个数据库实例。响应于此,集群导控器根据请求提供另外的数据库实例,并通知导控器380。导控器380将服务扩展至该新的数据库实例。
服务级别协定可限制服务的基数。例如,用于服务FIN的服务级别协定要求至少一个但不多于三个数据库实例容留服务FIN,以及服务PAY则至少由三个数据库实例来容留。
除了使用于扩展另一服务的数据库实例可用以外,还可以有其他原因终止服务。例如,服务FIN的基数限制可根据天的时间而变化。在正常的办公时间内,服务FIN的基数可以高达三,但在非办公时间内,基数可以不高于一。在非办公时间的开始,三个数据库实例正在容留服务FIN。数据库导控器380通过终止在两个数据库实例上的服务来收缩服务FIN。
数据库导控器可能需要响应集群导控器所产生的请求。这样的动作包括响应集群导控器的请求以终止数据库实例,即,终止由数据库实例当前容留的服务。当集群导控器希望用另一数据库的数据库实例替换一个数据库的数据库实例时,需要该步骤。
集群导控器集群导控器负责将数据库实例提供给集群中现有的节点和从中删除。集群导控器还实施数据库级别策略。数据库级别策略要求例如用于数据库的数据库实例的基数落入最小值和/或最大值内,或要求当没有足够的资源满足所有服务级别协定时,集群导控器将数据库实例的分配倾向于被指派为具有较高资源分配优先级的数据库。以此方式在数据库之间倾斜,还可将资源分配倾向于使用了较高优先级的数据库的服务。集群导控器可访问和存储指定数据库之间资源分配的优先级的数据。这种数据可由集群的管理员来配置。
集群导控器响应于数据库导控器对数据库实例的请求(“NEED-INSTANCE”请求),提供和删除数据库实例。如果在集群内存在未容留数据库实例的节点(“空闲节点”),则集群导控器通过向数据库实例提供空闲节点来将另一节点分配给数据库。
如果集群中没有空闲节点,则集群导控器可通过向场导控器发布“NEED-NODE”请求来从场导控器请求一个节点。如果场导控器不能提供一个节点,则集群导控器裁定由该集群容留的数据库之间的数据库实例的分配。该裁定可能需要从集群中的节点中删除数据库的数据库实例和提供为其产生NEED-INSTANCE请求的数据库的数据库实例。
图5是示出了用于裁定数据库之间的数据库实例的分配的进程的流程图。用于数据库220的数据库导控器确定了需要用于服务的另一数据库实例,并产生了用于集群导控器的NEED-INSTANCE请求,该集群导控器是导控器380。导控器380凭借其作为集群导控器的能力,确定另一数据库的数据库实例应该从集群110内的节点删除,从而该节点可用于提供用于数据库220的另一数据库实例。
参照图5,在步骤510,作为集群导控器的导控器380发送“VOLUNTEER-TO-QUIESCE”请求至数据库导控器,而不是请求数据库导控器(即,发布NEED-INSTANCE请求的导控器)。VOLUNTEER-TO-QUIESCE请求的目的是询问数据库导控器,其是否可停止一个数据库实例,即其是否可减少用于该导控器的数据库的数据库实例的基数。数据库的数据库导控器可通过自愿、发送指示用于数据库的数据库实例可被停止的消息来响应。数据库导控器可向停止数据库实例倾斜,即减少数据库实例的基数。数据库导控器可发送拒绝该请求的消息的一个原因是,所有导控器的数据库实例都需要满足服务的可用性要求。
如果数据库导控器380从数据库导控器接收至少一个肯定数据库实例可停止的消息,即多于一个的数据库导控器自愿者,那么在步骤520,导控器380从这些自愿的数据库中选择数据库。可选择具有较低资源分配优先级的数据库,以有利于具有较高资源分配优先级的数据库。出于说明的目的,导控器380选择数据库240。集群导控器384发送消息至数据库240的数据库导控器,以从容留数据库实例的节点中停止数据库240的数据库实例。
如果数据库导控器380没有从数据库导控器接收到肯定数据库实例可被停止的消息,即,没有数据库导控器自愿者,那么在步骤530,导控器380选择具有较低资源分配优先级的数据库。导控器380然后发送消息至所选数据库的数据库导控器,以停止数据库实例。在“On Demand Node and Server Allocation and DeAllocation”(50277-2413)中进一步详细地描述了选择要停止的数据库实例的技术。
在步骤540,数据库240的数据库导控器停止节点上的数据库实例,并向集群导控器,即导控器380发送数据库实例被停止的通知(“INSTANCE-IDLE”通知)。在步骤550,导控器380接收该通知。
在步骤560,集群导控器380从节点中删除该数据库实例,然后使用例如集群软件的实例提供API将数据库230的数据库实例提供给该节点。
作为裁定数据库之间的数据库实例分配的结果,由数据库提供的服务放弃该节点可能遭受服务级被违反。可增加集群中节点的基数(下面将对此更详细地说明),从而空闲节点变为可用,并可用于补救这种服务级别违反。作为集群导控器的导控器380,监控集群配置元数据,以检测何时更多的空闲节点变得可用,并可将这些空闲节点分配给遭受服务级别违反的数据库。例如,在当前实例中,数据库220的数据库导控器在放弃该数据库实例之后,继续检测服务级别违反,以及响应于此,发送NEED-INSTANCE请求至其集群导控器,导控器380。最终,在检测到更多空闲节点被加入集群110之后,导控器380能够通过向空闲节点提供数据库实例来响应于请求中的一个。
场导控器场导控器负责在集群场中的集群之间分配节点,通过从一个集群中删除节点,然后将该节点提供给另一集群,以在这些集群之间移动节点。集群导控器还实施集群范围策略(cluster-wide policy)。集群宽策略可要求例如集群内的节点的基数落入最小值和/或最大值内。
响应于来自集群导控器的NEED-NODE请求,场导控器依据集群服务级别协定,向集群提供节点,以及从另一集群中删除空闲节点。场导控器与集群场内的集群导控器一致,裁定节点的分配。该进程需要发送“RELINQUISH-NODE”请求至集群导控器,该集群导控器响应它们指示他们是否可放弃节点。基于该响应,场导控器选择集群,并与所选择的集群的集群导控器交互,以从该集群中删除节点。从该集群中删除节点可能需要停止数据库实例。一旦停止了数据库实例,则场导控器从所选集群中删除该节点以及向需要该节点的集群提供节点,这是通过调用使用用于该目的的API的集群软件来实现的。
另外,场导控器使用从在每个集群上执行的工作负荷监控器接收的性能度量来监控集群场内的集群的性能。如果性能度量指示,集群正在违反服务级别协定或者没有象其它集群一样工作良好,则场导控器将一个或多个节点从较好工作的集群移动至较差工作的集群。
导控器的选择如上所述,在数据库的数据库实例内,存在多个导控器可用作有效的导控器或备份导控器。因此,需要一种机制来确定哪个导控器是有效导控器。此外,当有效导控器故障时,需要选择备份数据库导控器做为有效数据库导控器。对于集群导控器和场导控器来说存在同样的需求。在此将选择有效导控器的进程称作导控器选择。
有多种方式可选择数据库导控器。首先涉及数据库全局锁。数据库全局锁用于使在数据库的所有数据库实例的控制之下运行的进程同步。一旦启动,数据库导控器请求排它锁。如果没有数据库导控器持有该锁,则数据库导控器被授予该锁,并担任数据库导控器的位置。如果确实可以,则随后请求该锁的其他导控器不被授予该锁,并担任备份导控器的位置直到被授予该锁。请求保持挂起(pending),直到被请求者授予或撤回。
多节点数据库服务器检测数据库全局锁的持有者何时经历系统故障。这样,故障持有者的数据库全局锁被取消或被释放,以及用于数据库全局锁的挂起请求被授予备份数据库导控器。被授予锁的备份数据库导控器于是担任数据库导控器的角色。
用于导控器选择的另一技术涉及进程组的使用。进程组是可由在集群内的任何节点上执行的进程加入的组。该组的成员被通知,另一成员何时停止运行(例如,由系统故障导致)或离开该进程组。另外,当加入该组时,成员被指派有标识符。
当导控器启动时,其加入用于其数据库的进程组。如果在加入的导控器上具有最高成员标识符,则该导控器担当该数据库的数据库导控器的位置。当有效导控器停止运行时,进程组的成员被通知,并且具有最高成员标识符的成员担当数据库导控器的角色。
可使用类似的技术来选择集群导控器。集群宽锁可以被用于导控器选择,或者用于集群的进程组可以被使用。
在这些技术之下,可以实现,担当集群导控器角色的导控器可以是不同于前面有效集群导控器的数据库的导控器。因此,消息队列可以位于不同的数据库上。相比于位于另一数据库上的数据库实例,数据库上的表可以被位于该数据库的数据库实例上的进程更有效地访问。
一种可用于确保担当有效导控器角色的备份导控器被同一数据库的数据库实例容留的技术,是静态数据指定技术。在该技术之下,数据库被指定为容留(即,其数据库实例容留)用于集群的集群导控器的数据库。只有用于该数据库的导控器起到用于集群的集群导控器的作用。这些导控器中的导控器选择可以通过使用全局数据库锁或用于该数据库的进程组来执行。
数据库可由管理员使用由集群软件为此目的提供的接口来指定。为了加强备份集群导控器的可用性,可指定具有高优先级和高最小/最大基数要求的数据库,以确保相对较多数量的备份导控器。静态数据库指定方法可用于选择有效的场导控器。
使用分层的导控器组织场集群内的资源管理,有助于管理资源所需的信息的产生和交换。通常,在特定数据库内运行的进程(即,特定数据库的数据库实例的进程)相比于不在数据库内的进程,能够与在该数据库内的其他进程更有效地通信。因此,用作数据库的数据库导控器并且从运行在数据库内的一个或多个工作负荷监控器获取的服务性能度量的导控器,能够比在其他数据库内运行的导控器更有效地获取数据。另外,因为在数据库内仅有一个数据库导控器有效,所以获得和产生用于运行数据库的服务的信息的工作(例如服务性能度量、服务级别协定、消息队列数据),仅需要由一个导控器执行。
对于集群导控器而言,类似地,仅需要该集群内的一个导控器执行以下工作访问消息队列、和获得集群服务级别协定和追踪哪些节点在该集群中以及节点容留什么数据库的什么数据库实例所需的信息。
信息和信息交换被分配的方式被用于限定导控器本身可采取的管理服务性能的动作以及哪些动作可被导控器采用来升级或降低至另一导控器。例如,再分配数据库之间的数据库实例要求知道以下信息集群中哪些节点可用,以及哪些节点具有哪些数据库实例。因此,当不知道这些信息的数据库导控器检测到要求数据库之间的数据库实例的重新分配形式的动作的服务级别被违反时,数据库导控器将该动作升级至知道这种信息的集群导控器。
可选实施例的实例通过动态分配数据库服务和数据库服务的子类中的多节点系统的资源,描述本发明的实施例。然而,本发明并不限定于此。
例如,本发明的实施例可用于在由应用程序服务器提供的服务中分配容留应用程序服务器的多节点系统的计算机资源。例如,应用程序服务器是部分三层结构(three tier architecture),其中应用程序服务器位于客户机与数据库服务器之间。应用程序服务器主要用于存储应用程序代码、提供对应用程序代码的访问,和执行应用程序代码,而数据库服务器主要用于存储和提供对用于应用程序服务器的数据库的访问。应用程序服务器将对数据的请求发送至数据库服务器。响应于执行存储于应用程序服务器上的应用程序代码,该请求可由应用程序服务器产生。应用程序服务器的一个实例是Oracle 9i Application Server或Oracle 10g Application Server。类似于在此所述的多节点服务器的实例,应用程序服务器可分配为在多个节点上执行的多个服务器实例、容留可在服务器实例之间迁移的多个会话的服务器实例。
本发明也不限于仅由执行相同软件产品或相同版本的软件产品的拷贝的服务器实例所构成的同质的多节点服务器。例如,多节点数据库服务器可由多组服务器实例构成,每组执行来自不同厂商的不同的数据库服务器软件,或执行来自相同厂商的不同版本的数据库服务器软件。
透明会话迁移透明会话迁移允许客户机以对于为其创建初始会话的应用程序而言是透明的方式,将客户机从一个服务器上的会话切换至另一服务器上的另一个会话。术语迁移是指以下操作一个服务器上的现有会话的客户机从现有的会话切换至另一会话,允许现有会话终止,并且允许该客户机使用其他会话代替现有的会话。现有会话在此是指已经被迁移的。术语“透明”是指以下面的方式执行操作相对于一个单元的软件而言,不需要在单元中执行被设计以执行操作的指令。因此,在透明会话迁移之下,客户机在会话之间转换,而不用执行被设计为实现该迁移的应用程序指令。相反,客户机侧接口部件(应用程序通过该客户机侧接口部件与服务器交互)处理迁移的细节,修改客户机侧接口部件的内部状态,以使其实现。为了运行在此描述的技术,不必修改传统的应用程序。
会话的状态被捕获和恢复,以迁移会话。捕获会话状态需要产生字节流,作为该会话的会话状态的真正拷贝,其可储存于对象、文件、或其他类型的数据结构中,并随后被访问以恢复该会话。在透明会话迁移之下,在源服务器上捕获客户机会话,产生存储于数据结构中并被传送至目的地服务器的字节流,其中,目的地服务器通过将该字节流装载入为客户机建立的目的地服务器上的会话中来恢复该会话。
会话的迁移当将来的应用程序调用取决于前应用程序调用所产生的会话状态时,数据库会话可以是“有状态(statefull)”。因为将来的应用程序调用对状态满会话的会话状态的潜在依赖,所以状态满数据库会话的迁移需要确定存储于源实例上的部分会话状态是否可以转移至另一数据库实例,如果可以,则在源数据库实例与目的地实例之间转移会话状态的拷贝。在实施例中,为了确定存储于源实例上的部分会话状态是否可以转移至另一数据库实例,进行各种迁移检查以确定会话状态是否可以转移至另一数据库实例。这些迁移检查包括确定数据库会话是处于交易边界,处于调用边界、还是处于组件边界。
如果当前没有正在为该对话执行的有效交易,则数据库会话处于交易边界。交易是作为原子单位被执行的工作的逻辑单元。在数据库系统的环境中,数据库必须反映由交易做出的所有改变,或由交易得到的没有改变,以确保数据库的完整性。因此,由交易得到的没有变化都永久地应用至数据库,直至该交易已被完全执行。当由交易事务做出的改变是永久改变时,该交易被称作“执行”。如果交易还没有被执行、中止、或被其他形式地终止,则交易是有效的。
如果数据库实例已经结束了执行客户机调用而不是处于处理该调用的中间阶段,则数据库会话处于调用边界。例如,为了处理执行数据库语句的调用,数据库实例经历多个阶段,每个阶段对应于特定类型的操作。这些阶段是(1)创建指针;(2)分析数据库语句并赋值其变量;(3)执行数据库语句;(4)读取行以返回到查询;以及(5)关闭指针。在“Oracle8 Server Concepts”Release 8.0,Volume 3(其内容结合于此作为参考)的第23章中更详细地描述了这些阶段。中间阶段是在该调用的处理结束之前执行的操作。中间阶段是阶段(1)-(5)。在实例响应于调用执行步骤(5)之后,源会话处于调用边界。
如果会话的每个“数据库组件”位于其各自的组件边界,则会话处于组件边界。数据库组件是数据库服务器上的一组软件模块,其提供特定的和相关的函数。组件会话状态由数据库组件专门产生和使用。根据实施例,可将会话状态看作组件会话状态的联合或结合。以下是数据库组件的实例。指针组件管理数据库实例内的指针。指针是用于存储关于分析的数据库语句的信息和其他与处理数据库语句有关的信息的存储器的区域。PL/SQL组件是可负责执行以PL/SQL(由Oracle Corporation发布的程序化数据库语言)写成的代码(例如,程序)的数据库组件。会话参数组件是负责管理通常控制与会话相关联的调用和请求如何被处理的属性的数据库组件。属性存储在部件会话状态中。例如,会话参数可包括控制用于通过执行查询返回的结果的特殊人类语言的属性。Java组件是负责执行以Java写成的代码(例如,类和对象方法)的数据库组件。Java组件使用组件会话状态以储存与执行Java代码有关的信息。
如果数据库组件的组件会话状态可迁移至另一会话,则数据库会话处于特定数据库组件的组件边界。数据库组件提供返回指示数据库组件的各个组件会话状态是否可以被迁移的值的函数。数据库会话的组件会话状态不可以被迁移的原因是,组件会话状态包括打开文件的文件描述符。文件描述符包含仅对容留该数据库会话的实例有效的信息。
该函数是由每个数据库组件支持的回叫函数的部分接口。调用这些函数以捕获和恢复组件会话状态,以及确定组件会话状态是否允许会话被迁移。
产生性能度量性能度量是指示为一个或多个资源由服务实现的服务质量。后台程序从为每个会话和驻留在数据库实例上的服务产生的性能统计产生性能度量。类似于性能度量,性能统计可指示性能的质量。然而,性能统计通常包括关于具体资源的具体使用的更多详细信息。性能统计包括例如会话使用了多少CPU时间、调用的速度、会话产生的调用数量、完成会话的调用所需要的响应时间、多少CPU处理时间用于分析用于会话的查询、多少CPU处理时间用于执行查询、多少逻辑和物理读取被执行用于会话、以及用于输入和输出各种资源的操作的等待时间,例如读取特定组的数据块或写入特定组的数据块的等待时间。为会话所产生的性能统计由与该会话相关联的服务来合计。
对于在数据库实例上所建立的每个会话,会话对象被创建为在数据库实例上建立会话的部分。会话对象包含被数据库实例使用的信息项以管理会话。在这些信息项中具有为对话限定的服务标识符。在实施例中,服务标识符是由服务的服务名称产生的哈希值。
通过执行会话内请求的工作的程序产生并合计性能统计。例如,为发送请求以执行查询的客户机建立数据库会话。用于会话的程序执行数据库服务器软件,分析查询,并用公式表示用于并行计算查询的执行方案。分析数据库查询,用公式表示执行方案并计算该查询的数据库服务器软件还产生和合计性能统计。数据库服务器软件通过会话和该会话的服务来合计性能统计。性能统计被存储于性能统计储存库中,该性能统计储存库可以是例如与会话相关联或与不和任何会话有联系的服务相关联的存储器内的固定表。将用于会话的性能统计合计,且存储于用于该会话的存储器内的表中。将用于服务的性能统计合计,且存储于用于该服务的存储器内的表中。
例如,会话与服务PAY相关联。为了计算查询,指定给该会话的数据库程序使用.4秒CPU时间。该程序将.4添加到用于服务PAY的存储器内的表中的小计上。
工作负荷监控器周期性地(例如每5秒)访问性能统计储存库,以产生性能量度,并将产生的性能度量存储于性能度量储存库中,该性能度量储存库优选地是存储器内数据库表。工作负荷监控器可以每5秒访问性能统计储存库,以产生性能度量,包括性能等级。将性能等级发送至用于连接时间平衡的接收器。接收器使用性能等级以执行连接时间平衡,建立用于服务的提供较高性能的数据库实例上的服务发出连接请求的会话。
工作负荷监控器还可以在性能度量被产生示对其进行比较以检测服务级别协定违反。当检测到服务的性能违反时,工作负荷监控器发送消息以警告负责响应该服务级别违反的导控器(例如数据库导控器)。
需要限定服务及其各种属性和服务的质量(例如,服务级别协定)。根据实施例,数据库服务器提供命令行界面,该界面从人类管理员接收命令以创建和修改数据库服务器的服务的限定。将这些限定作为数据库配置数据存储在数据库中的词典中,作为“服务配置”。
硬件综述图6是示出可以执行本发明的实施例的计算机系统600的框图。计算机系统600包括用于传递信息的总线602或其它通信装置以及用于处理信息的与总线602连接的处理器604。计算机系统600还包括连接至总线602的主存储器606,诸如随机访问存储器(RAM)或者其它动态存储装置,用于储存信息和将由处理器604执行的指令。在执行将由处理器604执行的指令期间,主存储器606还可用于储存临时变量或其他中间信息。计算机系统600进一步包括只读存储器(ROM)608或连接至总线602的其他静态存储装置,用于存储静态信息和处理器604的指令。提供诸如磁盘或光盘的存储设备610,并连接至总线602用于存储信息和指令。
计算机系统600可以经由总线602连接至诸如阴极射线管(CRT)的显示器612,用于向计算机用户显示信息。包括字母数字键和其他键的输入装置614连接至总线602,用于将信息和指令选择传递到处理器604。另一种类型的用户输入装置是光标控制616,诸如鼠标、跟踪球、或光标方向键,用于将方向信息和命令选择传递到处理器604并用于控制显示器612上的光标移动。输入装置通常在两个轴上(第一个轴(例如X轴)和第二个轴(例如Y轴))具有两个自由度,使装置能指派平面上的位置。
本发明涉及计算机系统600的使用,用于执行在此描述的技术。根据本发明的一个实施例,通过计算机系统600响应于执行包括在主存储器606中的一个或多个指令的一个或多个序列的处理器604,来实现这些技术。这样的指令可以从诸如存储装置610的其它计算机可读介质读入主存储器606。包括在主存储器606中的指令序列的执行,使得处理器604执行此处所述的处理步骤。在可选实施例中,可以使用硬连线电路(hard-wired circuitry)来取代软件指令或者与软件指令结合来实施该发明。因此,本发明的实施例将不限于硬件电路和软件的任何特定组合。
这里使用的术语“计算机可读介质”是指参与向处理器604提供指令用于执行的任何介质。这种介质可以采取多种形式,包括但不限于非易失性介质、易失性介质、和传递介质。非易失性介质举例来说包括光盘或磁盘,诸如存储装置610。易失性介质包括动态存储器,诸如主存储器606。传输介质包括同轴电缆、铜线、和光纤,包括组成总线602的导线。传输介质还可采取声波或光波形式,例如那些在无线电波和红外线数据通信过程中产生的声波和光波。
通常形式的计算机可读介质包括如软盘、软性盘、硬盘、磁带,或者任何其它磁性介质、CD-ROM、任何其它光介质、打孔纸、纸带、或者任何带孔图样的物理介质、RAM、PROM、EPROM、FLASH-EPROM、或者其他任何存储芯片或者盒式磁带,或者以下提到的载波、或者计算机可读的任何其他介质。
各种形式的计算机可读介质可参与将一个或者多个指令的一个或多个序列承载到处理器604用于执行。例如,指令开始可承载在远程计算机的磁盘中。远程计算机可以将指令加载到其动态存储器中,然后使用调制解调器通过电话线发送指令。计算机系统600本地的调制解调器可接收电话线上的数据,并使用红外发射器将数据转换成红外信号。红外探测器可以接收红外信号携带的数据,并且合适的电路可以将数据放到总线602上。总线602将数据承载到主存储器606,处理器604从主存储器取回并执行这些指令。在由处理器604执行这些指令之前或之后,由主存储器606接收的指令可随意地储存在存储装置610上。
计算机系统600还包括连接至总线602的通信接口618。提供双向数据通信的通信接口618,连接到与局域网622连接的网络链路620。例如,通信接口618可以是综合业务数字网(ISDN)卡或者调制解调器,用于提供到相应类型的电话线的数据通信连接。又如,通信接口618可以是局域网(LAN)卡,用于提供至兼容局域网(LAN)的数据通信连接。也可以使用无线链路。在任何这样的实施中,通信接口618发送和接收承载表示各种类型的信息的数字数据流的电信号、电磁信号、和光学信号。
网络链路620通常可通过一个或者多个网络向其它数据装置提供数据通信。例如,网络链路620可通过局域网622与主机624连接,或者与互联网业务提供商(ISP)626操作的数据设备连接。ISP626又通过目前通称为“互联网”628的全球分组数据通信网络提供数据通信业务。局域网622和互联网628都使用承载数字数据流的电信号、电磁信号、或光学信号。通过各种网络的信号和网络链路620上的信号以及通过通信接口618的信号,都传送数字数据给计算机系统600或者传送来自计算机系统的数字数据,是传输信息的载波的示例性形式。
计算机系统600能通过网络、网络链路620、和通信接口618发送消息和接收数据(包括程序代码)。在互联网的实例中,服务器630可通过互联网628、ISP 626、局域网622、和通信接口618,传送用于应用程序的所请求的程序代码。
所接收的代码可以在其被接收时由处理器604执行,和/或储存在存储装置610或者其它非易失性介质中用于随后执行。按照这种方式,计算机系统600可以以载波的形式获得应用代码。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种用于动态分配多节点计算机系统的计算机资源的方法,所述方法包括以下计算机执行的步骤监控由运行在所述多节点计算机系统上的多个服务实现的性能,其中所述多个服务包括第一服务和第二服务;基于所述的监控多个服务的所述性能,产生性能度量,所述性能度量指示由所述多个服务的每个服务实现的性能;基于所述性能度量,所述多节点计算机系统为所述第一服务检测服务级别协定的违反;以及响应于检测所述服务级别协定的所述违反,所述多节点计算机系统调节在所述第一服务与所述第二服务之间的所述多节点系统的计算机资源的分配。
2.根据权利要求1所述的方法,其中,所述调节资源分配的步骤包括分配所述多节点系统的另一节点以容留所述第一服务。
3.根据权利要求1所述的方法,其中,第一服务器运行在所述多节点系统的第一节点上,其中,所述调节资源的分配的步骤包括将所述第一服务扩展至所述第一服务器。
4.根据权利要求3所述的方法,其中,调节资源的分配包括将所述第一服务器提供给所述第一节点,以执行将所述第一服务扩展至所述第一服务器的所述步骤。
5.根据权利要求1所述的方法,其中所述多节点系统包括第一节点和第二节点;为所述第一节点上的所述第一服务建立第一组会话;为所述第二节点上的所述第一服务建立第二组会话;以及所述分配资源的步骤包括将至少一个会话从所述第二组迁移至所述第一节点。
6.根据权利要求1所述的方法,其中所述计算机资源包含资源池;所述调节计算机资源的分配的步骤包括在尝试调节在分层中较高的第二资源池的分配之前,尝试通过为所述第一服务调节在所述分层中较低的第一资源池的分配来解决所述性能违反;以及所述资源池包括第一资源池和第二资源池。
7.根据权利要求6所述的方法,其中所述资源池包括作为所述第一资源池的第一服务器池和作为所述第二资源池的第二节点池;以及所述尝试解决所述性能违反的步骤包括在尝试添加来自所述第二池的另一节点以容留所述第一服务之前,尝试分配来自所述第一池的另一服务器以容留所述第一服务。
8.根据权利要求7所述的方法,其中,所述步骤进一步包括,响应于增加所述另一节点,向所述另一节点提供另一服务器。
9.根据权利要求6所述的方法,其中所述第一多节点服务器包括第一服务器、第二服务器、和第三服务器;所述第一服务器容留用于所述第一服务的多个会话;以及所述尝试解决所述性能违反的步骤包括在分配所述第三服务器以容留所述第一服务之前,尝试将所述多个会话中的至少一个会话迁移至所述第二服务器。
10.根据权利要求1所述的方法,其中所述多个服务中的每个服务是由所述多节点系统执行的一类工作;以及所述调节所述多节点系统的计算机资源的分配的步骤包括调节分配至所述多类工作的每类的计算机资源。
11.根据权利要求10所述的方法,其中多个软件单元执行在与所述多节点系统互连的一组客户计算机上;以及每类工作对应于来自所述多个单元的一个特定软件单元。
12.根据权利要求11所述的方法,其中,每类工作对应于响应由来自所述多个单元的某个特定软件单元所产生的请求而执行的工作。
13.一种用于动态分配包括第一组节点和第二组节点的多节点计算机系统的计算机资源的方法,所述方法包括以下步骤监控容留在所述多节点系统上的多个服务的性能,以产生性能度量;基于所述的监控多个服务的所述性能,产生性能度量,所述性能度量指示由所述多个服务的每个服务实现的性能;其中,所述多节点系统包括第一组节点和第二组节点;在所述第一组节点上运行第一多节点服务器和第二多节点服务器;其中,所述多个服务包括由所述第一多节点服务器容留的第一服务和第二服务;运行在所述第一组节点上的第一系统组件,基于所述性能度量调节在所述第一服务与所述第二服务之间的所述第一多节点服务器的资源的分配;以及运行在所述第一组节点上的第二系统组件,基于所述性能度量调节在所述第一多节点服务器与所述第二多节点服务器之间的所述第一组节点的资源的分配。
14.根据权利要求13所述的方法,其中,所述步骤进一步包括所述第一系统组件为所述第一服务检测服务级别违反;以及响应于为所述第一服务检测的所述服务级别违反,所述第一系统组件发送第一请求至所述第二系统组件,以调节在所述第一多节点服务器与所述第二多节点服务器之间的所述第一组节点的资源的分配。
15.根据权利要求13所述的方法,其中,所述第二系统组件调节在所述第一多节点服务器与所述第二多节点服务器之间的所述第一组节点的资源的分配包括,所述第二系统组件分配在所述第一多节点服务器与所述第二多节点服务器之间的节点。
16.根据权利要求13所述的方法,所述步骤进一步包括所述第一系统组件为所述第一服务检测服务级别违反;以及响应于为所述第一服务检测所述服务级别违反,所述第一系统组件调节在所述第一服务与所述第二服务之间的所述第一多节点服务器的资源的分配。
17.根据权利要求16所述的方法,其中所述第一多节点服务器包括第一服务器实例和第二服务器实例;以及其中,所述调节所述第一多节点服务器的资源的分配的步骤包括,使所述第二服务器容留所述第一服务。
18.根据权利要求16所述的方法,其中所述第一多节点服务器包括第一服务器实例和第二服务器实例;所述第一服务器实例容留用于所述第一服务的至少一个会话;所述第二服务器实例容留用于所述第一服务的至少一个会话;以及所述调节所述第一多节点服务器的资源的分配的步骤包括,在所述第一服务器实例与所述第二服务器实例之间调节用于所述第一服务的会话的平衡。
19.根据权利要求14所述的方法,其中,响应于接收所述第一请求,所述第二系统组件将所述第一多节点服务器的另一服务器实例提供给另一节点。
20.根据权利要求19所述的方法,其中所述第一组节点是共享对至少一个永久性存储装置的访问的节点的第一集群;所述第二系统组件发送第二请求至在所述多节点系统上运行的第三系统组件,以请求另一节点;以及所述第三系统组件基于所述性能度量,在所述多节点系统内的所述第一集群与另一集群之间分配节点。
21.根据权利要求19所述的方法,其中,提供另一服务器实例,使所述第二系统组件发送消息至所述第一系统组件,以指示所述另一服务器实例是可用的。
全文摘要
用于有效且高效地在多节点数据库系统所提供的服务之间管理多节点数据库系统的资源的动态分配的方法。服务是驻留在数据库服务器上的一类工作。所述方法管理不同级别上的资源分配。对于使用特定数据库的服务,该服务所实现的性能被监控。在这些服务之间分配指定给该数据库的资源,以确保每个的性能目标被满足。在数据库之间分配指定给节点的集群的资源,以确保使用数据库的所有服务的性能目标都被满足。基于服务级别协定和后台策略,在集群之中指定被指定给集群的场的资源。该方法使用分层的导控器来管理不同级别上的资源。
文档编号G06F7/00GK1836212SQ200480023057
公开日2006年9月20日 申请日期2004年8月13日 优先权日2003年8月14日
发明者本尼·苏德尔, 德巴希什·查特吉, 拉克希米纳拉亚南·奇丹巴拉恩, 戴维·布劳尔, 卡罗尔·科尔雷恩, 丹尼尔·塞姆勒, 克里斯托弗·坎塔尔吉叶夫, 詹姆斯·W·斯塔莫斯 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1