多重化处理系统、多重化处理方法以及程序与流程

文档序号:14254438阅读:724来源:国知局
多重化处理系统、多重化处理方法以及程序与流程

本发明的实施方式涉及多重化处理系统、多重化处理方法以及程序。



背景技术:

作为提高计算机的可靠性的手段,在多个计算机上重复执行相同处理的多重化处理系统(multiplexing)在以往就被实用化。在多重化处理系统中,即使多个计算机中的某个因故障而输出错误的结果,通过将该错误的结果与由其他计算机输出的正常结果进行比较,能够进行错误的检测或者修正。由此作为系统整体的可靠性得以提高。

作为实现多重化处理系统的方式,已知有使用了排列组播(orderedmulticasting)的方式。例如已知有将处理对象的输入数据发送给多个计算机并且决定输入数据的处理顺序的输入排列组播处理。通过执行输入排列组播处理,各个计算机能够以相同的顺序处理相同的输入数据。

在使用了排列组播的方式的多重化处理系统中,被多重化的处理必须有确定性。这里,“有确定性”是指,根据输入数据和处理前的内部数据,输出数据和处理后的内部数据唯一确定的性质。根据该性质,被多重化处理的内容保持一贯性,输出数据串在多个计算机间相同。

现有技术文献:

专利文献:

专利文献1:日本专利第3655263号公报

专利文献2:日本专利第2534430号公报

非专利文献:

非专利文献1:zookeeper,[online],[平成27年5月7日检索],网络<url:http://zookeeper.apache.org/doc/current/zookeeperinternals.html>



技术实现要素:

发明要解决的课题

在以往的技术中,被多重化的处理限于有确定性的处理。这是因为,在被多重化的处理没有确定性的情况下,正常的结果不唯一,因此即使在未产生故障时,各计算机的输出结果也可能不同。即在以往的技术中,被多重化的处理没有确定性的情况下,作为多重化处理系统无法保证一贯性。

用于解决课题的手段

实施方式的多重化处理系统是具备多个服务器装置的多重化处理系统。各个上述服务器装置具备存储部、处理部、决定控制部、恢复部、重新执行控制部、以及输出部。存储部存储内部数据。处理部输出通过基于输入数据和处理前的上述内部数据的处理而唯一确定的确定性输出数据、或者通过上述处理而不能唯一确定的非确定性输出数据,作为第1输出数据。决定控制部选择从本装置输出的上述第1输出数据、或者从本装置以外的其他某个服务器装置输出的第1输出数据中的一个,决定为第2输出数据。在上述第2输出数据是非确定性输出数据的情况下,恢复部将上述存储部所存储的内部数据恢复到处理前的状态。在上述第2输出数据是确定性输出数据、并且上述第2输出数据与从本装置输出的上述第1输出数据不一致的情况下,重新执行控制部使本装置重新执行上述处理,直到上述第2输出数据与重新决定的上述第1输出数据一致、或者重新执行次数达到阈值以上为止。在上述第2输出数据是非确定性输出数据的情况下,或者,在上述第2输出数据是确定性输出数据、并且上述第2输出数据与重新决定的上述第1输出数据一致的情况下,输出部输出上述第2输出数据。

附图说明

图1是表示第1实施方式的多重化处理系统的构成的例子的图。

图2是表示第1实施方式的服务器装置的构成的例子的图。

图3是表示第1实施方式的输入排列组播的例子的图。

图4是表示第1实施方式的多重化处理方法的例子的流程图。

图5是表示第1实施方式的最终确定处理的例子的流程图。

图6是表示第1实施方式的多重化处理方法的处理例1的图。

图7是表示第1实施方式的多重化处理方法的处理例2的图。

图8是表示第1实施方式的多重化处理方法的处理例3的图。

图9是表示第2实施方式的服务器装置的构成的例子的图。

图10是表示第2实施方式的最终确定处理的例子的流程图。

图11是表示第2实施方式的复制处理的例子的流程图。

图12是表示第2实施方式的多重化处理方法的处理例的图。

图13是表示第1以及第2实施方式的服务器装置的硬件构成的例子的图。

具体实施方式

以下参照附带的附图,详细说明多重化处理系统、多重化处理方法以及程序的实施方式。

(第1实施方式)

图1是表示第1实施方式的多重化处理系统100的构成的例子的图。第1实施方式的多重化处理系统100具备:服务器装置10-1、···、服务器装置10-n(n是4以上的整数)、客户端装置20-1、···、客户端装置20-m(m是1以上的整数)、以及网络30。以下,在不区分服务器装置10-1、···、以及服务器装置10-n的情况下,仅称为服务器装置10。相同地,在不区分客户端装置20-1、···、以及客户端装置20-m的情况下,仅称为客户端装置20。

服务器装置10以及客户端装置20经由网络30连接。另外,各装置间的通信方式可以是有线也可以是无线,另外,也可以是双方的组合。

图2是表示第1实施方式的服务器装置10的构成的例子的图。第1实施方式的服务器装置10具备:输入部101、输入排列部102、处理部103,存储部104、恢复部105、缓冲器106、决定控制部107、重新执行控制部110、协作控制部111以及输出部112。此外,决定控制部107具备输出排列部108以及判断部109。

输入部101从客户端装置20经由网络30接收到输入数据时,将该输入数据输入到输入排列部102。

输入排列部102从输入部101受理输入数据时,将该输入数据发送给本装置以外的其他服务器装置10。而且,输入排列部102从本装置以外的其他服务器装置10接收由本装置以外的其他服务器装置10接收的输入数据。输入排列部102通过输入排列组播来决定多个输入数据的顺序。这里对输入排列组播进行说明。

图3是表示第1实施方式的输入排列组播的例子的图。图3的例子表示输入数据a以及输入数据b被从服务器装置10-1的输入部101-1输入到输入排列部102-1、输入数据c被从服务器装置10-3的输入部101-3输入到输入排列部102-3、输入数据d被从服务器装置10-4的输入部101-4输入到输入排列部102-4的情况。

输入排列组播处理是,将输入到本装置的输入部101的输入数据发送到本装置以外的其他服务器装置10、并且决定表示输入数据的处理顺序的顺序编号的处理。各服务器装置10的输入排列部102将输入数据和顺序编号建立对应。该建立对应在各服务器装置10中是相同的。图3的例子表示输入数据的处理顺序决定为输入数据d、输入数据a、输入数据c、输入数据b的顺序的情况。决定输入数据的处理顺序的处理例如能够适用专利文献1所记载的方法。

返回到图2,输入排列部102将通过输入排列组播决定的输入数据依次输入到处理部103。处理部103从输入排列部102受理输入数据时,将通过对该输入数据进行处理而得到的第1输出数据输入到缓冲器106(第1输出数据输出处理)。具体而言,处理部103将确定性输出数据或者非确定性输出数据作为第1输出数据输入到缓冲器106。

确定性输出数据是通过基于输入数据和存储部104所存储的处理前的内部数据的处理而唯一确定的输出数据。非确定性输出数据是抽象地示出通过基于输入数据和存储部104所存储的处理前的内部数据的处理而不能唯一确定的输出数据。非确定性输出数据不区分类型,与确定性输出数据不重复。

这里对输出非确定性输出数据的处理的例子进行说明。例如在处理的执行中资源不足而不能继续该处理时取消该处理的错误处理对应于输出非确定性输出数据的处理。这是因为,资源不足(例如存储器不足)的产生取决于在同一装置中相邻执行的其他程序的状态等外部重要因素。

具体而言,例如在通过对操作系统的系统调用确保资源的情况下,有不保证确定性的可能。这是因为,通常的操作系统在资源的确保方面不具有确定性,取决于其他程序的执行状况等,确保或成功或失败。换句话说,关于多重化的处理,有可能在某计算机发生资源不足,而在其他计算机中不发生资源不足。或者,发生资源不足的程序执行位置在服务器装置10之间不同时,也有可能存储部104的处理后的内部数据的一贯性消失。

针对该课题,在现有技术中,数据处理程序通过每次不从操作系统直接确保资源的方式来确保确定性。例如有确定性的资源管理程序预先从操作系统确保并储备好规定的量的资源,数据处理程序经由资源管理程序取得资源,由此来确保确定性。

另外,错误处理虽与通常处理的流程不同,却是应该适当地应对的处理,但也有输出确定性输出数据的错误处理。例如在输入数据的值不在规定的范围的情况下输出表示输入数据的值不在规定的范围的含义的消息的错误处理仅基于输入数据来决定,因此该错误处理能够成为输出确定性输出数据的处理。

输出确定性输出数据的错误处理始终是正常的处理,自始至终由全部的计算机执行相同的错误处理。另一方面,例如在计算机的误动作(拜占庭故障)等故障时,仅特定的计算机输出错误的输出数据(或者完全不输出输出数据)。

在第1实施方式的说明中,使多重化处理系统100所包含的服务器装置10的数量n成为满足n>3b的数量。这里b是允许拜占庭故障的服务器装置10的数量。

在处理部103基于输入数据处理存储部104的内部数据之前,恢复部105保持存储部104的该内部数据。而且,在后述的第2输出数据是非确定性输出数据的情况下,恢复部105从后述的判断部109受理恢复请求。恢复部105受理恢复请求时,将存储部104的该内部数据恢复到处理前的状态。在后述的第2输出数据是确定性输出数据、并且第1输出数据和后述的第2输出数据不一致的情况下,恢复部105从后述的判断部109受理恢复请求。恢复部105受理恢复请求时,将存储部104的该内部数据恢复到处理前的状态。

缓冲器106存储从处理部103受理到的第1输出数据。输出排列部108将本装置的缓冲器106所存储的第1输出数据发送到本装置以外的其他服务器装置10。此外,输出排列部108从本装置以外的其他服务器装置10受理第1输出数据。

而且,输出排列部108执行输出排列组播处理。对输出排列组播处理进行说明。输出排列组播处理是,关于各顺序编号,选择b+1以上的服务器装置10的缓冲器106所存储的相同的第1输出数据,决定为第2输出数据。此时,输出排列组播处理以所选择的第2输出数据在各服务器装置中一致的方式进行动作。

在未发生拜占庭故障的正常的服务器装置10中,只有由通过有确定性的动作而唯一确定的确定性输出数据或非确定性输出数据的某方能成为第1输出数据。要注意的是,由于n>3b为动作条件,因此某方必然有b+1以上,且必然有第2输出数据的候补。

具体而言,由于动作条件为n>3b,除去了成为拜占庭故障的服务器装置10之后的正常服务器装置10的数量至少是2b+1。于是,在将作为第1输出数据而输出了非确定性输出数据的服务器装置10的数量设为x,将作为第1输出数据而输出了确定性输出数据的服务器装置10的数量设为y时,x+y≧2b+1。由此,x或y的至少一方为b+1以上。

这里,在x和y的双方为b+1以上的情况下,哪方都能选择,但输出排列组播处理必须以该选择在各服务器装置中一致的方式动作。作为其具体的实现方法,与输入排列组播的情况相同,例如能够适用专利文献1所记载的方法。

输出排列部108将第2输出数据与顺序编号一起输入到判断部109。

判断部109从输出排列部108受理第2输出数据以及顺序编号时,从缓冲器106读出与该顺序编号建立了对应的第1输出数据,执行最终确定处理。

<第2输出数据是非确定性输出数据的情况>

在第2输出数据是非确定性输出数据的情况下,判断部109对恢复部105输入将存储部104的内部数据恢复到处理前的状态的恢复请求,并且,将该第2输出数据输入到输出部112。输出部112从判断部109受理到第2输出数据时,输出该第2输出数据。

<第2输出数据是确定性输出数据且第1输出数据和第2输出数据不一致的情况>

在第2输出数据是确定性输出数据且第1输出数据和第2输出数据不一致的情况下,判断部109将重新执行由处理部103进行的处理的重新执行控制请求输入到重新执行控制部。

从判断部109受理到重新执行控制请求时,重新执行控制部110对恢复部105输入恢复请求,对处理部103输入重新执行请求。处理部103重新执行基于输入数据和由恢复部105恢复后的处理前的内部数据的处理,重新决定本装置的第1输出数据。重新执行控制部110使本装置的处理部103重新执行基于输入数据和处理前的内部数据的处理,直到第2输出数据和重新决定后的第1输出数据一致或者重新执行次数到达阈值以上为止。

通过处理部103重新执行处理而第1输出数据和第2输出数据一致了的情况下,重新执行控制部110将表示处理结果一致的处理结果一致通知输入给判断部109。判断部109在从重新执行控制部110受理到处理结果一致通知时,确定从输出部112输出第2输出数据。而且,判断部109将第2输出数据输入到输出部112。输出部112从判断部109受理到第2输出数据时,输出该第2输出数据。

而且,在重新执行次数达到阈值以上的情况下,重新执行控制部110对协作控制部111输入使与本装置以外的其他服务器装置10之间的协作停止的协作停止请求。协作控制部111从重新执行控制部110受理到协作停止请求时,停止与本装置以外的其他服务器装置10之间的协作。即多重化处理系统100视为在该服务器装置10中发生故障,不将该服务器装置10用于多重化处理。

接下来对第1实施方式的多重化处理方法进行说明。

图4是表示第1实施方式的多重化处理方法的例子的流程图。首先,输入部101经由网络30从客户端装置20接收输入数据(步骤s1)。接下来,输入排列部102通过执行上述输入排列组播处理,决定多个输入数据的处理顺序(步骤s2)。接下来,处理部103通过执行上述第1输出数据输出处理,输出第1输出数据(步骤s3)。接下来,输出排列部108通过执行上述排列组播处理,基于顺序编号相等的多个第1输出数据决定第2输出数据(步骤s4)。接下来,判断部109执行最终确定处理(步骤s5)。最终确定处理的详细参照图5后述。接下来,输出部112输出由步骤s5的最终确定处理确定的第2输出数据(步骤s6)。

接下来对上述的步骤s5的最终确定处理进行说明。

图5是表示第1实施方式的最终确定处理的例子的流程图。首先,判断部109判断第2输出数据是否是非确定性输出数据(步骤s11)。

在第2输出数据是非确定性输出数据的情况下(步骤s11,是),恢复部105执行将存储部104的该内部数据恢复到处理前的状态的恢复处理(步骤s12)。接下来,判断部109将第2输出数据确定为输出部112的输出(步骤s17)。

在第2输出数据不是非确定性输出数据的情况下(步骤s11,否),即第2输出数据是确定性输出数据的情况下,判断部109进一步判断第1输出数据和第2输出数据是否一致(步骤s13)。

在第1输出数据和第2输出数据一致的情况下(步骤s13,是),判断部109将第2输出数据确定为输出部112的输出(步骤s17)。

在第1输出数据和第2输出数据不一致的情况下(步骤s13,否),重新执行控制部110执行重新执行处理(步骤s14)。具体而言,重新执行控制部110对恢复部105输入恢复请求,对处理部103输入重新执行请求。处理部103通过重新执行基于输入数据和由恢复部105恢复后的处理前的内部数据的处理,再次输出第1输出数据。

接下来,判断部109判断重新执行次数是否达到阈值以上(步骤s15)。在重新执行次数达到阈值以上的情况下(步骤s15,是),协作控制部111执行停止与本装置以外的其他服务器装置10之间的协作的协作停止处理(步骤s16)。在重新执行次数未到阈值的情况下(步骤s15,否),处理返回到步骤s13,判断部109再次判断第1输出数据和第2输出数据是否一致。

此外,在上述说明中省略了部分说明,分别对全部的、输入数据、第1输出数据、第2输出数据赋予顺序编号。输入数据的顺序编号是由输入排列组播赋予的顺序编号。第1输出数据的顺序编号被赋予了输出其的处理的该输入数据的顺序编号。输出排列组播中,受理被赋予了与自身管理的排列组播的顺序编号相等的顺序编号的第1输出数据,对该决定的第2输出数据赋予其顺序编号。

如在上述图4以及图5中说明过的那样,各服务器装置10针对各顺序编号的每一个,进行输入排列组播处理(步骤s2)、第1输出数据输出处理(步骤s3)、输出排列组播处理(步骤s4)、最终确定处理(步骤s5)这一系列的处理。此时,处理部103的处理必须按照一系列的顺序编号的顺序来执行。

另外,也可以是,有关相同的顺序编号,处理部103的处理的执行在多个服务器装置10之间不一定同时进行。例如也可以是,1台服务器装置10的处理部103的处理的执行延迟,而执行与其他服务器装置10相比旧的顺序编号的处理。即使在这样的情况下,只要输入排列组播以及输出排列组播满足其动作条件,多重化处理的一贯性也会得以保持。而且,作为输入排列组播以及输出排列组播的动作的一环,暗中在某种程度上取得计算机间的同步。该程度取决于输入排列组播以及输出排列组播的安装而决定。

接下来对第1实施方式的多重化处理方法的处理例进行说明。

图6是表示第1实施方式的多重化处理方法的处理例1的图。图6的例子表示服务器装置10的数量n是4、拜占庭故障的产生数b是1(在服务器装置10-4发生拜占庭故障)的情况。服务器装置10-3的输入部101接收到输入数据a时,服务器装置10-3的输入排列部102将该输入数据a发送至服务器装置10-1、服务器装置10-2以及服务器装置10-4。另外,服务器装置10-4由于发送拜占庭故障因此成为动作不确定的状态。服务器装置10-1~服务器装置10-3的输入排列部102将输入数据a与相同的顺序编号建立对应。

服务器装置10-1~服务器装置10-3的处理部103通过进行基于输入数据a、和服务器装置10-1~服务器装置10-3的各自的存储部104所存储的处理前的内部数据的处理,输出第1输出数据。图6的例子表示,服务器装置10-1以及服务器装置10-2将非确定性输出数据x作为第1输出数据x输出,服务器装置10-3将确定性输出数据d作为第1输出数据d输出,发生拜占庭故障的服务器装置10-4将不确定的输出数据?作为第1输出数据?输出的情况。各个第1输出数据存储于各服务器装置10的缓冲器106中。

服务器装置10-1~服务器装置10-3的输出排列部108将非确定性输出数据x决定为第2输出数据。这是因为,非确定性输出数据x存储于服务器装置10-1以及服务器装置10-2的缓冲器106中,b+1=2,因而满足输出排列组播的选择条件。

服务器装置10-1~服务器装置10-3的判断部109按照上述的图5的流程图的步骤s11、步骤s12以及步骤s17,将第2输出数据x确定为输出部112的输出。

即服务器装置10-1~服务器装置10-3的输出部112将非确定性输出数据x作为第2输出数据x输出,因此服务器装置10-1~服务器装置10-3的恢复部105将存储部104的内部数据恢复到由处理部103处理之前。另外,服务器装置10-4由于发生拜占庭故障因此动作不确定。

作为结果,即使在服务器装置10-1以及服务器装置10-2进行非确定性的动作(例如基于向操作系统的系统调用的资源确保失败等)、服务器装置10-3进行确定性的动作(处理的成功)的情况下,多重化处理的一贯性也得以维持。换句话说,服务器装置10-1~服务器装置10-3的存储部104的内部数据回到与未处理输入数据a的情况同等的状态,示出该情况的非确定性输出数据x被从服务器装置10-1~服务器装置10-3输出。

另外,在现有技术的多重化处理中,在上述的图6的情况下,会视为服务器装置10-1以及服务器装置10-2中发生故障,多重化处理无法继续。

图7是表示第1实施方式的多重化处理方法的处理例2的图。图7的例子表示,服务器装置10的数量n为4、拜占庭故障的发生数量b为1(服务器装置10-4中发生拜占庭故障)的情况。服务器装置10-3的输入部101接收到输入数据a时,服务器装置10-3的输入排列部102将该输入数据a发送给服务器装置10-1、服务器装置10-2以及服务器装置10-4。另外,服务器装置10-4由于发生拜占庭故障因而成为动作不确定的状态。在图7的例子中,说明到第1输出数据d的输出处理为止正常地进行的情况。

服务器装置10-1~服务器装置10-4的输入排列部102将输入数据a与相同的顺序编号建立对应。

服务器装置10-1~服务器装置10-4的处理部103通过进行基于输入数据a、和服务器装置10-1~服务器装置10-4的各自的存储部104所存储的处理前的内部数据的处理,输出第1输出数据。图7的例子表示,服务器装置10-1以及服务器装置10-2将非确定性输出数据x作为第1输出数据x输出,服务器装置10-3以及服务器装置10-4将确定性输出数据d作为第1输出数据d输出的情况。各个第1输出数据被存储于各服务器装置10的缓冲器106中。

服务器装置10-1~服务器装置10-3的输出排列部108将确定性输出数据d决定为第2输出数据。这是因为,确定性输出数据d被存储于服务器装置10-3以及服务器装置10-4的缓冲器106中,b+1=2,因此满足输出排列组播的选择条件。另外,在图7的例子中,虽然非确定性输出数据x也满足输出排列组播的选择条件b+1=2,但由于第1输出数据d的输出处理以及发送处理较早,因此选择先满足输出排列组播的选择条件b+1=2的第1输出数据d。

另外,虽然前提是服务器装置10-4发生拜占庭故障,但是服务器装置10-1~服务器装置10-3并没有途径知道服务器装置10-4发生拜占庭故障。因此由服务器装置10-4的处理部103输出的第1输出数据d也与由正常的服务器装置10-1~服务器装置10-3输出的第1输出数据相同地被处理。

服务器装置10-1以及服务器装置10-2的判断部109按照上述的图5的流程图的步骤s11、步骤s13、步骤s14、步骤s15以及步骤s17,将第2输出数据d确定为输出部112的输出。该流程的例子示出,例如在服务器装置10-1以及服务器装置10-2发生暂时的资源不足而重新执行时消除了资源不足的情况。

服务器装置10-3的判断部109按照上述的图5的流程图的步骤s11、步骤s13以及步骤s17,将第2输出数据d确定为输出部112的输出。

关于服务器装置10-4的判断部109,由于服务器装置10-4中发生拜占庭故障,因此输出部112的输出不确定。

作为结果,即使在服务器装置10-1以及服务器装置10-2进行非确定性的动作(例如基于向操作系统的系统调用的资源确保失败等),服务器装置10-3以及服务器装置10-4进行确定性的动作(处理的成功)的情况下,多重化处理的一贯性也得以维持。换句话说,服务器装置10-1~服务器装置10-3的存储部104的内部数据成为处理了输入数据a后的状态。这里,第2输出数据d是有确定性的处理的结果,因此服务器装置10-1~服务器装置10-3的存储部104的内部数据自然也相同。

上述2个处理例是为了对本实施方式的多重化处理系统100的动作进行说明而举出的。然而,由于非确定性输出数据的输出是例外产生的,因此参照图8对通常的动作进行说明。

图8是表示第1实施方式的多重化处理方法的处理例3的图。图8的例子表示服务器装置10的数量n为4、拜占庭故障的发生数量b为1(服务器装置10-4发生拜占庭故障)的情况。服务器装置10-3的输入部101接收到输入数据a时,服务器装置10-3的输入排列部102将该输入数据a发送给服务器装置10-1、服务器装置10-2以及服务器装置10-4。另外,服务器装置10-4由于发生拜占庭故障因此成为动作不确定的状态。

服务器装置10-1~服务器装置10-3的输入排列部102将输入数据a与相同的顺序编号建立对应。

服务器装置10-1~服务器装置10-3的处理部103通过进行基于输入数据a、和服务器装置10-1~服务器装置10-3的各自的存储部104所存储的处理前的内部数据的处理,输出第1输出数据。图8的例子表示服务器装置10-1~服务器装置10-3将确定性输出数据d作为第1输出数据d输出的情况。各个第1输出数据被存储于服务器装置10-1~服务器装置10-3的缓冲器106中。

服务器装置10-1~服务器装置10-3的输出排列部108将确定性输出数据d决定为第2输出数据。这是因为,确定性输出数据d存储于服务器装置10-1~服务器装置10-3的缓冲器106中,b+1=2<3,因此满足输出排列组播的选择条件。另外,服务器装置10-4的第1输出数据?不满足输出排列组播的选择条件。

服务器装置10-1~服务器装置10-3的判断部109按照上述的图5的流程图的步骤s11、步骤s13以及步骤s17,将第2输出数据d确定为输出部112的输出。

作为结果,服务器装置10-1~服务器装置10-3中得以维持多重化处理的一贯性。而且如图8的例子那样,在非确定性输出数据x一个也没输出的情况下,本来应该输出的确定性输出数据d必须被输出。

如以上说明的那样,在第1实施方式的多重化处理系统100中,处理部103将确定性输出数据或者非确定性输出数据作为第1输出数据输出。而且决定控制部107(输出排列部108以及判断部109)选择从本装置的处理部103输出的第1输出数据、或者从本装置以外的其他某个服务器装置10的处理部103输出的第1输出数据中的一个,决定为第2输出数据。而且,在第2输出数据是非确定性输出数据的情况下,恢复部105将存储于存储部的内部数据恢复到处理前的状态。而且,在第2输出数据是确定性输出数据、并且第2输出数据与从本装置输出的第1输出数据不一致的情况下,重新执行控制部110使本装置的处理部103重新执行基于输入数据和处理前的内部数据的处理,直到第2输出数据与从本装置输出的第1输出数据一致、或者重新执行次数达到阈值以上为止。而且,在第2输出数据是非确定性输出数据的情况下,或者,在第2输出数据是确定性输出数据并且第2输出数据与从本装置输出的第1输出数据一致的情况下,输出部112输出第2输出数据。

根据第1实施方式的多重化处理系统100,例如即使在资源不足等错误时通过不一定带有确定性的程序来实现处理部103,也能维持多重化处理系统100的多重化处理的一贯性。具体而言,在发生了没有确定性的错误处理的情况下,实现处理部103的程序输出非确定性输出数据。

而且,根据第1实施方式的多重化处理系统100,针对某输入数据,全部的服务器装置10中都成为资源不足的情况下(例如输入数据过大而一定会成为资源不足的情况下),全部的正常服务器装置10的输出成为非确定性输出数据,全部的正常服务器装置10的存储部104的内部数据恢复到处理前的状态。要注意的是,恢复后的状态不是资源不足的状态。由此,多重化处理系统100能够继续执行多重化处理。另外,在现有技术的多重化处理中,该情况作为全部的服务器装置10中发生了故障的情况来处理,因此无法继续执行多重化处理。

而且,根据第1实施方式的多重化处理系统100,针对某输入数据,全部的正常服务器装置10中不成为资源不足等非确定性的动作的情况下(即通常的情况下),输出本来应该输出的确定性输出数据,因此能够继续执行多重化处理。

而且,根据第1实施方式的多重化处理系统100,针对某输入数据,成为资源不足等非确定性的动作的服务器装置10和成为确定性的动作的服务器装置10混合存在的情况下,也能在全部的服务器装置10中继续执行多重化处理(参照图7)。

第1实施方式的多重化处理系统100的特征是,无论在哪个情况下都能保持多重化处理的一贯性。此外,即使达到b台的计算机发生了拜占庭故障,由于有输出排列组播的选择条件,因此正常的服务器装置10的输出也是确定性输出数据或者非确定性输出数据的某个。

另外,在要求有其它条件作为用于维持输入排列组播或者输出排列组播的可靠性的动作条件的情况下,除了上述的n>3b的动作条件之外,也将该条件加到动作条件中。其中,第1实施方式的多重化处理系统100不依赖于输入排列组播处理以及输出排列组播的安装方法而成立。

(第2实施方式)

接着,对第2实施方式进行说明。在第2实施方式的多重化处理系统100中,例如,在某个输入数据的处理中,成为资源不足的服务器装置10和未成为资源不足的服务器装置10混合存在的情况下,有可能成为资源不足的服务器装置10被从多重化处理系统100中分离。具体而言,处理部103进行的处理的重新执行次数达到阈值以上的情况下,由协作控制部111停止与本装置以外的其他服务器装置10之间的协作。

第2实施方式的多重化处理系统100具备复制部113来取代第1实施方式的多重化处理系统100的协作控制部111。在第2实施方式的说明中,省略与第1实施方式的说明相同的说明。

图9是表示第2实施方式的服务器装置10的构成的例子的图。第2实施方式的服务器装置10具备:输入部101、输入排列部102、处理部103、存储部104、恢复部105、缓冲器106、决定控制部107、重新执行控制部110、输出部112以及复制部113。而且,决定控制部107具备输出排列部108以及判断部109。

在将服务器装置10的数量设为n,将为了维持可靠性而所允许的拜占庭故障的服务器装置10的数量设为b时,第2实施方式的多重化处理系统110的动作条件是n>5b。该动作条件是复制部113确定正常的服务器装置10的处理后的内部数据所须的。

由输出排列部108进行的输出排列组播处理与第1实施方式相比,选择条件稍稍不同。输出排列组播处理中,针对各顺序编号,选择2b+1以上的服务器装置10的缓冲器106所存储的相同的第1输出数据,决定为第2输出数据。此时,输出排列组播处理以所选择的第2输出数据在各服务器装置中一致的方式进行动作。

具体而言,由于动作条件为n>5b,因此除去成为拜占庭故障的服务器装置10后的、正常的服务器装置10的数量至少为4b+1。于是,在将作为第1输出数据而输出了非确定性输出数据的服务器装置10的数量设为x,将作为第1输出数据而输出了确定性输出数据的服务器装置10的数量设为y时,x+y≧4b+1。由此,x或y的至少一方为2b+1以上。

在由处理部103进行的顺序编号n的输入数据的处理的重新执行次数达到阈值以上的情况下,复制部113将由正常的服务器装置10的处理部103的该顺序编号的输入数据的处理得到的存储部104的处理后的内部数据复制到本装置的存储部104中。此时,复制部113将b+1以上的服务器装置10的存储部104所存储的相同的内部数据复制到本装置的存储部104中。

图10是表示第2实施方式的最终确定处理的例子的流程图。步骤s26与第1实施方式的最终确定处理不同。步骤s26的复制处理由复制部113进行。

对复制部113的复制处理进行说明。以发生拜占庭故障的服务器装置10的存在为前提的情况下,无法立刻确定发生拜占庭故障的服务器装置10。在由处理部103进行的顺序编号n的输入数据的处理的重新执行次数达到阈值以上的情况下,复制部113不得不从正常的服务器装置10的存储部104中将与该顺序编号的输入数据有关的处理后的内部数据复制到本装置的存储部104中。然而,其实现方法并不是显而易见的。以下示出步骤s26的复制处理的例子及其正当性。该部分为第2实施方式的特征。

图11是表示第2实施方式的复制处理的例子的流程图。首先,由本装置的处理部103进行的顺序编号n的输入数据的处理的重新执行次数为阈值以上的情况下,复制部113将与该顺序编号n的输入数据有关的处理后的内部数据的发送请求发送给全部的服务器装置10(步骤s31)。这里,接收到与顺序编号n的输入数据有关的处理后的内部数据的发送请求的服务器装置10,在该服务器装置10的最终确定处理结束之后,回送该服务器装置10的存储部104所存储的与顺序编号n的输入数据有关的处理后的内部数据。

接下来,复制部113从接收了与顺序编号n的输入数据有关的处理后的内部数据的发送请求的服务器装置10,接收与顺序编号n的输入数据有关的处理后的内部数据(步骤s32)。接下来,复制部113对步骤s32中接收到的多个接收数据(与顺序编号n的输入数据有关的处理后的内部数据)进行比较(步骤s33)。

接下来,复制部113判断相同的接收数据的数量是否为b+1以上(步骤s34)。在相同的接收数据不是b+1以上的情况下(步骤s34,否),处理返回至步骤s32。在相同的接收数据是b+1以上的情况下(步骤s34,是),复制部113将该接收数据复制到本装置的存储部104中(步骤s35)。

对步骤s34以及步骤s35的处理的正当性进行说明。如果设从b+1以上的服务器装置10得到相同内容的接收数据,则其中至少一个接收数据是从正常的服务器装置10发送的。即使无法确定正常的服务器装置10,也可以说该接收数据(与顺序编号n的输入数据有关的处理后的内部数据)是正确的状态。

在第2输出数据为确定性输出数据的情况下,复制部113进行动作。将该第2输出数据设为d。于是,根据输出排列组播的第2输出数据的选择条件,该第2输出数据d是由2b+1以上的服务器装置10的处理部103的处理而得到的第1输出数据d。

由于前提是发生拜占庭故障的服务器装置10的数量为b以下,因此其中正常的服务器装置10的数量由于(2b+1)-b而至少为b+1。因此,第1输出数据和第2输出数据一致的正常的服务器装置10的数量为b+1以上。

在第1输出数据和第2输出数据一致的正常的服务器装置10的决定控制部107(判断部109)中,能立即将该第2输出数据确定为输出部112的输出。因此,正常的服务器装置10能够响应于与顺序编号n的输入数据有关的处理后的内部数据的发送请求。其结果,请求源的服务器装置10必然能够从至少b+1以上的正常的服务器装置10取得与顺序编号n的输入数据有关的相同内容的处理后的内部数据。因此,上述的图11所示的复制处理的算法必然会完成。

图12是表示第2实施方式的多重化处理方法的处理例的图。图12的例子表示服务器装置10的数量n为6,拜占庭故障的发生数量b为1(服务器装置10-6发生拜占庭故障)的情况。服务器装置10-2的输入部101接收到输入数据a时,服务器装置10-2的输入排列部102将该输入数据a发送至本装置以外的其他服务器装置10。另外,虽然服务器装置10-6由于发生拜占庭故障而成为动作不确定的状态,但在图12的例子中对于输入数据a的处理作为正常动作来处理。服务器装置10-1~服务器装置10-6的输入排列部102将输入数据a与相同的顺序编号建立对应。

服务器装置10-1~服务器装置10-6的处理部103通过进行基于输入数据a、和服务器装置10-1~服务器装置10-6的各自的存储部104所存储的处理前的内部数据的处理,输出第1输出数据。图12的例子表示,服务器装置10-1~服务器装置10-3将非确定性输出数据x作为第1输出数据x输出,服务器装置10-4~服务器装置10-6将确定性输出数据d作为第1输出数据d输出的情况。各个第1输出数据被存储于各服务器装置10的缓冲器106中。

服务器装置10-1~服务器装置10-6的输出排列部108将确定性输出数据d决定为第2输出数据。这是因为,确定性输出数据d被存储于服务器装置10-4~服务器装置10-6的缓冲器106中,2b+1=3,因此满足输出排列组播的选择条件。

图12的例子表示服务器装置10-1以及服务器装置10-2在重新执行次数达到阈值以上之前得到了第2输出数据d的情况。而且,表示服务器装置10-3的重新执行次数成为了阈值以上的情况。即在服务器装置10-3中,复制部113的复制处理动作,在b+1=2以上的服务器装置10中相同内容的处理后的内部数据被复制到服务器装置10-3的存储部104中。图12的例子表示,从全部的服务器装置10的输出部112输出确定性输出数据d的情况。

最后,对第1以及第2实施方式的服务器装置10的硬件构成的例子进行说明。图13是表示第1以及第2实施方式的服务器装置10的硬件构成的例子的图。另外客户端装置20的硬件构成的例子也与服务器装置10相同。

第1以及第2实施方式的服务器装置10具备:控制装置301、主存储装置302、辅助存储装置303、显示装置304、输入装置305以及通信装置306。控制装置301、主存储装置302、辅助存储装置303、显示装置304、输入装置305以及通信装置306经由总线310连接。

控制装置301执行从辅助存储装置303读出到主存储装置302的程序。主存储装置302是rom以及ram等存储器。辅助存储装置303是存储卡以及ssd(solidstatedrive:固态硬盘)等。

显示装置304显示信息。显示装置304例如是液晶显示器。输入装置305受理信息的输入。输入装置305例如是键盘等。另外,显示装置304以及输入装置305也可以是具有显示功能和输入功能的液晶触摸面板等。通信装置306与其他装置进行通信。

由服务器装置10执行的程序以可安装的形式或者可执行的形式的文件存储于cd-rom、存储卡、cd-r、dvd(digitalversatiledisk:数字多功能磁盘)等计算机可读取的存储介质中而作为计算机程序产品来提供。

而且,也可以构成为,将由服务器装置10执行的程序储存于与因特网等网络连接的计算机上,通过经由网络下载来提供。此外也可以构成为,不下载服务器装置10执行的程序而经由因特网等网络来提供。

而且也可以构成为,在rom等中预先组入服务器装置10的程序来提供。

由服务器装置10执行的程序成为,包括上述实施方式的服务器装置10的构成(功能块)中的可由程序实现的功能块的模块构成。可由程序实现的功能块例如是输入部101、输入排列部102、处理部103、恢复部105、缓冲器106、决定控制部107(输出排列部108以及判断部109)、重新执行控制部110、协作控制部111以及输出部112。

控制装置301从辅助存储装置303等存储介质读出程序来执行由程序实现的功能块,由此,由程序实现的功能块被下载到主存储装置302。即由程序实现的功能块在主存储装置302上生成。

另外也可以通过组合程序和ic(integratedcircuit:集成电路)等硬件来实现实施方式的服务器装置10的功能块。

如以上说明地那样,在第2实施方式的多重化处理系统100中,能够将重新执行次数达到了阈值以上的服务器装置10不从多重化处理系统100分离地利用于多重化处理中。

对本发明的若干个的实施方式进行了说明,但这些实施方式是作为例而提示的,并不意在限定发明的范围。这些新的实施方式能够以其他各种形态实施,在不脱离发明的要旨的范围内能够进行各种的省略、置换、变更。这些实施方式及其变形包含于发明的范围、要旨内,并且包含于权利要求所记载的发明及其等同的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1