具有互联的集群系统及方法转让专利

申请号 : CN200380104436.5

文献号 : CN1717659B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 威姆·A·科凯尔茨

申请人 : 甲骨文国际公司

摘要 :

提供了一种用于集群系统的系统和方法。该集群包括多个运行软件实例的节点。该节点通过一个网络访问一个或多个数据存储设备中的文件。该节点通过一个互联网络互相连接。

权利要求 :

1.一种集群系统,包括:

一个或多个数据存储设备;

多个节点,每个都具有与一个或多个数据存储设备的数据通信存取;

一个互连总线,用于提供多个节点间的、利用IEEE 1394协议的串行节点到节点通信链路;

基于IEEE 1394的自监视逻辑,用于当增加一个新节点时,自动在互连总线上发送一信号,并基于互连总线上的信号自动检测集群中的拓扑变化。

2.如权利要求1所述的集群系统,其中互连总线上的信号是一个偏置信号。

3.如权利要求1所述的集群系统,其中互连总线上的信号包括信号强度的变化。

4.如权利要求1所述的集群系统,其中该信号是非轮询信号。

5.如权利要求1所述的集群系统,其中节点到节点通信链路提供了多个节点间的直接存储器访问。

6.如权利要求1所述的集群系统,其中节点到节点通信链路提供了通过多个节点的异步消息。

7.如权利要求1所述的集群系统,其中多个节点的每一个都是一个独立处理设备。

8.如权利要求1所述的集群系统,其中多个节点通过节点到节点通信链路被串行连接。

9.如权利要求1所述的集群系统,还包括在应用实例和互连总线间通信的设备驱动器。

10.如权利要求1所述的集群系统,其中一个或多个数据存储设备是通过多个节点中的每一个直接访问的。

11.如权利要求1所述的集群系统,其中多个数据存储设备中的一个都是通过从多个节点中的一个选出的节点而访问的。

12.如权利要求1所述的集群系统,其中每个节点保存多个节点的节点图。

13.如权利要求1所述的集群系统,其中多个节点包括一个或多个数据库实例;并且其中所述一个或多个数据存储设备中的至少一个被配置为数据库。

14.一种用于在第一节点和第二节点间通信的方法,该方法包括下列计算机执行步骤:通过第一网络在所述第一节点和第二节点间发送数据,其中使用基于IEEE 1394的协议通过所述第一网络传输所述数据并且所述第一网络是节点到节点串行通信链路;

通过第二网络在所述第一节点和一个或多个数据存储设备间以及在所述第二节点和所述一个或多个数据存储设备间发送数据,其中所述第二网络与所述第一网络不同;

当增加一个新节点时,自动在第一网络上发送一信号,并基于IEEE 1394协议根据第一网络上的信号自动检测第一网络中的拓扑变化。

15.如权利要求14所述的通信的方法,还包括通过第一网络在所述第一节点和所述第二节点间异步地发送数据。

说明书 :

技术领域

本发明涉及节点集群。特别适用于一个包括节点间的互连的集群系统和方法。

背景技术

一个集群是作为单个系统互相协作的一组独立的服务器。主要的集群元件是处理器节点、集群互连(专用网络)、和一个磁盘子系统。多个集群共享磁盘存取和管理数据的资源,但每个不同的硬件集群节点不共享存储器。每一节点具有自己专用的系统存储器以及自己的操作系统、数据库实例和应用软件。集群相对单个对称的多处理器系统可以改善故障复原和模块化增加系统的增长。在子系统出现故障的情况下,集群可以保证较高的可用性。冗余的硬件元件,如其他的节点、互连及共享的磁盘提供了更高的可用性。这样的冗余硬件结构避免了单个的多点故障并提供故障复原。
在一个数据库集群中,每个节点对于CPU和存储器的需求随数据库的应用不同可以变化。性能和费用要求也在数据库的应用之间变化。影响性能的一个因素是集群中的每一节点需要让该集群中的其他节点不断通知其状况和构造。这通过周期性地经过网络广播一条被称作心跳(heartbeat)的网络消息来实现。该心跳信号通常通过一个专用网络、一个用来进行节点间通信的集群互连来发送。然而,丢失的或延迟的心跳消息可能产生节点没有发生作用的错误报告。
在现有的系统中,已经通过在每个节点安装网卡并通过一个适当的网络电缆对他们进行连接并配置一个软件协议在线路上运行来构建集群互连。该互连通常是一个低成本/低速度运行TCP/IP或UDP的以太网卡,或者是高成本/高速度的专用互连,如Compaq的运行可靠数据报(RDG)的存储信道或超通信协议(HMP)的Hewlett-Packard的Hyperfabric/2。一种低成本/高速度的互连将降低用户的集群成本并减少运行期间的等待时间。
本发明提供了一种新的有用的解决上述问题的集群方法和系统。

发明内容

在一个实施例中,提供了一种包括一个或多个数据存储设备和单个节点的集群,所述多个节点的每一个具有与所述一个或多个数据存储设备的数据通信访问。互连总线提供多个节点之间的节点到节点通信链路。自监控逻辑基于互连总线上的信号检测集群中的拓朴变化。
根据另一实施例,提供一种在集群中通信数据的方法,其中所述集群包括通信网络中的多个节点和一个或多个数据存储设备,并且多个节点的每一个控制一个软件实例。多个节点经由互连总线彼此通信。在多个节点中通过互连总线将数据请求消息从第一节点直接发送到第二节点,从第二节点请求一选择的数据。如果选择的数据是可用的,则通过直接存储访问由第二节点提取所述选择的数据,并且所述选择的数据通过互连总线从第二节点直接发送到第一节点。
本发明提供一种集群系统,包括:一个或多个数据存储设备;多个节点,每个都具有与一个或多个数据存储设备的数据通信存取;一个互连总线,用于提供多个节点间的、利用IEEE 1394协议的串行节点到节点通信链路;基于IEEE 1394的自监视逻辑,用于当增加一个新节点时,自动在互连总线上发送一信号,并基于互连总线上的信号自动检测集群中的拓扑变化。
本发明还提供一种用于在第一节点和第二节点间通信的方法,该方法包括下列计算机执行步骤:通过第一网络在所述第一节点和第二节点间发送数据,其中使用基于IEEE 1394的协议通过所述第一网络传输所述数据并且所述第一网络是节点到节点串行通信链路;通过第二网络在所述第一节点和一个或多个数据存储设备间以及在所述第二节点和所述一个或多个数据存储设备间发送数据,其中所述第二网络与所述第一网络不同;当增加一个新节点时,自动在第一网络上发送一信号,并基于IEEE 1394协议根据第一网络上的信号自动检测第一网络中的拓扑变化。

附图说明

在结合到本说明书的部分以及构成本说明书的部分的附图中,阐明了本发明系统和方法的实施例,其连同下面给出的详细描述用于描述该系统和方法的示例性实施例。应该理解,图中示出的元件(如逻辑单元或逻辑单元组)的边界表示多个边界的一个例子。本领域技术人员可以理解一个元件可被设计为多个元件或多个元件可被设计为一个元件。图中作为另一个元件的内部构件的一个元件也可作为一个外部构件来实施,反之亦然。
图1是根据本发明的集群节点的一个实施例的示例性系统框图。
图2是图1的互联总线控制器的示例性框图。
图3是一个共享的磁盘集群结构的示例。
图4是一个不共享的集群结构的示例。
图5是利用该互联总线传送数据的示例方法。
图6是检测拓扑变换的示例方法。
图7是检测拓扑变换的另一示例方法。
图8是包括一个心跳系统的集群的另一实施例。
图9是一个心跳系统的另一实施例。
图10是保持一个法定文件的示例方法。
图11是利用该法定文件确定节点状态的示例方法。

具体实施方式

如下将包括贯穿全文所用的选定术语的定义。所有术语的单数或复数形式均属于同一含义:
这里使用的“计算机可读介质”是指参与直接或间接提供信号、指令和/或数据给处理器以用于执行的任意介质。这种介质可以具有任意的形式,包括但不仅限于非易失性介质、易失性介质及传输媒介。非易失性介质例如可包括光盘或磁盘。易失性介质可包括动态存储器。传输媒介可包括同轴电缆、铜线、及光纤电缆。传输媒介也可以是声或光波的形式,如那些在无线电波及红外数据通信过程中产生的波。计算机可读介质的共同形式包括如软盘、硬盘、磁带或任何其它磁介质,CD-ROM,任何其它光介质、穿孔卡片、纸带、任何其它具有孔模式的物理介质,RAM、PROM、EPROM、光闪EPROM,任何其它存储芯片或编码磁带、载波/脉冲,或其它任何计算机可读的介质。
这里使用的“逻辑”包括但不限于硬件、固件、软件和/或每种的组合,以执行一种或多种功能或一个或多个动作,和/或由另一元件导致的功能或动作。例如,根据一种期望的应用或需要,逻辑可以包括一种软件控制的微处理器,分立的逻辑如专用集成电路(ASIC),或其它可编程逻辑设备。逻辑也可全部由软件来实施。
这里使用的“信号”包括但不仅限于一个或多个电信号、模拟或数字信号、信号状态的变化(如电压升/降)、一个或多个计算机指令、消息、一比特或比特流、或其他可被接收、发射和/或检测的手段。
这里使用的“软件”包括但不仅限于使计算机或其它电设备以期望的方式执行功能、动作和/或行为的一个或多个计算机可读和/或可执行指令。这些指令可以以各种形式——如程序、算法、模块或包括来自动态链接库的独立应用或代码的程序——来实施。软件也可以以各种形式——如单机程序、功能调用、小服务程序、java程序、存储在存储器中指令、部分操作系统或其它类型的可执行指令——来执行。本领域技术人员可以理解软件的形式取决于如期望应用的需要、运行的环境、和/或设计者/程序员等的要求。
图1示出了根据本发明实施例的一个简化集群数据库系统100的一个实施例。虽然该实施例中示出了两个节点,节点105和110,在不同的结构中可以采用和集群不同数目的节点。虽然采用一个数据库集群作为一个实例,该系统也可应用于其它类型的集群系统。每一节点是一个执行软件和处理信息的计算机系统。该计算机系统可以是一个个人计算机、一个服务器或其它计算设备。每一节点也可包括多种元件和设备,如一个或多个处理器115、操作系统120、存储器、数据存储设备、数据通信总线及网络通信设备。每一节点可具有区别于其它节点的不同结构。一种类型的集群系统的示例被描述于申请号为6353836、标题为“METHOD AND APPARATUS FORTRANSFERRING DATA FROM THE CACHE OF ONE NODE TO THECACHE OF ANOTHER NODE(从一个节点的高速缓冲存储器传送数据到另一节点的高速缓冲存储器的方法和设备)”的美国专利申请,并被分配给当前受让人,该申请在此全部引用作为参考。
进一步参考图1,节点105用于描述集群数据库系统100中的一个节点的配置的一个例子。在该实施例中,多个节点以一种数据共享的结构方式构成网络,其中每一节点可以访问一个或多个数据存储设备125。该数据存储设备125保存多个文件,如可由集群中连接的节点共享的数据库文件。网络控制器130将节点105连接到网络135。操作系统120包括运行于节点105的软件应用程序和网络控制器130间的一个通信接口。例如,该接口可以是一个网络设备驱动器140,该驱动器140根据网络135所选择的通信协议进行编程。
可用于网络控制器130和网络135的通信协议的例子包括光纤信道ANSI标准X3.230和/或SCSI-3ANSI标准X.3270。该光纤信道结构提供与串行通信和存储I/O的高速接口链接。网络控制器130的其它实施例可支持连接存储设备125和节点105、110的其它方法,如利用快速-40(Ulta-SCSI)、串行存储器结构(SSA)、IEEE标准1394、异步转移模式(ATM)、可缩放相关接口(SCI)IEEE标准1596-1992的实施例,或上述其中可能的某些组合的实施例。
节点105还包括一个管理并控制在一个或多个存储设备125中保存的数据的访问的数据库实例145。由于该集群数据库系统100中的每一节点执行一个数据库实例,该数据库实例允许特定节点访问和控制存储设备125的共享数据库中的数据,因此提供了一个锁定管理器150。该锁定管理器150是一个实体,其负责授权、排队及跟踪对一个或多个资源(如存储在存储设备125中的共享数据库)的锁定。在能够对该共享数据库执行一个处理操作之前,该处理需要获得一个锁定,该锁定授予所述处理执行对数据库的期望操作的权利。为了获得一个锁定,处理向锁定管理器发送一个锁定请求。为了管理网络系统中的资源的使用,锁定管理器在网络的一个或多个节点中实施。
一个锁定是指示一个特定处理已经被授予与该资源相关的特定权利的一个数据结构。有很多类型的锁定。一些类型的锁定可由很多处理共享,但其它类型的锁定不允许任何其它的锁定对同一资源的授权。锁定管理系统实施例的一个更详细的描述可参见美国专利号6,405,274B1、标题为“ANTICIPATORY LOCK MODE CONVERSIONS IN A LOCKMANAGEMENT SYSTEM(锁定管理系统中的预期锁定模式转换)”、已转让给当前受让人的申请,其内容在此全部引用作为参考。
为了跟踪和管理网络中的多个可能已经访问该存储设备125的节点,一个集群配置文件155被保持。该集群配置文件155包含集群中的当前活动节点列表,包括如节点地址、节点ID及连接结构(如相邻节点、母子节点)的识别信息。当然,其它类型的信息也可包含在这样一个配置文件中,也可根据该网络系统的类型进行改变。当该集群的拓扑发生变化时,该节点被识别,及该集群配置文件155被更新以反映该集群节点当前的状态。拓扑变化的例子包括节点被增加、移除、或停止工作。
进一步参考图1,该数据库集群系统100还包括一个互联网络160,其提供节点105和110间的节点到节点的通信。该互联网络160提供一个允许网络中的所有节点彼此间进行双向通信的总线。该互联160提供一个激活的通信协议以用于通过该同一总线从和向每一节点发送消息和数据。为了连接到该互联网络160,每一节点包括一个互联总线控制器165,其可以是一个插入在该节点的PCI槽中的外围卡。该控制器165包括一个或多个连接端口170,用于连接节点间的电缆。虽然可以使用不同数量的端口,但在端口170仅示出了三个连接端口。
在一个实施例中,该互联总线控制器165根据IEEE 1394协议,也称作firewire或i.LINK来运行。为了数据库实例145,或其他运行在节点105上的应用程序与该互联总线160进行通信,提供了一个总线设备驱动器175。该总线设备驱动器175与操作系统120一起工作以与互联总线控制器165进行应用程序连接。例如,来自数据库实例145的数据库命令由总线设备驱动器165转换成IEEE 1394命令或开放主机控制器接口(OHCI)命令。该IEEE 1394OHCI规则定义了连接该IEEE 1394总线的标准硬件和软件。OHCI定义了标准的寄存器地址和函数、数据结构及直接存储器访问(DMA)模型。
IEEE 1394是一个提供了使用简单、低成本、高速通信的总线协议。该协议容易升级,提供异步和同步应用,允许对大容量存储器映射地址空间的访问,并允许对等通信。本领域技术人员可以理解该互联总线控制器165可进行修改以适应其它版本的IEEE 1394协议(如IEEE 1394a、1394b),或其他未来的改进和增强。
IEEE 1394是一个点到点信令环境下的对等网络。总线160上的节点可具有几个端口,如端口170。这些端口中的每一个都作为一个转发器,转发由该节点内的其它端口接收的任意数据分组。每个节点保持一个跟踪该网络拓扑/结构的当前状态的节点图180。在当前的形式下,该IEEE 1394协议在一个总线上支持多达63个设备,并且连接一个设备就象插入一个电话插头一样简单。节点及其它设备可以立刻进行连接而无需首先关掉该节点并重启该网络。该数据库集群拓扑的管理将在下面进行更详细的描述。
通过互联网络160,节点105中的数据库实例145可以直接请求数据、发送/接收数据、或向节点110或集群中其它节点上正在运行的数据库应用发送消息。这避免了向存储设备125发送消息或数据分组,这将包含一个或多个中间步骤、另外的磁盘I/O并将增加等待时间。
图2示出了根据IEEE 1394标准的互联总线控制器165的一个实例。它包括三个ISO协议层:事务层200、链路层205和物理层210。这些层能以如上定义的包括硬件、软件或硬件和软件的逻辑来实施。事务层200定义了一个完整的请求-响应协议以利用三种基本的操作:读、写和锁定执行总线事务。链路层205是中间级层,它与事务层200和物理层210作用,提供异步和同步数据分组传送服务。控制数据传送的元件包括数据发送器、数据分组接收器及时钟周期控制器。
物理层210提供控制器165和形成互联总线160的一部分的电缆间的电和机械接口。其包括物理端口170。该物理层210还采用一种仲裁方法确保所有的节点平等地访问该总线。例如,当一个节点需要访问该总线时,它向其母节点发出请求,其母节点转发该请求至一个根节点。由该根节点接收的第一请求被接受,其它被拒绝或撤回。节点离根节点越近,则起被接受的机会越大。为了解决随后的仲裁不公,总线活动周期被分为多个间隔。在一个间隔期间,每一节点开始发送一次,然后等待直到下一间隔。当然,也可以使用其它的仲裁方法。
物理层210的其它功能包括数据的再同步、编码和译码、总线初始化及控制信号电平。如上所述,每一节点的物理层还作为一个转发器,转换点对点连接为一个虚拟的广播总线。标准IEEE 1394电缆提供1.5毫安的直流电源以保持远端设备的“感知”,即使在它们都被关闭电源的时侯。根据IEEE 1394,该物理层也允许节点在单个媒介中以不同的速度发送数据。具有不同数据速率的节点及其它设备能够以较低的设备速率进行通信。
根据IEEE 1394协议运行的互联总线控制器165是一个活动的端口,并提供自监视/自配置串行总线。这称为允许用户即使在总线激活的情况下增加或移除设备的热即插即用。因此,节点和其它设备可无需影响网络操作地进行连接或断开连接。自监视/自配置逻辑215根据互联总线信号的变化自动检测集群系统中的拓扑变化。节点的总线控制器165当节点被连接到总线上时在互联总线160上放置一个偏置信号。相邻节点通过该自监视逻辑215,自动检测可能会以电压的变化出现的该偏置信号。因此,该检测到的偏置信号指示一个节点已经被增加和/或该节点仍然是活动的。相反的,没有出现偏置信号则指示一个节点已经被移除或已经停止工作。以此方式,能够无需使用节点间传送的查询消息地检测拓扑变换。该逻辑215的自配置方面将参考图6和7进行详细描述。
应用程序接口(API)层220可包括在总线控制器165中作为总线设备驱动器175的一个接口。其通常包括更高级系统指导/接口,用于将数据、终端系统设计和应用程序结合在一起。该API层220可用期望的特征被编程,以定制该数据库实例145(及其他应用程序)和该互联总线控制器165间的通信。可选地,API层220的功能可在事务层200或总线设备驱动器175中作为整体或部分的实施。
参考图3,示出了当前系统和方法可以实施的一个数据库集群结构300的一个实施例。该结构300通常是一种共享磁盘结构,且与图1相似,除了示出了附加的一些节点。通常在一个共享磁盘数据库结构中,文件和/或数据在多个节点间逻辑共享,所述节点具有可以访问所有数据的每一数据库实例。该共享的磁盘访问通过例如与一个或多个保持该文件的存储设备305的直接硬件连接来完成。或者,该连接也可以通过使用一个提供所有节点上的所有存储设备305的单个视图的操作系统提取层来完成。节点A-D也可通过节点互联160进行连接以提供节点到节点的通信。在该共享磁盘结构中,节点内的任一数据库上运行的事务处理都能直接读取或修改存储设备305的数据库的任意部分。访问如上所述由一个或多个锁定管理器控制。
参考图4,示出了可包括当前系统和方法的一个集群结构的另一实施例。集群结构400是指一种不共享结构。不共享结构的例子在美国专利号为6,321,218、标题为“HYBRID SHARED NOTHING/SHARED DISK DATABASESYSTEM(混合不共享/共享的磁盘数据库系统)”、转让给当前受让人的申请中进行了详细描述,该申请在此全部引用作为参考。在一个纯不共享结构中,例如数据库文件在运行于节点A-D上的数据库实例中被分割开。每一数据库实例或节点具有明确的数据子集的所有权,并且对该数据的所有访问专有地由该“拥有”实例执行。节点还与互联160连接。
例如,如果存储在存储设备A-D中的数据文件包含雇员文件,则该数据文件可被划分以便节点A控制用于以字母A-G开始的雇员名字的雇员文件,节点B控制存储设备B中雇员名字H-N的雇员文件,节点C控制存储设备C中名字O-U的雇员文件,节点D控制存储设备D中名字V-H的雇员文件。为了从其它节点访问数据,将发送请求这样的数据的消息。例如,如果节点D想访问由节点A控制的雇员文件,则请求该数据文件的消息将发送到节点A。节点A然后从存储设备A中检索该文件并发送数据到节点D。可以理解的是,根据特定应用的需要,当前系统和方法可在其它集群结构和配置(如树结构)并以其它数据访问权限和/或限制进行实施。
图5示出了一个与图3或图4的集群系统相关的方法的一个实施例。该实施例描述了利用互联总线160在节点之间直接发送和接收数据。该示出的元件表示“处理块”并表示使得计算机执行一种行为和/或进行判决的计算机软件指令或指令组。或者,该处理块可表示由功能性等价电路(如数字信号处理电路或专用集成电路(ASIC))执行的功能和/或行为。该图及其它示图,没有描述任何特定编程语言的语法。而是,描述了本领域技术人员能够用来构造电路以产生计算机软件或硬件和软件的组合来执行所示处理的功能性信息。可以理解电子的和软件的应用可包括动态及灵活的处理,以使得所示出的方块可以以不同于所示出的顺序来执行,和/或多个方块可合并或分成另外的部分。它们也可以使用各种编程方法(如机器语言、程序、面向对象和/或人工智能技术)来实施。上述内容可以应用于这里所描述的所有方法。
参考图5,图5是利用节点到节点互联网络160在节点间通信数据的一个实例。当一个节点(一个请求节点)希望访问另一节点的数据时,数据请求消息通过该互联总线160发送到目标节点(方框505)。该数据请求可以通过在该请求上附加节点名字和/或地址直接向一个或多个选定的目标节点发送。如果该请求的数据的位置未知,则该数据请求可在互联网络内广播至每一节点。
当该数据请求由该适当的节点接收到,则数据库实例确定该数据在那个节点上是否可用(方框510)。如果该数据不可用,则向该请求节点发送表示数据不可用的消息(方框515)。如果数据可用,则该数据通过直接存储器存取从本地存储器中获取(方框520),并通过互联总线发送至请求节点(方框525)。也可执行远程直接存储器存取以执行存储器到存储器的直接转发。以此方式,消息和数据可无需发送至共享存储设备地在节点间直接发送。该节点到节点通信减少了等待时间,并减少了磁盘输入/输出的数量。
图6示出了根据IEEE 1394总线协议重构该集群结构的方法的实例。当数据库集群中的一个节点被增加、去除或停止工作,该数据库集群需要检测该变化,识别该节点,该集群需要被适当地重构。如上所述,基于IEEE 1394协议运行的该互联总线控制器165(图1)是一个活动的端口,并提供自配置串行总线。因此,多个节点和其它设备可无需中断网络运行而进行连接或断开。
例如,当一个节点被增加到该总线上,该总线被复位(方框605)。增加节点的互联控制器165自动在该总线上发送一个偏置信号,且相邻节点能够检测其偏置信号(方框610)。类似地,当节点被移除时节点偏置信号的缺乏也能够被检测到。换句话说,相邻节点的互联控制器165能够检测互联总线160上的信号变化,如由增加或移除节点引起的总线信号强度的变化。该拓扑变化然后被发送到该数据库集群中的所有节点。该总线节点图根据该变化被重构(方框615)。在一个实施例中,该节点图可随该变化进行更新。该数据库实例被通报并更新该集群配置文件(方框620),以便为锁定管理器跟踪该活动节点。当然,示出的序列的顺序也可以以其它方式实施。
利用IEEE 1394协议,该互联控制器165是一个包括如上所述的自监视/自配置机制的活动端口。根据该机制,数据库集群系统可被重构,而不会增加由轮询机制引入的等待时间,因为节点能够虚拟即时地检测拓扑变化。该活动端口还允许该集群不关闭网络电源地进行重构。
图7示出了检测和重构该集群的另一实施例。每一节点监视该互联总线(方框705)以检测总线信号的变化,如偏置信号的存在或不存在。当一个节点检测到一个拓扑变化(方框710)时,它对该总线发送一个总线复位信号,开始一个自配置进程。该进程由物理层210管理,可包括三个阶段:总线初始化、树识别和自识别。在总线初始化期间,活动节点被识别,且一个类树状的逻辑拓扑被构造(方框715)。每一活动节点被分配一个地址,根节点被动态分配,该节点图随用的拓扑被重构或更新(方框720)。一旦总线被自配置,节点可以然后访问该总线。向每一节点上的数据库实例通知所述拓扑变化(方框725),数据库锁定管理器随该变化被重构,以使得该共享数据库可在集群内被恰当地管理(方框730)。
可以理解的是,该网络连接如网络135可以采用其他方式实施。例如,可包括通信或网络软件,如可从Novell、Microsoft、Artisoft及其他销售商处获得的软件,并可以在双绞线、同轴线、或光纤电缆、电话线、卫星、微波中继、射频信号、调制的AC功率线、和/或其他本领域技术人员公知的数据传输线上利用TCP/IP、SPX、IPX和其他协议来操作。该网络135可通过网关或类似的机构连接到其他的网络。也可以理解该互连总线160的协议可包括无线协议。
参考图8,示出了数据库集群800的心跳系统的一个实施例。一个心跳系统是一个机构,其中多个节点周期性地产生指示他们是活动并正在工作的信号或消息。该机构还允许节点根据所产生的信号确定集群中的其它节点的状况或状态。虽然任何数目的节点都可连接到该集群,但如图所示,集群800包括节点805和810。该示出的节点可具有与如图1所示的节点类似的结构。但是为了示例性目的,仅示出一个简化的结构。
节点805和810共享访问保存文件(如数据库文件)的存储设备815。该节点通过一个共享存储网络820连接到该存储设备815。在一个实施例中,该网络820是基于IEEE 1394通信协议的。为了彼此间通信,节点805、810及存储设备815包括一个IEEE 1394网络控制器825。该网络控制器825类似于互连总线控制器165,并且在一个实施例中,该控制器825是插入每一设备的一个网卡。或者,该控制器可固定在节点内部。该网络控制器825包括一个或多个端口,以使得电缆能连接在每个设备之间。另外,其它类型的网络连接也可以采用,例如无线连接,其是基于IEEE 1394协议、或其他类似的协议标准。
进一步参考图8,每一节点包括一个数据库实例830,其控制对存储设备815上的文件的访问。由于数据库集群800中的资源在节点间共享,每一节点包括通知其他节点它们的状况的逻辑,以及确定网络上的其他节点的状况的逻辑。例如,心跳逻辑835被编程来在预定的时间间隔产生并发送一个心跳消息。心跳消息也被称作一个状态信号。该预定的时间间隔可以是任意选定的时间间隔,但典型的是微秒到秒级的,如300微秒到5秒。因此如果间隔是一秒,则每一节点每一秒发送一个心跳消息。
在一个实施例中,该网络负载作为一个用来确定该心跳时间间隔的因子。例如,如果心跳消息作为数据在同一网络上发送,则网络上的高频的心跳消息可能导致数据传输过程中的延时。图8示出了一个可受这种情况影响的网络,图9示出了一个通过在不同的网络上实施该心跳系统以减少网络业务量的网络。可以理解的是,图8和9的网络也可以被配置成不共享结构。
重新参考图8,来自每一节点的心跳消息被收集并存储在法定文件840中。在该实施例中,该法定文件840是一个或多个在也保存共享文件的存储设备815中定义的文件或区域。集群800中的每一节点在法定文件840中分配有地址空间以存储其心跳消息。该法定文件840的空间通常被等分并分配给每一节点,虽然其他方式也是可能的。因此,该法定文件840可以实施为每个节点的分离的文件而不是整个集群的一个文件,即使文件被逻辑地定义为一个数据结构。该法定文件可以实施为一个堆栈、一个阵列、一个表格、一个链接列表、一个文本文件或其它类型的数据结构,存储在一个或多个存储位置、寄存器或其它类型的存储区域中。一旦节点的法定位置为空,则空间中的最旧的消息被挤出或当新消息接收到时被覆盖。
图9示出了数据库集群900和心跳系统的另一实施例。在该实施例中,节点905和910通过一个法定网络920与一个法定设备915进行通信。该法定网络920与一个共享存储网络925相比是一个独立的网络。因此,节点利用一个不同的网络总线而不是该法定网络访问存储设备930上的共享文件。该法定网络920可以是如前所述的节点到节点互联网络的一部分。该法定设备915包括用于保存从集群中的节点接收到的心跳消息的一个法定文件的数据存储设备。
进一步参考图9,节点905、910被连接至该法定设备915并根据IEEE1394通信协议互相通信。每一节点和该法定设备915包括一个与前面描述的控制器类似的IEEE 1394控制器935。由于一个独立的网络被配置用来与该文件进行数据通信,因此每一节点包括一个与存储设备930通信的独立共享的网络控制器940。该共享的网络控制器940可以是一个IEEE 1394控制器或其它网络协议如光纤信道协议。每一节点内的数据库实例945通过该共享网络控制器940处理数据请求。
一个心跳逻辑950控制该心跳机构并利用该IEEE 1394控制器935与法定设备915进行通信。根据这种结构,可以对现有网络影响最小地容易地实现在现有的数据库集群900中增加或替换法定设备915。而且,由于该心跳机构是通过一个独立的网络进行处理,因此共享存储网络925中的业务被减少,从而能够对数据处理请求更快速的响应。还应理解图8和9的集群可包括一个节点到节点互联网络。
图10示出了一个通过法定文件840或法定设备915执行的心跳系统的方法1000的实例,该法定文件840和法定设备915在下面均被称作一个法定文件。一旦数据库集群内的一个法定文件被配置并被激活,该法定文件中的存储空间就被分配给该集群中的每一节点(方框1005)。该法定文件可被等分并分配给每一节点,或者也可定义其它分配方式。一旦该法定文件被激活,其即根据IEEE 1394协议从每一节点接收心跳消息(方框1010)。每一心跳消息包括一个识别发送消息的节点的节点识别符,和一个指示该消息的时间的时间戳。该法定文件接收到的每一条消息然后被存储在其节点的分配位置(方框1015),对接收到的每一心跳消息重复该处理。
对于每一节点,心跳消息以它们接收的顺序被存储在该法定文件中。因此,通过比较最新接收的时间戳与当前的时间,该系统即能够确定哪个节点正活动地发送它们的心跳消息。该信息能够指示一个节点是否是活动的。例如,如果一个节点已经丢失了预定数量的连续的时间戳,则可以假定一个潜在问题。可以为包括一条消息的每一节点存储任意数量的消息。如上所述,每一节点的心跳逻辑被编程来以预定的间隔产生并发送一条心跳消息。因此,通过从该法定文件读取数据,该逻辑就能确定是否出现了多个丢失的间隔。这种类型的状态校验逻辑可以是该心跳逻辑835或950的一部分,并将在参考图11进行更详细的描述。
图11示出了一个用于确定节点的状态或状况的方法的实例。如前所述,该心跳逻辑包括用于以预定的时间间隔产生每一心跳消息并向该法定文件发送该消息的逻辑。在任意期望的时刻,节点的心跳逻辑可以更新其集群配置文件以确定当前的活动节点集,并确定是否有节点已经停止工作或已经从该网络中移除。这种确定也可以在整个集群内同步进行。状态校验逻辑(未示出)可被编程作为该心跳逻辑的一部分以执行如下的任务。
为了开始状态校验,该法定文件被读取以检查每一节点的时间戳信息(方框1105)。根据为每一节点存储的该时间戳数据,该逻辑能够基于在该法定文件中写入的最后消息的时间确定是否一个特定的节点仍然在工作(方框1110)。可以设置一个阈值以在指示问题可能出现的确定前允许预定数量的时间戳被丢失。例如,一个节点可能允许丢失两个连续的时间戳,但如果第三个被丢失,则该节点可能不能正常工作。该阈值也可以被设置为其它值,如值1。
如果一个节点丢失了指定数目的时间戳消息(方框1120),可能并不一定意味着该节点已经停止了工作。由于节点是根据IEEE 1394标准被连接到法定文件的,因此可以执行附加的状态校验。如前所述,该IEEE 1394总线是活动的,且连接到该总线的每一设备都可以检测是否相邻的节点停止了工作或被从网络中移除。该附加信息可有助于更好地确定节点的状态。该状态逻辑可比较来自该法定文件的该时间戳信息和保存在IEEE 1394控制器中的节点图数据。
例如,如果一个节点丢失了其时间戳(方框1120),且该节点在该节点图中不是一个活动节点(方框1125),则确定该节点被假定停止或已被从该网络移除(方框1130)。然而,如果一个节点丢失了它的时间戳但该节点在该节点图中仍然是活动的,则该节点可能被挂断或该集群中可能存在其它延时(方框1135)。如果是这种情况,该处理可选择性地为那个节点重新校验该法定文件以确定是否已经接收到一个新的时间戳,可产生一个消息以指示一个可能的延时,和/或从该活动的节点列表中移除该节点。
再次回到判决方框1120,如果一个节点没有丢失它的时间戳,则该节点被假定为工作正常。但是,可以通过校验是否该节点在该节点图中是活动的执行另外的确定(方框1140)。如果该节点是活动的(方框1145),则该节点工作正常。如果该节点不是活动的(方框1150),则可能存在一种可能的网络总线错误。因此,根据来自该法定文件和该IEEE 1394总线的节点图的信息,可以确定一份更详尽的节点状态分析。而且,在图9示出的集群结构中,在该实施例中,该共享存储网络925也是一个IEEE 1394总线,两个独立的网络节点图被保存。另外的节点图也可以包括在上述的比较处理和状态校验中。
重新参考图11,可以执行一个简化的实施例。在判决框1120,如果一个节点写时间戳失败,则该逻辑能够宣告该节点不工作了并将其从该数据库实例的该集群配置文件中移除。在该过程中,该节点图不予考虑。
可以理解的是这里描述的各种包括用于分配一个法定文件的法定设备的存储设备可以以各种方式实施。例如,一个存储设备可以包括一个或多个专用存储设备,如磁盘或光盘驱动、磁带驱动、电子存储器等。存储设备还可以包括一个或多个处理设备,如计算机、服务器、手持处理设备或类似的包含存储器、内存、或用于保存数据的这些设备的组合的设备。该存储设备还可以是任意计算机可读介质。
用于实施当前系统和方法的各种组件的合适的软件可由本领域技术人员利用这里提出的技术和编程语言及工具(如Java、Pascal、C++、C、CGI、Perl、SQL、API、SDK、汇编、固件、微码、和/或其它语言和工具)很容易地实现。作为软件实施的元件包括使得计算机以预定的方式运行的计算机可读/可执行指令。该软件可作为制造产品和/或如前定义的存储在计算机可读介质中。
尽管本发明是参照其特定的优选实施例来描述的,且虽然这些实施例已经在一定程度上进行了详细描述,但她并不是要以任何方式限制所附权利要求的范围至这种程度。其它的优点和修改对于本领域的技术人员都是显而易见的。因此本发明及其更宽的方面并不限于所示出和描述的特定的细节、代表性的装置和示例性的实施例。因此,在不脱离本申请的一般发明概念的精神和范围的情况下可以对其细节进行各种修改。