故障切换系统和方法

文档序号:6455951阅读:404来源:国知局

专利名称::故障切换系统和方法
技术领域
:本发明涉及计算机和网络体系结构,并且更具体地涉及故障切换系统和方法。
背景技术
:社会越来越依靠计算机和网络来进行交互和开展业务。为了获得关键系统中要求的高级别可用性,应当将由软件和硬件缺陷引起的计划外停机降低到最小。金融服务行业是要求高可用性系统的行业中的一个实例。实际上,当今金融行业中的大量数据处理活动都是由计算机系统支持的。最有趣的是所谓的"实时"和"接近实时"在线交易处理(OLTP)应用,该应用通常在很长的时段中以高速度且低延迟地处理大量商业交易。这些应用通常显示出下述特性(1)复杂和高速度数据处理,(2)可靠的非易失性数据存储,和(3)高级别可用性,即在基本不受干扰的基础上支持服务的能力。但是在实施时,由于它们对系统行为的互相矛盾的影响,现有的系统倾向于在这些性能要求之间折衷,不存在如同后面将详细描述的、能同时完全满足全部三个特性的方案。首先,复杂数据处理指的是以及时的方式执行大量计算、数据库检索/更新等的能力。这可以通过并行处理实现,其中在同一物理^L器上或分布式网络上同时执行多个工作单元。在一些系统中,每个交易的结果是基于之前完成的交易的结果。由于竟态条件、操作系统调度任务或者各种网络延迟,这样的系统的并行方面天生就是非确定性的,既不能预测消息和线程执4亍的顺序,也不能简单地通过将输入消息的副本传递给复制系统来并行地处理该消息和线程执行。非确定性系统具有非恒定的输出,因此它们不是在两个不同计算机器上并行运行的、虽然其本意是在出现故障时用一个代替另一个。其次,可靠的非易失性数据存储指的是甚至在系统的一些软件或者硬件组件经历意料之外的故障时,持久地存储数据的能力。这通常是通过在存取或者修改共享数据时,使用原子性、一致性、隔离性和持久性("ACID")交易实现的。一个单元的工作一完成,ACID交易就可以保证数据的完整性和持久性。每个提交的ACID交易被写入非易失性计算机存储器(硬盘),该存储器协助确保数据持久性,但是这样很耗费性能,通常拖慢了整个系统。第三,高可用性系统尝试确保给定计算机系统的可用性百分比尽可能接近100%的时间。可以通过使用冗余软件和/或硬件实现这样的可用性,当检测到组件故障时,冗余软件和/或硬件接管功能。为了取得成功,故障切换不仅复制数据,还复制处理状态。如同本领域的技术人员所理解的,在非确定性系统(即同样一组事件的计算处理才艮据这些事件的处理顺序可以获得多于一个结果的系统)中状态复制尤其具有挑战性。高可用性软件应用通常被配置在冗余环境中,从而减少和/或消除故障的单一点,该点通常与基础硬件相关。已知的两个常规方法是热故障切换和温故障切换。热故障切换指的是同时在多个系统中处理同一输入,本质上是在这些系统中的出现一个故障时提供完全冗余。温故障切换指的是在备份系统中复制应用的状态(即数据),而不在备份系统中处理该数据,但是具有可以在主系统出现故障时处理加载的数据并且待机的应用。被很多人不视为一种高可用性的冷故障切换指的是简单地唤醒备份系统和将备份系统准备用于承担主系统的处理责任。在热故障切换中,应用的两个实例同时运行在两个不同的硬件设备上,处理同一输入的副本。如果它们中的一个经历严重的故障时,附加的同步系统可以确保另一个将继续支持工作负载。在温故障切换配置中,这些系统中的被指定为主要的一个运行该应用;在出现故障时,被指定为备份的、处于待机状态等待的第二系统将"苏醒",接管和恢复功能。现有技术的热故障切换方式至少具有两个缺点。首先,附加软件必须运行从而确保两个系统同步。在不确定性系统的情况下,该同步努力可能导致不能接受的(或者不希望的)性能降低和必须保证事件到达的顺序完全一致的复杂性。同样,在这样的应用中使用的现有并行系统通常允许多个线程同时执行,因此它们天生就是非确定性的。同样带有服务器和地理上分散的客户机的系统也是非确定性的,其中各种网络延迟以无法预测的顺序向服务器发送消息。温故障切换可以被用于克服热故障切换的某些问题。通过将系统数据复制到冗余备份系统,并且随后在第二系统恢复应用功能,温故障切换可以成为实现非确定性系统的故障切换的另一种方式。该方式的缺点在于将数据恢复为一致状态、随后将应用带到功能状态,并且最后,将应用恢复到它从处理中离开的位置这一过程所需要的时间。该过程通常花费几小时,需要人工干涉并且不能完全恢复进行中的交易。很多专利试图解决前述问题中的至少一部分。第5,305,200号美国专利所提出的方案本质上是用于顾客/经销商与经纪人(准备买卖未上市证券的经纪人)之间议价贸易场景中通信的反拒i^(non-repudiation)积i制。提供冗余从而确保在出现故障时反拒认机制能够工作。它没有解决非确定性环境中的在线交易应用的故障切换。简单地说,在经历了网络故障后,第5,305,200号美国专利被用于向下述疑问提供毫不含糊的答案"是否发送了指令?"第5,381,545号美国专利提出了用于备份已存储的数据(在数据库中)同时还对这些数据进行更新的技术。第5,987,432号美国专利提供了用于为区域分布而安装全世界金融市场数据的可容错的市场数据自动收录机系统。这是一个确定性的环境,并且解决方案集中在向消费者提供不受干扰的单向数据流。第6,154,847号美国专利提供了通过将传统非易失性存储器上的交易日志与易失性存储器中的交易列表合并来回滚交易的改进方法。第6,199,055号美国专利提供了一种在系统和便携式处理器之间经由不安全的通信连接进行分布式交易的方法。第6,199,055号美国专利研究的是用于确保与远程设备完整交易的认证,以及在出现故障时重启远程设备。总体而言,前述这些专利都没有解决在非确定性环境中的在线交易应用的故障切换。第6,202,149号美国专利提供了用于自动地重分配任务从而减少计算机停机影响的方法和装置。该装置包括至少一个由一个或多个计算系统组成的冗余群组,所述计算系统本身就是由一个或多个计算分区组成的。分区包括数据库模型的副本,数据库模型在每个计算系统部分被复制。冗余群组监视计算系统和计算系统分区的状况,并且根据监视到的计算系统的状况向计算系统分配任务。第6,202,149号美国专利的一个问题是它没有教导在备份系统接管处理交易的责任时,如何恢复工作流,反而采用了效率很差的和/或緩慢的复制整个数据库的方式。进一步,这样的复制可以引起丟失处理中的重要交易信息,特别是在主系统或者连接主系统和备份系统的网络上出现故障时,从而导致了主系统和备份系统之间的状态不一致。整体而言,第6,202,149号美国专利缺少在在线交易处理或类似处理中需要的特定特性,并且由其缺少故障切换非确定性系统所需要的特性。第6,308,287号美国专利提出了一种方法,其探测组件交易的故障,将其收回,可靠地存储故障指示器以便在系统故障后可以恢复,并且随后使得进一步交易可以使用该故障指示器。它没有解决在非确定性环境中交易应用的故障切换。第6,574,750号美国专利提出了分布式复制对象的系统,其中对象是非确定性的。它提出了一种在出现已复制的对象的故障时,确保一致性并且限制回滚的方法。描述了一种方法,其中对象接收呼入的客户机请求并且将请求ID与对象的副本之前处理的全部请求的日志进行比较。如果找到了相匹配的,随后向客户机返回相关的响应。但是该方法单独不能解决现有的各种问题。第6,575,750号美国专利的另一个问题是采用了同步调用链,这对于高性能在线交易处理("OLTP")应用是不合适的。对于同步调用,客户机在继续之前需要等待回答或者超时提示。被调用的物体依次将变成另一个对象的客户机,传播同步调用链。结果可以是大范围的同步操作,堵塞了客户机处理,并且需要在源头客户机配置很长的暂停时间。
发明内容本发明的一个方面提供了一种用于故障切换的系统,它包括至少一个客户机,选择性地可连接到经由网络连接的至少两个互连的服务器中的一个。在常规状态下,当被连接到客户机时,服务器中的一个被指定为主服务器,并且当未连接到客户机时,服务器中的剩余服务器被指定为备用服务器。该至少一个客户机被配置为向主服务器发送消息。服务器被配置为使用至少一个服务来处理该消息,该服务在每一个服务器中都是相同的。该服务不知道与该服务相关的服务器是作为主服务器还是备用服务器工作。该服务器还被配置为保持一个执行多种任务的库或者可用代码的其他相异(distinct)—个或多个组,包括指明该服务器是主服务器还是备用服务器。每个服务器中的服务对与其相关的库进行外部调用。主服务器中的库被配置为完成外部调用,并且向主服务器中的服务返回外部调用的结果并且向备用服务器中的服务转发外部调用的结果。当被第二服务器中的服务要求这样做时,第二服务器中的库不进行外部调用,而是简单地向第二服务器中的服务转发从主服务器接收到的外部调用的结果。该库被实现为一组或多组相异的可用代码。该服务器中的每个都可以被配置为保持共享资源,服务可以在其中存储处理消息的结果。共享资源可以并且例如为了性能的原因,优选地被保持在相关服务器的随机访问存储器中。但是不需要在随机访问存储器中保持共享资源。外部调用可以是(作为非限制性的实施例列表)对时间戳的请求、调用在同一服务器上提供的另一个服务、或者调用单独的机器上物理提供的另一个服务。系统可以是电子交易系统中的一部分,并且消息因此可以是买入或者卖出证券的指令。这样,外部调用可以是对证券的价格的市场反馈报价(marketfeedquote)的请求。在系统是电子交易系统时,至少一个服务包括下达指令服务、指令取消服务、指令改变服务、指令匹配服务、进入之前执行的交易的服务或者进入交叉买卖交易(crosstrade)的服务中的一个。主服务器中的服务可以被配置为仅在备用服务器确认了外部调用的结果已经被成功地转发给备用服务器时,才向所述客户机确认已经处理了消息。主服务器中的服务可以被配置为不管所述备用服务器是否确认了外部调用的结果已经被成功地转发给备用服务器,都向客户机确认已经处理了消息。如果在预定时间段中,备用服务器没有确认外部调用的结果已经被成功地转发给备用服务器,则主服务器将认为备用服务器出现了故障。本发明的另一个方面提供了一种用于系统中的故障切换的方法,包括至少一个客户机,选择性地可连接到经由网络连接的至少两个互连的服务器;当被连接到客户机时,服务器中的一个被指定为主服务器,并且当未连接到客户机时,服务器中的剩余服务器被指定为备用服务器;该至少一个客户机被配置为向主服务器发送消息,所述方法包括将服务器配置为使用至少一个服务来处理消息,服务在每一个服务器中都是相同的,并且不知道与服务相关的服务器是作为主服务器还是备用服务器工作;将服务器配置为保持一个库,该库指明了该服务器是主服务器还是备用服务器;将服务配置为对与其相关的库来进行外部调用;和将主服务器中的库配置为完成外部调用,并且向主服务器中的服务返回外部调用的结果并且向备用服务器中的服务转发外部调用的结果。本发明的另一个方面提供了一种计算机可读介质,该介质存储了经由网络连接的至少两个互连的服务器中的一个上可以执行的程序指令,服务器选择性地可连接到至少一个客户机。当被连接到客户机时,服务器中的一个被指定为主服务器,在这种情况下,当未连接到所述客户机时,服务器中的剩余服务器被指定为备用服务器。该至少一个客户机被配置为向主服务器发送消息。该程序指令包括用于将服务器配置为使用至少一个服务来处理消息的指令,服务在每一个服务器中都是相同的,并且不知道与服务相关的服务器是作为主服务器还是备用服务器工作;用于将服务器配置为保持一个库的指令,该库指明了该服务器是主服务器还是备用服务器;用于将服务配置为对于其相关的库来进行外部调用的指令;和用于将主服务器中的库配置为完成外部调用的指令,并且向主月良务器中的服务返回外部调用的结果并且向备用服务器中的服务转发外部调用的结果。现在将以举例的方式参照附图来描述本发明,其中图1是根据本发明的一个实施例用于故障切换的系统的示意图2是图1中的系统工作在常规状态下并且包括在该系统的服务器上执行的各种软件元件的示例性细节的示意图3是表示在常规状态下操作根据本发明的一个实施例的用于故障切换的系统的方法的流程图4示出了执行图3中的方法过程中的图2中的系统;图5示出了执行图3中的方法过程中的图2中的系统;图6示出了执行图3中的方法过程中的图2中的系统;图7示出了执行图3中的方法过程中的图2中的系统;图8示出了执行图3中的方法过程中的图2中的系统;图9示出了执行图3中的方法过程中的图2中的系统;图IO示出了执行图3中的方法过程中的图2中的系统;图11示出了执行图3中的方法过程中的图2中的系统;图12示出了执行图3中的方法过程中的图2中的系统;图13示出了执行图3中的方法过程中的图2中的系统;图14示出了执行图3中的方法过程中的图2中的系统;图15是表示根据本发明的另一个实施例的用于故障切换的方法的流程图16示出了根据本发明的另一个实施例的、服务器中的一个在仅有主服务器的状态下工作的图2中的系统;图17示出了根据本发明的另一个实施例的、服务器中的其他服务器在仅有主服务器的状态下工作的图16中的系统;图18是示出了根据本发明的另一个实施例的用于操作服务器中的一个服务器在仅有-主服务器的状态下工作的方法的流程图;并且图19是示出了根据本发明的另一个实施例的从常规状态向工作在仅有主服务器的状态下的备用服务器进行故障切换的方法的流程图。具体实施例方式现在参照图1,由50整体指示用于故障切换的系统。系统50包括多个远程客户机54-1和54-2(此处一般指代"客户机54"和统称指代"客户机组54"。该术语用于附图中的其它元件)。客户机组54与网络58连接。网络58可以是任何类型的计算网络,例如因特网、局域网、广域网或者上述网络的组合。接下来,网络58连接到第一服务器62-1和第二服务器62-2。因此,如同后面将详细描述的,客户机组54中的每一个都可以经由网络58与服务器62-2和服务器62-2通信。客户机组54中的每一个都属于将使用它们的相关客户机54向服务器62-2提交请求的个人和/或实体。为了方便,这样的个人或实体在此被称为交易者T,交易者T-1使用客户机54-l,并且交易者T-2使用客户机54-2。每个客户机54通常是计算设备,例如具有键盘和鼠标(或其他输入设备)的个人计算机、显示器(或其他输出设备)以及连接了键盘、鼠标和显示器并且容纳了一个或多个中央处理单元、易失性存储器(即随机访问存储器)、非易失性存储器(即硬盘设备)和允许客户机54在网络58上通信的网络接口的桌面模块。但是应当理解,客户机54可以是任何类型的计算设备,例如个人数字助理、手机、手提电脑、邮件寻呼设备等。服务器62可以是能接受和处理来自客户机54的消息的任何类型的计算设备,例如来自加利福尼亚州帕罗奥多的太阳微系统公司的太阳火V480,它运行UNIX操作系统并且具有四个中央处理单元,每个单元在大约900MHZ的频率工作,并且具有大约四十亿字节的随机访问存储器和非易失性存储器设备例如硬盘驱动器。适合服务器62的另一种类型的计算设备是来自科罗拉多州来福兰德市南塔夫脱800号惠普7>司的HPProLiantBL25P。但是,应当强调的是这些特定服务器都仅仅是示意性的,用于服务器62-1和62-2的大量其它类型的计算环境也在本发明的范围之内。由服务器62-1接收和处理的消息的类型并没有具体限制,但是在本实施例中,服务器62-l运行在线交易系统,并且因此可以处理的消息包括对可以在线交易的证券的买入、卖出和取消等请求。更具体地,服务器62-1可以保持中央匹配引擎(未示出),其中彼此对照并且对照指令的中央知识库来执行请求从而处理证券的交易。服务器62-2通常具有与服务器62-1相同的(或者至少基本相同的)计算环境。如同后面将进一步解释的,包括其硬件、操作系统、应用等的计算环境因此被选择为在服务器62-1出现故障时使得服务器62-2可以代替服务器62-1的功能。系统50还包括与服务器62-1和服务器62-2互连的副本连接78。在当前实施例中,副本连接78本身包括主连接82和故障保护连接86从而在服务器62-1和服务器62-2之间提供更可靠的通信。在后面的描述中,与主服务器62-1、备用服务器62-2和副本连接78相关的更多细节,和通过扩展可以用于实现服务器62-1和62-2的各种硬件类型将变得更清楚。在图2中,更详细地示出了服务器62-1和62-2。还要注意的是,在图2中以虚线示出了各种连接,从而表示系统50中的各种元件之间的虚拟连接,这与图1中表示系统50的各种元件之间的物理连接的实线连接不同。因此,图2中示出的这样的连接旨在示出系统50以常规状态工作,由此服务器62-1被指定为主服务器,并且服务器62-2被指定为备用服务器,主服务器62-l服务来自客户机54的请求。将在下面提供关于常规状态的进一步细节和系统50可以工作的其他状态。仍然参考图2,服务器62-1和服务器62-2每个都包括多个软件元件,该软件元件在它们各自的硬件环境上执行从而服务来自客户机的请求并且提供故障切换功能。服务器62-1和服务器62-2每个都分别包括故障切换代理90-1和90-2。故障切换代理90彼此通信,并且可以周期性地测试连接78和彼此的完整性。在本实施例中,在常规状态中,故障切换代理90-l将周期性地向故障切换代理90-2发送保持-激活信号(例如"你是否激活?"),希望故障切换代理90-2周期性地响应(例如"我是")该信号。假设这样的请求由故障切换代理90-2响应,并且假设主服务器62-1继续常规工作,随后系统50将保持处于图2中示出的常规状态。因此,故障切换代理90-1也可以与服务器62-1中的其他软件元件通信,从而指明常规状态可用。现在可以知道的是,如同恰当的或者所希望的,故障切换代理90可以操作使用共同组成连接78的主连接82和故障保护连接86。这样,只要主连接82和故障保护连接86之一可以工作,系统50就可以保持常规状态。服务器62每个都包括一个或多个可以接收和处理来自一个或多个客户机54的各种请求的服务。服务的类型并不具体受限,并且可以包括任何类型的服务、应用或者处理或者类似的服务,这些服务都需要故障切换。在当前单纯的示范性实施例中,系统50是在线交易系统,月良务器62中的每一个都包括指令下达服务94和指令取消服务98。如同名字所暗示的,指令下达服务94被配置为,人客户机54接收请求以便为特定的证券下达卖出指令或者买入指令。如同名字所暗示的,指令取消服务98被配置为从客户机54接收请求以便为特定证券取消之前使用服务94下达的,但是在特定指令被实际完成之前的卖出或买入指令。对于电子商务领域的技术人员所知晓的可以实现的其他类型的服务包括但是不限于指令匹配、改变指令、进入交易或者进入交叉交易。在本实施例中,服务94和98是多线程的,但这不是必需的。(如同此处使用的,多线程并不是以狭窄含义使用的,而是指代各种类型的并行处理,其中多个消息,皮同时处理,这进一步加剧了系统的非确定性本质。例如可以使用多个处理或者使用单一处理的执行中的多个线程来实现多线程。)服务器62每个都包括库102,该库可以由相应的服务94和98分别访问。每个库102包括定续器106和高速緩存110。如同在后面将更详细描述的,定续器106响应来自服务94或98对库102的请求而产生顺序编号。定续器106-2在常规状态是未激活的,并且这样的未激活在图2中是由穿过代表定续器106-2的椭圓的斜线表示的。(在其他元件中使用的斜线用于表示该元件在任何给定特定状态是激活的还是未激活的。)高速緩存IIO是用于由库102执行的外部功能调用的结果的存储区域。每个库102还包括保持系统50当前运行状态的状态寄存器114,并且寄存器持续地与它相关的故障切换代理90通信从而确认系统50当前运转的状态。在图2中,系统50在常规状态下工作,并且因此状态寄存器114-1指明服务器62-1当前被指定为主服务器,而状态寄存器114-2指明服务器62-2当前被指定为备用服务器。但是,如同后面将更详细描述的,系统的状态可以才艮据系统50中的各种不同组件的工作状态改变。服务器62中的每一个还包括外部资源代理118,它负责代表服务94和98对外部资源进行外部调用,但是是通过库102进行的。外部资源可以包括在服务94和98之外的但是常驻在每个服务器62上的资源,例如来自操作系统时钟的时间戳(未示出),和/或在每个服务器62之外的资源,例如在电子交易系统的情况下,为各种证券保持市场价格的最新信息的市场反馈(marketfeed)(未示出),该价格是经由指令下达服务94下达的买入指令或者卖出指令的主题。本领域的技术人员将了解,服务94和98对这样的外部资源进行的调用加剧了系统50的非确定性本质。在常规状态,只有外部资源代理118-1是激活的,而外部资源代理118-2是非激活的。外部资源代理118-2的非激活在图2中是由穿过代表外部资源代理118-2的椭圓的斜线表示的。服务器62中的每一个还保持共享的资源122,该资源保持由服务94和98执行的处理步骤的结果,和/或保持可能需要由服务94和98访问的数据。例如,在本实施例的电子交易系统中,共享的资源122保持指令簿,该指令簿仅仅是由服务94下达的一组指令的记录。因此,指令下达服务94可以例如在共享资源122中创建买入指令的记录。这样的买入指令可能需要由指令取消服务98在迟一点时间访问,从而取消买入指令,并且在共享资源122中这样指明。类似地,买入指令将需要被匹配服务(未示出)访问,该匹配服务还在服务器62上执行从而根据市场规则将买入指令与特定对应的卖出指令相匹配,并且更新该买入指令和卖出指令从而指明实现了匹配并且将完成交易。服务器62中的每一个都保持复制代理126。在常规状态下,只有复制代理126-2是激活的,而复制代理126-1是未激活的,复制代理126-1的未激活在图2中由穿过代表复制代理126-1的椭圆的斜线表示。如同后续将详细描述的,激活的复制代理126与对应服务器62中的库102通信从而协助从主服务器向备用服务器镜像信息。现在参考图3,用300整体指示#4居本发明另一个实施例的在常规状态中处理请求的方法。为了帮助解释该方法,假设使用图2中示出的常规状态下的系统50运行该方法。进一步,方法300的后续讨论将协助进一步了解系统50和它的不同组件。但是仅仅为了方便,方法300的各种处理步骤在图3中被示出为出现在系统50的特定组件中。不能以受限的含义理解这样的指示。但是应当理解,系统50和/或方法30可以变化,并且不需要如同此处所讨论的那样工作,并且方法300中的步骤不需要以所示出的顺序执行。这样的变化在本发明的范围内。这样的变化还适用于此处讨-沦的其他方法和系统框图。首先在步骤310开始,从客户机接收消息。消息的类型并不具体受限,并且通常是用于输入在服务器上执行的一个服务的所期望的类型的补充。当在系统50上执行时,消息因此可以是希望作为指令下达服务94的输入的买入指令或者卖出指令,或者可以是希望用于指令取消服务98的的输入的取消指令。例如,假设由交易者T-l在来自客户机54-1的消息中放入买入指令,并且消息通过网络58发送给指令下达服务94-1,其中根据步骤310,由指令下达服务94-l接收消息。在图4中示出了步骤310的示例性执行,消息M(OJ被显示为来自客户机54-1,并且在指令下达服务94-1处在服务器62-1被接收。表1示出了指令下达消息M(Ch)的示例性4^式。表I消息M(OJ<table>tableseeoriginaldocumentpage18</column></row><table>更具体地,表I的字段1,名字是"交易者",它指出了消息M(O。的来源交易者是交易者t-i。表n的字段2,名字是"证券名称",它指出了作为交易的主题的特定证券的名字-在本实施例中是"ABC么、司"。表I的字段3,名字是"交易类型",它指出了该指令是对字段2中指明的证券进行买入、卖出等。在本实施例中,交易类型是"买入",指明了这是买入的指令。表I的字段4,名字是"数量",它指明了所希望的证券的数量,在本实施例中,数量是"1000单位",指明想进行的是买1000个单位的ABC公司的证券。本领域的技术人员现在应该认识到表I中的指令是市场指令,因为指令的价格将基于字段2中的证券的当前市场价格是什么。在步骤310已经接收到了消息,方法300前进到步骤315,此时,相关服务将调用用于进一步处理消息而使用的外部数据。继续描述实施例,在步骤315,指令下达服务94-1将向主库102-1进行这样的外部调用。在本实施例中,Wli殳这样的调用是为了i)分配给消息M(Ch)中的指令的时间戳,它指明了接收到该指令的时间,和ii)在消息M(Ch)中的指令中指明的证券的当前市场fN各。步骤315的执行在图5中示出为点划线,代表从指令下达服务94-l到主库102-1的调用体现在130处。接下来,在步骤320,主库102-1将进行调用。主库102-1将咨询故障切换代理114-1从而确定服务器62-1被指定为主服务器,并且系统50处于常规状态。在确认后,主库102-1将响应由服务94-1进行的调用i)对外部资源代理118-1进行外部调用从而获得时间戳;ii)对外部资源代理118-1进行进一步的外部调用从而获得当前市场〗介才各。因此,在步骤325,外部资源代理118-1将对才喿作系统时钟(未示出)和市场反馈(未示出)进行外部调用从而分别获得时间戳和当前市场价格。步骤320和325的执行在图6中被显示为分别以132和134指明的点划线,代表通过外部资源代理118-1调用时间戳,和通过外部资源代理118-1调用市场价格。本领域的技术人员现在应当意识到,外部调用132和134,特别是使得系统50为天生的非确定性,并且因此呈现提供故障切换系统的特别的挑战,即在出现故障切换时,在恢复过程中解决系统的非确定性本质,从而使恢复对于交易者T是透明的。(通过进一步解释,假设系统50是警惕的,这样全部服务器62为每个消息进行外部调用。然而,对于任意给定消息M,对时间戳的调用的精确动作何时发生是至关重要的,从而确保市场公平,服务器62在同样的时间为同样的消息调用时间戳是极不可能,并且因此每个服务器62将为同样的消息M分配不同的时间优先级,导致了同样的机器处理产生不同的结果。类似地,对于任何给定的消息M,进行市场价格调用的准确时刻也是至关重要的,从而确保市场公平,服务器62都在同样的时间为同样的消息调用时间戳是极不可能,并且因此每个服务器62对于同样的消息M具有不同的市场价格。在故障切换时,每个服务器62不一定具有一致的商业数据,并且故障切换将是无意义的。)通过进一步阅读,本领域的技术人员将i^识到如何解决这样的问题,同时认识到本发明的其它方面。在步骤330,外部调用132和134的结果返回主库102-1。在步骤335,全部调用132和134的结果都存储在高速緩存110-1中,并且返回服务94-1。继续讨论实施例,假设调用132的结果是时间戳2000年1月5日12:00PM,并且假设调用134的结果是市场价格$2.00。在表II和图7中示出了高速緩存110-1中存储的这些结果。表II<table>tableseeoriginaldocumentpage20</column></row><table>在表II中的调用将返回到也在图7中示出的服务94-1。接下来,在步骤345,服务将请求共享的资源。在本实施例中,请求是由服务94-l对库102-l提出的。接下来,在步骤350,库102-1将向共享资源122-1发布指令从而"闭锁,,它,并且从而阻止任何其他服务(例如服务98-1,或者服务94-1中的另一个线程)访问共享资源122-1。(如同将在后面详细描述的,如果共享资源122-1已经被闭锁,随后方法300将暂停在步骤345,直到共享资源122-1解锁)。步骤345和350的执行在图8中被显示为点划线,点划线表示了以140指示的共享资源的请求。共享资源122-1的闭锁由挂锁138表示。接下来,在步骤355,返回共享的资源顺序编号。该步骤可以由库102-1使用顺序编号106-1执行从而产生与消息M(0:)相关的顺序编号。继续描述本实施例,假设产生了顺序编号"1"。表III和图8中示出了在高速緩存iio-i中存储这些结果。注意表m是表n的更新。表ni步骤335之后高速緩存110-1的示例性内容<table>tableseeoriginaldocumentpage21</column></row><table>接下来,在步骤360,请求复制。在本实施例中,由服务94-l执行步骤360,该服务向库102-1发送指令以便执行复制。在步骤365,开始对消息、调用结果和顺序编号的复制。在本实施例中,由库102-1复制表m的内容。下面进一步讨论步骤365。在步骤370,使用调用的结果和闭锁的共享资源来处理消息。在本实施例中,由服务94-1执行本实施例步骤370,该服务使用表III的内容,并且执行与服务94-1相关的处理从而从表III产生结果。由于服务94-1是指令下达服务,并且消息M(OJ代表买入指令,随后在步骤370,服务94-1将产生将被记录在共享资源122-1中的买入指令,用于后续与来自例如交易者T-2卖出指令进行匹配,或者用于其他交易处理,例如使用服务98-l的指令取消。为了本实施例,假设在共享资源122-1中没有可以与消息M(0J匹配的指令,并且因此步骤370的结果将是简单地产生与消息M(0J相关的买入指令的细节的完整记录。表IV示出了步骤370的执行的示例性结果。表IV步骤370执行结果的示例<table>tableseeoriginaldocumentpage22</column></row><table>接下来,在步骤375,步骤370的执行结果被写入共享资源,并且随后共享资源被解锁。在步骤370由服务94-1产生表IV,并且在图9中示出了在步骤375中在共享资源122-1存储的那些结果。接下来,在步骤380,服务确认在步骤375已经写好了结果,并且在步骤400已经执行了复制。在当前实施例中,在步骤380,服务94-l将等待来自共享资源122-1的对已经将表IV写入共享资源122-1的确认。类似地,在步骤380,服务94-1将等待来自步骤400的对在步骤365开始的复制已经完成的确认。下面将详细解释步骤365和400。(在另一个可选实施例中,步骤380在前进到步骤390之前,不需要等待来自步骤400的确认。但是步骤380将仍然希望最终从步骤400接收到这样的确认,并且如果这样的确认没有出现,那么步骤380将认为服务器62-2出现了故障,其中事件服务器62-1将如后面将解释的那样执行方法600。本领域的技术人员将认识到这是操作的异步形式,并且是在速度优先于服务器62-2的状况确认的某些环境下的理想选4奪。)接下来,在步骤390,确认被返回给客户机。在当前实施例中,在步骤390服务94-1将向客户机54-1发送确认消息,该消息M(0!)根据交易者T-l所请求的方式被进行处理。需要重申的是,方法300的步骤390(即在常规状态中的操作)一直到步骤380才完成,步骤380接下来也是直到在步骤365开始的复制已经完成时才完成。现在返回步骤365,消息、调用结果和共享资源顺序编号都被复制了。在本实施例中,库102-1响应在步骤360来自服务94-1的请求,执行步骤365。因此,库102-1将对表III的内容打包并且将它发送到复制代理126-2。图10中示出了步骤365、370、375、395、400和390的执行。(图IO基于图9中的步骤370和375的执行)。在步骤365,由142指明的线示出了从库102-1的高速緩存110-1将表III发送给复制代理126-2。在图10中示出了如之前参照图9讨论的步骤370和375。在步骤395,消息、调用结果和共享资源顺序编号的队列由出现在复制代理126-2中的标记有表III的椭圓表示。在步骤400,由144指明的线所代表的是从复制代理126-2向服务94-1(通过库102-1传递)返回复制的确认。在步骤390,由146指明的点划线代表的是从服务94-1向客户机54-1返回确^人。前述内容基本完成了对常规状态操作中,由主服务器62-1处理一个消息的描述。现在应当理解,根据对步骤310到400进行的上述描述,主服务器62-1可以串行地和/或并行地处理多个消息。例如,当服务94-1处理一个消息M时,类似的服务98-1还可以基本上如同前面描述的那样处理另一个消息M,而库102-1同时与服务94-1和98-1交互。此外,当服务94-1的一个线程处理一个消息M时,服务94-1的另一个线程还可以基本如前面描述的那样处理另一个消息M,而库102-1与服务的两个线程交互。步骤350确保共享资源122-1是闭锁的从而避免服务94-1和98-1(或者其线程)之间的争夺,以便确保在一个时间那些服务中只有一个与共享资源122-1交互。(注意"交互"包括任何类型的功能,包括但是不限于,读、写和删除。)作为需要被避免的情况的一个实施例,指令取消服务98-1将对共享资源122-1进行读写,同时它是闭锁的以便取消给定的指令,这将阻止匹配服务(未示出)对被取消的指令匹配。借助同样的记号(token),步骤355使用定序器106-1为每个消息M产生唯一的顺序编号,并且不考虑服务94-1或者98-1(或者其线程)哪个处理消息M。因此,可能有很多次,当特定服务94-1或者98-1(或者其线程)在步骤345请求共享资源122-1而共享资源122-1是闭锁的的情形,因此特定服务(或者其线程)将在步骤345暂停,直到共享资源122-1被解锁,随后从步骤345继续开始。已经描述了常规状态工作中,由主服务器62-l进行的消息处理,对方法300的讨论现在转向步骤405、后续步骤以及由第二服务器62-2进行消息处理的执行。再次参考图3,在步骤405,根据共享资源顺序编号发送消息、调用结果和顺序编号。继续讨论前面的实施例,此时,消息M(0J(即来自表m的记录1的字段1的内容)将被发送到服务94-2,同时调用结果(即来自表III的记录1的字段2和3的内容)和顺序编号(即来自表III的记录1的字段4的内容)将被发送到第二库102-2。因此,在步骤310S,服务94-2将从复制代理126-2接收消息M(),以在步骤310中服务94-1将从客户机54-1接收消息M(0J几乎相同的方式。从服务94-2的角度考虑,已经从客户机接收了消息M(0J。此时,现在变得明显的是,服务94-2基本与服务94-1相同。(类似地,服务98-2基本与服务98-1相同)。服务94-2将以与在服务器62-1中工作的服务94-1相同的方式工作在服务器62-2中。换言之,服务94-2执行的步骤310S、315S、340S、345S、360S、370S、380S和390S的方式,与服务器62-l中服务94-l执行的步骤310、315、340、345、360、370、380和390的方式相同。服务器94-1和服务器94-2都不清楚它们工作在其中的特定服务器是被指定为主服务器还是备用服务器。这体现了本发明的多个优点中的一个,一次可以为两个(或多个)服务器开发服务,而不用必须为被指定为主服务器的服务器开发一组服务,为指定为备用服务器的服务器开发一组服务。但是每个库102,与其相应的故障切换代理90和状态寄存器114沟通后,明了其服务器62是被指定为主服务器还是备用服务器。因此,当服务94-2执行步骤315S时,并且进行调用,库102-2将不会利用外部资源代理118-2,但是在步骤415,将返回由库102-2在步骤410接收到的调用结果(即来自表III的记录1的字段2和3的内容)。在图11中示出了步骤405、310S、410的执行。在图12中示出了步骤315S、415和340S的执行。借助同样的记号,当服务94-2执行步骤345S并且请求共享资源时,库102-2通过在步骤420闭锁共享资源122-2并且在步骤425通过返回共享资源的顺序编号(即来自表III的记录1的字段4的内容)来进行响应,所述顺序编号由库102-2在步骤410接收,并且没有使用定续器106-2。在图13中示出了步骤345S、420和425的执行。借助同样的记号,当服务94-2执行步骤360S并且请求复制时,库102-2将在步骤430不是通过实际执行复制、而是在步骤380S向服务94-2返回复制确认来进行响应,基本上模仿步骤400。步骤370S和435因此基本与步骤370和375的执行类似,这样表IV的内容直接由服务94-2单独产生,并且在共享资源122-2中存储。在图14中示出的了步骤370S和435的执行。类似地,步骤380S和390S以与步骤380和步骤390类似的方式才丸4亍,除了在步骤390S返回的确认被返回到复制代理126-2,而不是客户机54-1。此时,在方法300的执行的结果处,现在将知道处理消息M(0!)的结果目前被作为表IV而同时存储在共享资源122-1和共享资源122-2中。还可以注意到,步骤310S、315S、340S、345S、360S、370S、380S、390S和步骤310、315、340、345、360、370、380、390的才丸行之间的延迟实际上非常小。任何这样的延迟可以由在步骤365的网络延迟和步骤395和405的处理确定,该处理非常迅速。无论如何,系统50可以被配置以便延迟比向硬盘中写入备份信息快得多,这也是本发明的另一个优势。因此,方法300可以被用于处理消息从而使用消息94-1(并且如同由服务94-2所跟踪的(shadowed))下达买入和卖出证券的指令。类似地,方法300可以被用于使用服务98-1(并且如同由服务98-2所跟踪的)取消这些指令。附加服务可以被创建并包含在服务器62-1中,也可以被很容易地下达到服务器62-2上从而为那些服务提供可靠的故障切换,但是不需要要求用于该服务的一组代码位于服务器62-1上,而要求用于该服务的另一组代码位于服务器62-2上,两个服务器所需要的是用于特定服务的一组代码。从特定角度考虑可能更为明显的是,在出现故障切换时,系统50可以完全地保护结果,而不会出现通常伴随向硬盘写信息而出现的速度损失。由于在常规状态下,服务器62-2保存有在服务器62-1中执行的处理的最新镜像,通过使服务器62-2在服务器62-1出现故障的时候接管服务器62-1的处理任务,可以迅速地恢复服务器62-1的故障。图15示出了一个流程图,该流程图描述了管理一对服务器的方法,其中服务器中的一个被指定为主服务器,而另一个服务器被指定为备用服务器。当使用系统50实现时,在步骤505,确定是否两个服务器都是可用的。则步骤505前进至步骤510,在此处系统50以之前参照方法300描述的那样工作于常规状态。步骤505和步骤510继续循环,除非确定了两个服务器不是都可用,在该情况下方法将前进到步骤520。在步骤520,确定是否只有第一服务器是可用的。例如,如果故障切换代理90-1不管因为什么原因不能与故障切换代理90-2建立连接,随后在步骤520确定只有第一服务器是可用的,并且方法500将前进到步骤530,此时系统50将以仅有主服务器状态工作。故障切换代理90-1不能与故障切换代理90-2建立连接的可能原因包括但不限于,服务器62-2出现了致命的损毁或者切断了连接78。如果第一服务器不可用,随后方法从步骤520前进到步骤540,在该步骤确定是否只有第二服务器可用。如果不可用,方法500以异常结束。但是如果确定第二服务器可用,则方法500从步骤540前进到步骤550。在步骤550,系统50进行故障切换,这样由第二服务器执行后续处理。接下来,在步骤560,操作继续,进一步处理是以仅有第二服务器的状态下进行的。方法500随后在步骤560和570之间循环,直到两个服务器重新都变为可用,此时方法500前进到步骤510,并且系统返回到常规状态。图16示出了处于仅有主服务器状态下的系统50的实施例,其中服务器62-l被指定为主服务器,而服务器62-2是脱机的(或者由于连接78的故障引起的其他不可用)。在图16中,由于服务器62-1以仅有主服务器状态工作,状态寄存器114-1将指明服务器62-1当前被指定为主服务器,并且以仅有主服务器状态工作。尽管在没有示出,注意系统50同时还可以被配置为常规状态,其中服务器62-2被指定为主服务器,同时服务器62-1被指定为备用服务器。显示为流程图的图18描述了方法600,该方法用于在服务器62只有一个可用时处理消息。在方法500的步骤530中,方法600将由服务器62-1在方法500的步骤530中执行,或者在方法500的步骤560中由服务器62-2所执行。本领域的技术人员现在应当理解,方法600基本反映了方法300中的主服务器的操作。更具体地,可以注意到方法300的步骤310-360和步骤370-390对应于方法600中的对应步骤,对应步骤带有相同的数字和后缀"F"。但是方法600的步骤365F与方法300的步骤365不同。步骤365F对应于方法300的步骤430,在步骤365F,库102通过简单地才莫仿副本已经被接收到的确认来响应来自服务94(或98)的进行复制的请求,这样服务94(或98)将在步骤380F接收这样的确认,并且允许方法600前进到步骤390F。显示为流程图的图19描述了方法700,该方法用于从主服务器向备用服务器进行故障切换,备用服务器可以被用于实现方法500的步骤550。如果故障切换代理114-2发现服务器62-1出现了故障(例如损毁或者因为任何原因而变得不再可用),例如将由服务器62-2执行方法700。由于客户机54已经在和服务器62-1通信,客户机54将继续与服务器62-1交互,尽管服务器62-2认为服务器62-1发生故障并且服务器62-2认为它是主服务器。在那种情况下,方法700将在步骤710开始,此时复制代理队列将被清除。在上面讨论的实施例中,根据步骤405(和随后的步骤310S、315S、340S、345S、360S、370S、380S、390S、410、415、420、425、430和435),服务器62-2将继续处理在复制代理126-2中存储的全部数据,以1更清除和复制在服务器62-1出现故障之前、在服务器62-1中正在处理的全部消息(和相关外部调用)的处理。在出现服务器62-1在步骤370处出现故障的情况时,服务器62-2将从执行恢复协议的客户机接收副本消息,例如中断(GAP)恢复,或者作为另一个实施例,在申请人同时提交的申请中描述的恢复类型、如同在美国已经公布的申请US20050138461中所描述的那样。由于客户机将不再从服务器62-1接收消息已经被处理的确认。在这种情况下,服务器62-2被配置为识别副本消息,并且简单地返回同样的响应,而不会尝试重新处理同样的消息。接下来,在步骤720,复制代理将被去激活。在本实施例中,复制代理126-2将被去激活,这样它将不再保留从服务器62-1接收到的数据队列,或者被配置为向服务94-2和98-2发送消息。在步骤730,外部资源代理和定序器将被激活。在本实施例中,外部资源代理118-2将变为激活,这样它可以被配置为执行在方法600的步骤325F和步骤330F中示出的外部功能调用。类似地,定序器106-2也被激活,这样它将被配置为分配在方法600的步骤355F中示出的顺序编号。接下来,在步骤740,故障切换代理被设定为指明仅有主服务器状态。在实施例中,故障切换代理114-2被设置为指明仅有主服务器状态,这样库102-2知道4姿照方法600的步骤320F、335F、350F、355F和365F进行才乘作。才秦下来,在步骤720,向客户机通知出现了服务器。在本实施例中,服务器62-2将通过网络58向客户机54宣布服务器62-2准备好了从客户机54接收和处理消息。实现该过程的方式并不是特定的,在方法300的开始前,服务器62-1也会以基本相同方式将向客户机54宣告自己。会话协议可以执行中断恢复,这样各方可以重发送对应方可能未接收到的通信。此处,系统50处于图17种示出的状态,其中,服务器62-2被指定为主服务器,并且系统50已经准备好了将服务器62-2作为主服务器,以仅有主服务器的状态工作。此处,该方法可以返回方法500的步骤560,这样可以根据方法600接收和处理从客户机接收的消息。在此处仅仅讨论了本发明的各种特征和组件的特定组合,本领域的技术人员明了可以使用所公开的特征和组件的理想的子集和/或这些特征和组件的变化组合。例如,在系统50包括两个服务器62-1和62-2的同时,可以预期能够使用任何数量的服务器。一个服务器将被指定为主服务器,而任何数量的附加服务器可以被指定为备用服务器,并且使用此处合理的修改的教导以串行或者并行的方式结合在一起。这样的附加服务器将与此处公开的服务器62有基本相同的计算环境和结构,并且无论如何将具有相同的与库和其他软件元件交互的服务从而代表那些服务进行外部调用(在主服务器的情况下),或者从而代表那些服务的镜像副本提供那些外部调用的复制(在备用服务器的情况下)。还应当理解方法300可以变化。例如,方法300可以^L配置为完全同步工作,这样只要主和第二共享资源中已经写入了由特定服务执行的处理的结果,主服务器将仅仅向客户机确认消息已经被处理,可以通过改变方法300使得只有在步骤380S被执行后才会执行步骤400。权利要求1、一种用于故障切换的系统,包括至少一个客户机,选择性地可连接到经由网络连接的至少两个互连的服务器之一;当被连接到所述客户机时,所述服务器中的一个被指定为主服务器,并且当未连接到所述客户机时,所述服务器中的剩余服务器被指定为备用服务器;所述至少一个客户机被配置为向所述主服务器发送消息;所述服务器中的每一个被配置为经由处理不同类型的所述消息的多个服务来处理全部的所述消息;所述服务中的每一个被配置为访问和/或更新由所述服务器基于处理所述消息的结果而保持的共享资源;所述服务器中的每一个都保持与所述服务相关的库;当由所述主服务器保持时,所述库被配置为通过下述步骤响应来自与所述消息相关的服务的请求i)执行对外部资源的至少一个外部调用;ii)基于来自与所述消息相关的服务的请求来对每个消息确定顺序;iii)返回所述外部调用和的所述顺序的结果给所述消息相关的所述服务,iv)在由所述服务器共享的高速缓存中存储所述外部调用和所述顺序的结果;并且所述主服务器和所述备用服务器被连接,这样i)在所述主服务器接收的来自所述至少一个客户机的消息;以及ii)所述外部调用在高速缓存中存储的结果;被镜像到所述备用服务器;当由所述备用服务器保持时,所述库被配置为通过i)使用从所述主服务器镜像来的所述被高速缓存存储的结果的内容来返回所述外部调用的结果;来响应来自与所述消息相关的服务的请求;所述备用服务器以与所述主服务器相同的顺序,使用所述高速缓存来处理所述消息,这样在所述主服务器和所述备用服务器中存储的所述共享资源是基本上相同的,并且如果所述主服务器发生故障,备用服务器变成被指定为所述主服务器并且以基本透明的方式代表所述客户机来继续处理附加消息。2、根据权利要求1所述的系统,其特征在于,所述高速緩存被保持在易失性存储器中。3、根据权利要求1所述的系统,其特征在于,所述系统是电子交易系统中的一部分,并且所述服务是交易引擎的一部分;所述系统包括两个附加客户机,每个都向所述主服务器提交两个附加消息;所述附加消息中的每一个被以与所述消息基本相同的方式被处理。4、根据权利要求3所述的系统,其特征在于,所述消息中的一个代表买入指令和接收到的所述两个附加消息,该附加消息在不同的但是几乎相同的时间被接收到,所迷两个附加消息都代表符合所述买入指令的条件的卖出指令;这样如果主服务器发生故障,备用服务器继续处理所述消息,这样所述卖出指令中的较早的一个与所述买入指令匹配。5、根据权利要求4所述的系统,其特征在于,所述外部资源是操作系统时间戳和市场反馈。6、根据权利要求1所述的系统,其特征在于,所述外部资源是操作系统时间戳。7、一种用于故障切换的系统,包括至少一个客户机,选^奪性地可连接到经由网络连接的至少两个互连的服务器之一;当被连接到所述客户机时,所述服务器中的一个被指定为主服务器,并且当未连接到所述客户机时,所述服务器中的剩余服务器被指定为备用服务器;所述至少一个客户机被配置为向所述主服务器发送消息;所述服务器被配置为代表所述客户机使用多线程来处理所述消息,并且保持与处理所述消息所使用的每个所述线程都可以访问共享资源;所述主服务器被配置为通过进行与所述消息中的一个或多个相关的对外部资源的至少一个外部功能调用来处理所述消息;所述主服务器被配置为向所述备用服务器镜像下述内容i)所述消息;ii)与所述消息相关的所述外部功能调用的结果;以及iii)用于处理所述消息的顺序;所述备用服务器被配置为使用根据所述顺序从所述主服务器接收到的所述镜像的外部功能调用结果来处理所述消息,这样在借助所述服务器中的每一个来处理所述消息时,所述主服务器和所述备用服务器中存储的所述共享资源是基本相同的。8、一种用于故障切换的系统,包括至少一个客户机,选择性地可连接到经由网络连4妄的至少两个互连的服务器之一;当被连接到所述客户机时,所述服务器中的一个被指定为主服务器,并且当未连接到所述客户机时,所述服务器中的剩余服务器被指定为备用服务器;所述至少一个客户机被配置为向所述主服务器发送消息;所述服务器被配置为使用至少一个服务来处理所述消息,所述月良务在每一个所述服务器中都是相同的,并且不知道与所述服务相关的服务器是作为主服务器还是备用服务器工作;所述服务器还被配置为保持一个库,该库指明了该服务器是主服务器还是备用服务器;每个服务器中的所述服务被配置为经由与其相关的所述库来进行至少一个外部调用;所述主服务器中的所述库^^皮配置为完成所述外部调用,并且向所述主服务器中的所述服务返回所述外部调用的结果,并且向所述备用服务器中的所述服务转发所述外部调用的结果。9、根据权利要求8所述的系统,其特征在于,所述库被实现为一组或多组相异的可用代码。10、根据权利要求8所述的系统,其特征在于,所述服务器每个都被配置为保持共享资源,其中所述服务可以存储处理所述消息的结果。11、根据权利要求10所述的系统,其特征在于,所述共享资源被保持在相关服务器的随机访问存储器中。12、根据权利要求8所述的系统,其特征在于,所述外部调用是对时间戳的请求。13、根据权利要求8所述的系统,其特征在于,所述系统是电子交易系统中的一部分,消息是买卖证券的指令,并且所述外部调用是对所述证券的价值的市场反馈报价的请求。14、根据权利要求8所述的系统,其特征在于,所述至少一个服务包括下达指令服务、指令取消服务、指令改变服务、指令匹配服务、进入之前执行的交易的服务或者进入交叉交易的服务中的一个。15、根据权利要求10所述的系统,其特征在于,所述主服务器中结果已经被成功地转发给所述备用服务器时,才向所述客户机确认已经处理了所述消息。16、根据权利要求10所述的系统,其特征在于,所述主服务器中所述结果已经被成功地转发给所述备用服务器,都向所述客户机确认已经处理了所述消息。17、根据权利要求16所述的系统,其特征在于,如果在预定时间段中,备用服务器没有确认所述外部调用的所述结果已经被成功地转发给所述备用服务器,则所述主服务器将认为所述备用服务器出现了故障。18、一种用于系统中的故障切换的方法,包括至少一个客户机,选择性地可连接到经由网络连接的至少两个互连的服务器之一;当被连接到所述客户机时,所述服务器中的一个被指定为主服务器,并且当未连接到所述客户机时,所述服务器中的剩余服务器被指定为备用服务器;所述至少一个客户机被配置为向所述主服务器发送消息,所述方法包括将所述服务器配置为使用至少一个服务来处理所述消息,所述服务在每一个所述服务器中都是相同的,并且不知道与所述服务相关的服务器是作为主服务器还是备用服务器工作;将所述服务器配置为保持一个库,该库指明了该服务器是主服务器还是备用服务器;将所述服务配置为经由与其相关的所述库来进行外部调用;和将所述主服务器中的所述库配置为完成所述外部调用,并且向所述主服务器中的所述服务返回所述外部调用的结果,并且向所述备用服务器中的所述服务转发所述外部调用的结果。19、一种计算机可读介质,该介质存储了经由网络连接的至少两个互连的服务器中的一个上可以执行的程序指令,所述服务器选择性地可连接到至少一个客户机;当被连接到所述客户机时,所述服务器中的一个被指定为主服务器,并且当未连接到所述客户机时,所述服务器中的剩余服务器被指定为备份服务器;所述至少一个客户机被配置为向所述主服务器发送消息,所述程序指令包括用于将所述服务器配置为使用至少一个服务来处理所述消息的指令,所述服务在每一个所述服务器中都是相同的,并且不知道与所述服务相关的服务器是作为主服务器还是备用服务器工作;用于将所述服务器配置为保持一个库的指令,该库指明了该服务器是主服务器还是备用服务器;用于将所述服务配置为对与其相关的所述库来进行外部调用的指令;和用于将所述主服务器中的所述库配置为完成所述外部调用、并且向所述主服务器中的所述服务返回所述外部调用的结果、并且向所述备用服务器中的所述服务转发所述外部调用的结果的指令。全文摘要本发明的一个方面提供了一种用于故障切换的系统,它包括至少一个客户机,选择性地可连接到经由网络连接的至少两个互连的服务器之一。在常规状态下,当被连接到客户机时,服务器中的一个被指定为主服务器,并且当未连接到客户机时,服务器中的剩余服务器被指定为备用服务器。所述至少一个客户机被配置为向主服务器发送消息。该服务器被配置为使用至少一个服务来处理该消息,该服务在每一个服务器中都是相同的。该服务不知道与该服务相关的服务器是作为主服务器还是备用服务器工作。该服务器还被配置为保持一个库或者类似物,该库指明了该服务器是主服务器还是备用服务器。每个服务器中的服务对与其相关的库进行外部调用。主服务器中的库被配置为完成外部调用,并且向主服务器中的服务返回外部调用的结果,并且向备用服务器中的服务转发外部调用的结果。当被第二服务器中的服务要求这样做时,第二服务器中的库不进行外部调用,而是简单地向第二服务器中的服务转发从主服务器接收到的外部调用的结果。文档编号G06Q40/00GK101523355SQ200780035109公开日2009年9月2日申请日期2007年2月19日优先权日2006年8月4日发明者丘多尔·莫洛森,本逊·诗杰·林,格利高利·A.·阿伦,维克多·帕夫烈科申请人:多伦多证券交易所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1