WO2015033410A1 - 情報処理システム、サーバ装置、情報処理方法及びプログラム - Google Patents

情報処理システム、サーバ装置、情報処理方法及びプログラム Download PDF

Info

Publication number
WO2015033410A1
WO2015033410A1 PCT/JP2013/073847 JP2013073847W WO2015033410A1 WO 2015033410 A1 WO2015033410 A1 WO 2015033410A1 JP 2013073847 W JP2013073847 W JP 2013073847W WO 2015033410 A1 WO2015033410 A1 WO 2015033410A1
Authority
WO
WIPO (PCT)
Prior art keywords
candidate data
request
data
server device
unit
Prior art date
Application number
PCT/JP2013/073847
Other languages
English (en)
French (fr)
Inventor
浩太郎 遠藤
Original Assignee
株式会社東芝
東芝ソリューション株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社東芝, 東芝ソリューション株式会社 filed Critical 株式会社東芝
Priority to PCT/JP2013/073847 priority Critical patent/WO2015033410A1/ja
Priority to JP2015535209A priority patent/JP6100384B2/ja
Publication of WO2015033410A1 publication Critical patent/WO2015033410A1/ja
Priority to US15/060,715 priority patent/US10165086B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements

Definitions

  • Embodiments described herein relate generally to an information processing system, a server device, an information processing method, and a program.
  • a distributed system composed of a plurality of computers is widely used in various fields.
  • distributed systems There are various forms of distributed systems, but one example is a cluster system that behaves as if it is a single computer as a whole.
  • cloud services that are rapidly spreading are also provided by distributed systems.
  • a distributed key-value store that stores information by assigning a name (key) to a value (value) is used in a cloud service.
  • a technical challenge in information multiplexing is how to maintain the consistency of the multiplexed information when the information is changed. Consistency can be maintained by notifying each computer of the contents or results of the change and applying the change at each computer.
  • this method requires that when non-commutative changes are made in parallel, the order of changes on each computer must be the same. For example, when a change A in which 1000 yen is added to the deposit balance and a change B in which 1% of the deposit balance is added occur almost simultaneously, the final result is not the same if the application order is changed. That is, the order of change A and change B is determined, and all the multiplexed computers must make changes in the same order. Similarly, in the method of notifying each computer of the result of the change, the order of change in each computer must be the same.
  • Non-Patent Document 1 discloses a method in which all change requests are once collected in a computer called a reader (or master) and the order is determined. It is disclosed.
  • ZooKeeper A Distributed Coordination Service for Distributed Applications ⁇ URL: http: // zookeeper. apache. org / doc / current / zookeeperOver. html>
  • the information processing system of the embodiment includes one or more client devices and N or more (N is an integer of 3 or more) server devices that store data.
  • the client device includes a transmission unit that transmits a request indicating the change contents of the data to the server device.
  • the server device includes a first storage unit, a reception unit, a generation unit, a selection unit, a transmission unit, and a change unit.
  • storage part memorize
  • the receiving unit receives the request from the client device, the current sequence number indicating the sequence number that is not yet used, the request that is a candidate to be registered in the history data using the current sequence number, Candidate data including the status of the request is received from the other server device.
  • the generation unit determines the state of the request received from the client device as a first state, and generates candidate data including the request in the first state and the current sequence number.
  • the selection unit selects and selects one of the requests with the same change content when the number of the requests with the same change content is greater than a first threshold among the requests of the candidate data.
  • the request state is determined to be the second state.
  • the transmission unit transmits the candidate data including the selected request to the other server device. When the number of the requests in the second state among the requests for the candidate data is greater than a second threshold, the changing unit is configured as one candidate among the candidate data including the request in the second state.
  • the history data is updated using data and the data is changed.
  • FIG. 1 is a diagram illustrating an example of a configuration of an information processing system according to an embodiment.
  • FIG. 2 is a diagram illustrating an example of a configuration of the server apparatus according to the embodiment.
  • FIG. 3 is a diagram illustrating an example of history data according to the embodiment.
  • FIG. 4 is a flowchart illustrating processing when the server apparatus according to the embodiment receives a request.
  • FIG. 5 is a flowchart illustrating processing when the server apparatus according to the embodiment receives candidate data.
  • FIG. 6 is a flowchart illustrating processing of the selection unit of the server device according to the embodiment.
  • FIG. 7 is a flowchart illustrating processing of the changing unit of the server device according to the embodiment.
  • FIG. 1 is a diagram illustrating an example of a configuration of an information processing system according to an embodiment.
  • FIG. 2 is a diagram illustrating an example of a configuration of the server apparatus according to the embodiment.
  • FIG. 3 is a diagram illustrating an example of history data according to the embodiment
  • FIG. 8 is a flowchart illustrating processing when the server device of the embodiment receives the current sequence number.
  • FIG. 9 is a diagram for specifically explaining the information processing method of the embodiment.
  • FIG. 10 is a diagram for specifically explaining the information processing method of the embodiment.
  • FIG. 11 is a diagram for specifically explaining the information processing method of the embodiment.
  • FIG. 12 is a diagram for specifically explaining the information processing method of the embodiment.
  • FIG. 13 is a diagram for specifically explaining the information processing method of the embodiment.
  • FIG. 14 is a diagram for specifically explaining the information processing method of the embodiment.
  • FIG. 15 is a diagram for specifically explaining the information processing method of the embodiment.
  • FIG. 16 is a diagram illustrating the performance of the information processing method according to the embodiment.
  • FIG. 17 is a diagram illustrating an example of a hardware configuration of the server device and the client device according to the embodiment.
  • FIG. 1 is a diagram illustrating an example of a configuration of an information processing system according to an embodiment.
  • the information processing system 100 of this embodiment includes a server device 10-1,..., A server device 10-n (n is an integer of 3 or more), a client device 20-1,. (M is an integer equal to or greater than 1) and a network 30.
  • server device 10-1 a server device 10-1
  • M an integer equal to or greater than 1
  • server device 10 when it is not necessary to distinguish the server devices 10-1,... And the server device 10-n, they are simply referred to as the server device 10.
  • client devices 20-1,..., And the client device 20-m they are simply referred to as the client device 20.
  • the server device 10 and the client device 20 are connected via a network 30 so that they can communicate with each other.
  • the communication means between the server device 10 and the client device 20 may be wired or wireless, or a combination of both.
  • the server devices 10-1,..., And the server device 10-n store data.
  • the client device 20 includes a transmission unit 21.
  • the transmission unit 21 transmits a request indicating the data change content of the server device 10 to any server device 10.
  • FIG. 2 is a diagram illustrating an example of the configuration of the server device 10 according to the embodiment.
  • the server device 10 according to the present embodiment includes a first storage unit 11, a second storage unit 12, a reception unit 13, a generation unit 14, a selection unit 15, a change unit 16, a synchronization unit 17, and a transmission unit 18.
  • the first storage unit 11 stores data and history data.
  • the data is, for example, database data.
  • the history data is, for example, a journal of the database.
  • the data stored in the first storage unit 11 by the server device 10 may be arbitrary.
  • FIG. 3 is a diagram illustrating an example of history data according to the embodiment.
  • the history data is information that associates a sequence number with a request.
  • the order number indicates the order in which the data in the first storage unit 11 is changed based on the change content of the request.
  • the initial value of the sequence number in this embodiment is 1.
  • an unused sequence number that is not yet associated with a request is referred to as a current sequence number.
  • the sequence number S is the current sequence number.
  • the second storage unit 12 temporarily stores the candidate data and the current round number of each server device 10.
  • the candidate data includes a current order number, a request that is a candidate to be registered in the history data using the current order number, a request state, a round number, and a server identifier.
  • the request states included in the candidate data include a first state and a second state.
  • the request status is information used for determining a request to be associated with the current sequence number.
  • the round number is a number used for processing for determining a request to be associated with the current order number. A detailed description of the process for determining the request associated with the current sequence number will be described later with reference to the flowcharts of FIGS.
  • the server identifier is identification information for identifying each server device 10. For example, the server identifier is a server number from 1 to N assigned to each server device 10.
  • the server device 10 that has transmitted the candidate data can be identified by the server identifier included in the candidate data.
  • the current round number is the latest value of the round number.
  • the initial value of the current round number in this embodiment is 1.
  • the current round number and candidate data in the second storage unit 12 are updated by the selection unit 15 and the change unit 16.
  • the receiving unit 13 receives a request from the client device 20 and receives candidate data from another server device 10. When the current round number is 1, the reception unit 13 transmits the request received from the client device 20 to the generation unit 14.
  • the receiving unit 13 temporarily stores the received candidate data in the second storage unit 12. At this time, when the candidate data of the current round is not determined, the received candidate data is set as the candidate data of the current round and stored in the second storage unit 12.
  • the receiving unit 13 reads the current round number from the second storage unit 12, and in response to the current round number, the selection unit 15 or the changing unit displays a candidate data reception notification indicating that candidate data has been received from another server device 10. 16 to send.
  • the reception unit 13 transmits a candidate data reception notification to the selection unit 15 when the current round number is an odd number.
  • the receiving unit 13 transmits a candidate data reception notification to the changing unit 16 when the current round number is an even number.
  • the receiving unit 13 receives the current sequence number from the other server device 10 when the other server device 10 updates the history data, transmits the current sequence number to the synchronization unit 17, and receives the current sequence number reception opportunity.
  • the synchronization unit 17 is requested to perform the history data synchronization process. The history data synchronization process at the reception of the current sequence number will be described later.
  • the reception unit 13 requests the synchronization unit 17 to perform history data synchronization processing of the candidate data reception trigger. Further, when the round number of the received candidate data is larger than the current round number, the receiving unit 13 requests the synchronization unit 17 to perform the current round number synchronization process prior to the process of paragraph 0019. With these synchronization processes, the order numbers and round numbers of the candidate data included in the second storage unit 12 are all the same. The history data synchronization process and the round number synchronization process for the candidate data reception trigger will be described later.
  • the server device 10 determines a case where processing for determining a request associated with the current sequence number is delayed with respect to other server devices 10, and the processing is delayed. If it exists, it is matched with the processing of the other server device 10. Details will be described later with reference to the flowchart of FIG.
  • the generation unit 14 determines the state of the request received from the client device 20 via the reception unit 13 as the first state.
  • the generation unit 14 generates candidate data including the request in the first state, the current sequence number of the history data, and the round number having a value of 1.
  • the generation unit 14 transmits the candidate data to the selection unit 15.
  • the selection unit 15 receives candidate data from the generation unit 14 when the current round number is 1 (initial value).
  • the selection unit 15 receives a candidate data reception notification from the reception unit 13 when the current round number is an odd number.
  • the selection unit 15 reads candidate data from the second storage unit 12.
  • the selection unit 15 selects one request among the requests with the same change content.
  • the threshold value is n / 2. That is, the threshold value is set to a value that is half of the number of server apparatuses 10 in the information processing system 100. However, the threshold value is not limited to n / 2 and may be any value larger than that.
  • the selection unit 15 sets the state of the selected request to the second state, and increases the round number of candidate data including the selected request by one.
  • the selection unit 15 deletes candidate data including the unselected request from the second storage unit 12, and transmits the candidate data including the selected request to the other server device 10 via the transmission unit 18.
  • the selection unit 15 increases the current round number in the second storage unit 12 by one.
  • the selection unit 15 selects one candidate data when there is a request with different contents of change among requests for candidate data read from the second storage unit 12. Specifically, the selection unit 15 reads candidate data from the second storage unit 12 and randomly selects one candidate data. Note that the method of selecting one candidate data by the selection unit 15 is not limited to the method of randomly selecting one candidate data, and other methods may be used.
  • the selection unit 15 increases the round number of the selected candidate data by one.
  • the selection unit 15 deletes the candidate data that has not been selected from the second storage unit 12, determines the selected candidate data as its own candidate data of the round, stores it in the second storage unit 12, and transmits the transmission unit 18. Is transmitted to another server device 10 via.
  • the selection unit 15 increases the current round number in the second storage unit 12 by one.
  • the server device 10 to which the selection unit 15 transmits candidate data is determined by a predetermined method.
  • the predetermined method is, for example, a method of selecting a predetermined number of destination server devices 10 at random, or setting all the other server devices 10 as the destination server devices 10.
  • the changing unit 16 receives a candidate data reception notification from the receiving unit 13 when the current round number is an even number. When receiving the candidate data reception notification, the changing unit 16 reads the candidate data from the second storage unit 12.
  • the changing unit 16 selects one candidate data among the candidate data including the requests in the second state. Use to update history data and change data.
  • the changing unit 16 returns the current round number in the second storage unit 12 to 1 (initial value). Further, the changing unit 16 increases the current sequence number in the first storage unit 11 by one. Further, the changing unit 16 transmits the current sequence number after incrementing by 1 to the other server apparatus 10. This notifies the other server apparatus 10 of the newly used sequence number.
  • the change unit 16 has candidate data including the request in the first state among candidate data read out from the second storage unit 12 and there is candidate data including the request in the second state.
  • One candidate data is selected from the candidate data including the request, and the request state of the selected candidate data is determined to be the first state.
  • the changing unit 16 increases the round number of the selected candidate data by one.
  • the changing unit 16 deletes the candidate data that has not been selected from the second storage unit 12, determines the selected candidate data as its own candidate data for the round, stores it in the second storage unit 12, and sends it to the transmission unit 18. Is transmitted to another server device 10 via.
  • the selection unit 15 increases the current round number in the second storage unit 12 by one.
  • the change unit 16 selects one candidate data among the requests for candidate data read from the second storage unit 12 when the number of requests in the first state is larger than the threshold. For example, the changing unit 16 randomly selects one candidate data. Note that the method of selecting one candidate data by the changing unit 16 is not limited to the method of randomly selecting one candidate data, and other methods may be used.
  • the changing unit 16 increases the round number of the selected candidate data by one.
  • the changing unit 16 deletes the candidate data that has not been selected from the second storage unit 12, determines the selected candidate data as its own candidate data for the round, stores it in the second storage unit 12, and sends it to the transmission unit 18. Is transmitted to another server device 10 via.
  • the selection unit 15 increases the current round number in the second storage unit 12 by one.
  • the synchronization unit 17 deletes the candidate data in the second storage unit 12 when the current sequence number of the candidate data received from the other server device 10 by the receiving unit 13 is larger than the current sequence number of the history data, A history data transmission request is transmitted to the other server device 10 that has transmitted the number via the transmission unit 18 (history data synchronization processing at a candidate data reception opportunity).
  • the synchronization unit 17 receives the candidate data in the second storage unit 12 when the round number of the received candidate data is larger than the current round number in the second storage unit 12. And the received candidate data is stored in the second storage unit 12 and the current round number is made the round number of the received candidate data (round number synchronization processing).
  • the synchronization unit 17 receives the current sequence number from the other server device 10 via the reception unit 13
  • the current sequence number received from the other server device 10 is larger than the current sequence number of the history data.
  • the candidate data in the second storage unit 12 is deleted, and a history data transmission request is transmitted to the other server apparatus 10 that has transmitted the current sequence number via the transmission unit 18 (history of the current sequence number reception trigger). Data synchronization processing).
  • the server device 10 can receive the latest history data from the other server devices 10 and update its own history data to the latest state.
  • the transmitting unit 18 includes a server identifier for identifying its own server device 10 in the candidate data received from the selecting unit 15 or the changing unit 16, and transmits the candidate data to the other server device 10. Further, when the sequence number is received from the changing unit 16, the sequence number is transmitted to all the other server apparatuses 10. When the transmission unit 18 receives a history data transmission request from the synchronization unit 17, the transmission unit 18 transmits a history data transmission request to the requested server apparatus 10.
  • FIG. 4 is a flowchart illustrating processing when the server apparatus 10 according to the embodiment receives a request.
  • the receiving unit 13 receives a request from the client device 20 (step S1).
  • the receiving unit 13 reads the current round number from the second storage unit 12, and determines whether or not the current round number is 1 (initial value) (step S2). When the current round number is 1 (step S2, Yes), the process of the reception unit 13 proceeds to step S3. If the current round number is not 1 (No at Step S2), the receiving unit 13 ends the process.
  • the receiving unit 13 determines whether or not the candidate data of the first round is determined (step S3). When the candidate data of the first round is determined (step S3, Yes), the receiving unit 13 ends the process. When the candidate data of the first round is not yet determined (No at Step S3), the received request is transmitted to the generation unit 14.
  • the generation unit 14 sets the state of the request received from the reception unit 13 to the first state.
  • the generation unit 14 generates candidate data including the request in the first state, the current order number in the first storage unit 11, and the round number having a value of 1 (initial value) (step S4).
  • the generation unit 14 transmits the generated candidate data to the selection unit 15.
  • the selection unit 15 determines the candidate data received from the generation unit 14 as the candidate data of the first round and stores it in the second storage unit 12 (step S5).
  • the selection unit 15 transmits the candidate data to the other server device 10 via the transmission unit 18 (step S6).
  • the transmitting unit 18 includes a server identifier for identifying the server device 10 in the candidate data, and transmits the candidate data to another server device 10.
  • FIG. 5 is a flowchart illustrating processing when the server device 10 of the embodiment receives candidate data.
  • the receiving unit 13 receives candidate data from another server device 10 (step S11).
  • the receiving unit 13 determines whether or not the current sequence number included in the candidate data is larger than the current sequence number of the history data (step S12).
  • the receiving unit 13 requests the synchronization unit 17 to synchronize the history data.
  • the synchronization unit 17 receives a request for synchronization processing of history data from the reception unit 13, the synchronization unit 17 deletes all candidate data in the second storage unit 12 (step S13), and transmits the candidate data including the current sequence number.
  • the apparatus 10 is requested to transmit history data (step S14), and the candidate data reception process is terminated.
  • the receiving unit 13 determines whether or not the current order number of the received candidate data matches the current order number of the history data (step S15). If they match (step S15, Yes), the processing of the reception unit 13 proceeds to step S16. If they do not match (step S15, No), the processing of the receiving unit 13 is terminated.
  • the receiving unit 13 determines whether or not the round number of the received candidate data is larger than the current round number in the second storage unit 12 (step S16). When the round number of the received candidate data is larger than the current round number in the second storage unit 12 (step S16, Yes), the reception unit 13 requests the synchronization unit 17 to perform round number synchronization processing. When receiving the round number synchronization processing request from the reception unit 13, the synchronization unit 17 deletes all candidate data in the second storage unit 12 (step S ⁇ b> 17), and the candidate data received by the reception unit 13 for the current round number. Round number (step S18). Next, the process of the receiving unit 13 proceeds to step S20.
  • Step S16 If the round number of the received candidate data is less than or equal to the current round number of the second storage unit 12 (No at Step S16), the process of the receiving unit 13 proceeds to Step S19.
  • the receiving unit 13 determines whether or not the round number of the received candidate data matches the current round number of the second storage unit 12 (step S19). If they match (step S19, Yes), the processing of the reception unit 13 proceeds to step S20. If they do not match (step S19, No), the process is terminated.
  • the receiving unit 13 stores the received candidate data in the second storage unit 12 (step S20). Next, it is determined whether or not the candidate data for the current round has been determined (step S21). When it has been determined (step S21, Yes), the received candidate data is determined as its own candidate data and stored in the second storage unit 12 (step S22). Next, the receiving unit 13 determines whether or not the current round number is an odd number (step S23). When the current round number is an odd number (step S23, Yes), the reception unit 13 transmits a candidate data reception notification to the selection unit 15, and proceeds to processing by the selection unit 15 (step S24). When the current round number is an even number (step S23, No), the receiving unit 13 transmits a candidate data reception notification to the changing unit 16, and proceeds to processing by the changing unit 16 (step S25).
  • FIG. 6 is a flowchart illustrating processing of the selection unit 15 of the server device 10 according to the embodiment.
  • the selection unit 15 Upon receiving the candidate data reception notification from the reception unit 13, the selection unit 15 reads the candidate data from the second storage unit 12 (Step S31). Note that the selection unit 15 may read candidate data from the second storage unit 12 every time a candidate data reception notification is received, or read candidate data once for a plurality of candidate data reception notifications. Also good. When the selection unit 15 finishes reading the candidate data in the second storage unit 12, the selection unit 15 proceeds to the process of step S32. Note that any method for determining the end of the reading process may be used.
  • the selection unit 15 determines whether or not the number of requests with the same change contents among requests for candidate data read from the second storage unit 12 is greater than the threshold (step S32). When larger than the threshold value (step S32, Yes), the selection unit 15 selects one candidate data from candidate data satisfying the condition of step S32 (step S33), and sets the request state of the selected candidate data to the second state. (Step S34). Next, the process of the selection unit 15 proceeds to step S37.
  • Step S35 it is determined whether there is a request having a different change content among requests for candidate data read from the second storage unit 12 (Step S35). If there are no requests with different contents of change (No at Step S35), the process returns to Step S31. When there are requests with different changes (step S35, Yes), the selection unit 15 selects one candidate data from the candidate data read from the second storage unit 12 (step S36), and proceeds to step S37.
  • the selection unit 15 deletes the candidate data that has not been selected from the second storage unit 12 (step S37).
  • the selection unit 15 increases the round number of the selected candidate data by 1 and increases the current round number in the second storage unit 12 by 1 (step S38).
  • the selection unit 15 determines the selected candidate data as the candidate data of the round, stores it in the second storage unit 12, and transmits it to the other server device 10 via the transmission unit 18 (step S39).
  • the transmitting unit 18 includes a server identifier for identifying the server device 10 in the candidate data, and transmits the candidate data to another server device 10.
  • FIG. 7 is a flowchart illustrating processing of the changing unit 16 of the server device 10 according to the embodiment.
  • the changing unit 16 reads the candidate data from the second storage unit 12 (step S41). Note that the details of the reading process in step S41 are the same as in step S31, and a description thereof will be omitted.
  • the changing unit 16 determines whether or not the number of candidate data whose request state is the second state is larger than the threshold (step S42). When it is below the threshold (No at Step S42), the process of the changing unit 16 proceeds to Step S49.
  • the changing unit 16 selects one candidate data from candidate data satisfying the condition of step S42 (step S43).
  • the changing unit 16 updates the history data in the first storage unit 11 using the selected candidate data, and changes the data in the first storage unit 11 (step S44).
  • the changing unit 16 deletes all candidate data in the second storage unit 12 (step S45).
  • the changing unit 16 returns the current round number in the second storage unit 12 to 1 (initial value) (step S46).
  • the changing unit 16 increases the current sequence number of the history data in the first storage unit 11 by 1 (step S47).
  • the changing unit 16 transmits the current sequence number to the other server device 10 (step S48), and ends the process.
  • the changing unit 16 determines whether the candidate data read from the second storage unit 12 includes both candidate data including the request in the first state and candidate data including the request in the second state (step S49). ). When both are present (step S49, Yes), the changing unit 16 selects one candidate data from candidate data including the request in the second state (step S50), and sets the request state of the selected candidate data in the first state. (Step S51). Next, the process of the changing unit 16 proceeds to step S54.
  • step S52 it is determined whether or not the number of candidate data whose request state is the first state is greater than a threshold (step S52). When it is below the threshold (No at Step S52), the process of the changing unit 16 returns to Step S41. When larger than the threshold (step S52, Yes), the process of the changing unit 16 proceeds to step S53. The changing unit 16 selects one candidate data from the candidate data read from the second storage unit 12 (step S53). Next, the process of the changing unit 16 proceeds to step S54.
  • the changing unit 16 deletes the candidate data that has not been selected from the second storage unit 12 (step S54).
  • the changing unit 16 increases the round number of the selected candidate data by 1 and increases the current round number in the second storage unit 12 by 1 (step S55).
  • the changing unit 16 transmits the selected candidate data to the other server device 10 via the transmitting unit 18 (step S56).
  • the transmitting unit 18 includes a server identifier for identifying the server device 10 in the candidate data, and transmits the candidate data to another server device 10.
  • FIG. 8 is a flowchart showing processing when the server apparatus 10 of the embodiment receives the current sequence number.
  • the receiving unit 13 receives the current sequence number from the other server device 10 (step S61).
  • the receiving unit 13 determines whether or not the received current sequence number is larger than the current sequence number of the history data in the first storage unit 11 (step S62). If the received current sequence number is equal to or less than the current sequence number of the history data in the first storage unit 11 (step S62, Yes), the process is terminated.
  • the synchronization unit 17 When the received current sequence number is larger than the current sequence number of the history data in the first storage unit 11 (Yes in step S62), the synchronization unit 17 is requested to perform a synchronization process of the history data.
  • the synchronizing unit 17 deletes all candidate data in the second storage unit 12 (step S63), and transmits the candidate data including the current sequence number
  • the apparatus 10 is requested to transmit history data (step S64). Accordingly, the server device 10 can receive the latest history data from the other server devices 10 and update its own history data to the latest state.
  • 9 to 14 are diagrams for specifically explaining the information processing method of the embodiment.
  • 9 to 14 are examples in which the number n of server devices is five.
  • the self candidate indicates candidate data of the server device 10 itself (hereinafter referred to as “self candidate data”).
  • the other candidate indicates candidate data received from another server device 10 (hereinafter referred to as “other candidate data”).
  • other candidate data it is assumed that the current order number included in the other candidate data matches the current order number of the server device 10 itself.
  • the transmission unit 18 of the server device 10 will be described as randomly determining the transmission destination of the candidate data and the number of transmission destinations.
  • the upper diagram in FIG. 9 shows the initial state of the second storage unit 12 of the server apparatuses 10-1 to 10-5. That is, the current round number of the server apparatus 10-1 to the server apparatus 10-5 is 1, and indicates the state of the second storage unit 12 when the information processing method of this embodiment is started.
  • the lower part of FIG. 9 shows that the receiving unit 13 of the server device 10-1 receives the request A from the client device 20, and the generating unit 14 of the server device 10-1 sets the state of the request A to the first state and Indicates that data has been generated.
  • the receiving unit 13 of the server device 10-3 receives the request B from the client device 20, and the generation unit 14 of the server device 10-3 generates the candidate data by setting the state of the request B to the first state. Indicates.
  • the reception unit 13 of the server device 10-5 receives the request C from the client device 20, and the generation unit 14 of the server device 10-5 sets the state of the request C to the first state and generates its own candidate data. .
  • the server apparatus 10-2 and the server apparatus 10-4 indicate that a request has not been received from the client apparatus 20.
  • the upper diagram in FIG. 10 shows the second data after the other candidate data is received from the other server device 10 when the second storage unit 12 of the server devices 10-1 to 10-5 is in the lower status in FIG. 2 shows the state of the storage unit 12.
  • the state of the second storage unit 12 of the server device 10-1 is updated by receiving the request B in the first state and the request C in the first state as other candidate data from the other server devices 10.
  • the state of the second storage unit 12 of the server device 10-3 is updated by receiving the request A in the first state as other candidate data from the other server device 10.
  • the state of the second storage unit 12 of the server device 10-5 is updated by receiving the request A in the first state as other candidate data from the other server device 10.
  • the state of the second storage unit 12 of the server device 10-2 is updated by receiving the request B in the first state as other candidate data from the server device 10-3. Particularly, since the server apparatus 10-2 has not determined its own candidate data, it determines the request B as its own candidate data.
  • the state of the second storage unit 12 of the server device 10-4 is updated by receiving the request A in the first state as other candidate data from the server device 10-1. In particular, since the server apparatus 10-4 has not determined its own candidate data, it determines the request A as its own candidate data.
  • the selection unit 15 of the server apparatus 10-1 selects one candidate data (A) at random (makes it as its own candidate data) because the contents of the change are different in the request (A, B, C) of candidate data.
  • the selection unit 15 of the server device 10-1 deletes the candidate data (B, C) that has not been selected.
  • the selection unit 15 of the server device 10-1 increases the round number of the candidate data by 1 and increases the current round number by 1.
  • the selection unit 15 of the server device 10-1 transmits the candidate data to another server device 10 via the transmission unit 18.
  • the operations of the server device 10-3 and the server device 10-5 are the same as those of the server device 10-1.
  • the server device 10-2 and the server device 10-4 do not have candidate data with different changes, and therefore do not proceed to the process of selecting candidate data, but wait for the reception of candidate data (return to the candidate data reading process). .
  • the upper diagram in FIG. 11 shows the second data after other candidate data is received from the other server device 10 when the second storage unit 12 of the server devices 10-1 to 10-5 is in the lower status in FIG. 2 shows the state of the storage unit 12.
  • requests B and C in the first state are received as other candidate data from other server devices 10 (request C is further received from the state in the lower diagram of FIG. 10). )
  • the current round number is updated from 1 to 2. This is because the receiving unit 13 of the server device 10-2 compares the current round number 1 of the second storage unit 12 with the round number 2 included in the other candidate data, and the round number 2 included in the other candidate data> This is because the current round number is 1 and the current round number is updated to 2. Since the self-candidate data has not been determined, the self-candidate data is determined for the request B received earlier. The same applies to the server device 10-4.
  • the changing unit 16 of the server apparatus 10-1 determines that the candidate data requests (A, B, C) are all in the first state and are larger than the threshold value (2.5). (Select your own data). Next, the changing unit 16 of the server device 10-1 deletes the candidate data (B, C) that has not been selected. Next, the changing unit 16 of the server apparatus 10-1 increases the round number of the candidate data by 1 and increases the current round number by 1. The changing unit 16 of the server device 10-1 transmits the self-candidate data to the other server device 10 via the transmitting unit 18. The operations of the server devices 10-2 to 10-5 are the same as those of the server device 10-1.
  • the upper diagram in FIG. 12 shows the second data after the other candidate data is received from the other server device 10 when the second storage unit 12 of the server devices 10-1 to 10-5 is in the lower status in FIG. 2 shows the state of the storage unit 12.
  • the state of the second storage unit 12 of the server device 10-1 includes the first state request B, the first state request B, the first state request A, and the first state as other candidate data from the other server devices 10. It is updated by receiving the status request C.
  • the server devices 10-2 to 10-5 are also updated by receiving other candidate data from other server devices 10.
  • the selection unit 15 of the server apparatus 10-1 determines that the number of requests having the same change contents among the requests (A, B, B, A, C) of the candidate data is equal to or less than the threshold (2.5), and the change contents are Since they are different from each other, one candidate data (A) is selected at random (to be self-candidate data). Next, the selection unit 15 of the server device 10-1 deletes the candidate data (B, B, A, C) that has not been selected. Next, the selection unit 15 of the server device 10-1 increases the round number of the candidate data by 1 and increases the current round number by 1. The selection unit 15 of the server device 10-1 transmits the candidate data to another server device 10 via the transmission unit 18. The operations of the server devices 10-2 to 10-5 are the same as those of the server device 10-1.
  • FIG. 13 shows the second state after the other candidate data is received from the other server apparatus 10 when the second storage unit 12 of the server apparatuses 10-1 to 10-5 is in the lower part of FIG. 2 shows the state of the storage unit 12.
  • the state of the second storage unit 12 of the server device 10-1 has received the request B in the first state, the request B in the first state, and the request A in the first state as other candidate data from the other server devices 10. Has been updated.
  • the server devices 10-2 to 10-5 are also updated by receiving other candidate data from other server devices 10.
  • the changing unit 16 of the server apparatus 10-1 determines that the candidate data requests (A, B, B, A) are all in the first state and are larger than the threshold (2.5). Is selected at random (to be self-candidate data). Next, the changing unit 16 of the server device 10-1 deletes the candidate data (B, B, A) that has not been selected. Next, the changing unit 16 of the server apparatus 10-1 increases the round number of the candidate data by 1 and increases the current round number by 1. The changing unit 16 of the server device 10-1 transmits the self-candidate data to the other server device 10 via the transmitting unit 18. The operations of the server devices 10-2 to 10-5 are the same as those of the server device 10-1.
  • the upper diagram in FIG. 14 shows the second data after the other candidate data is received from the other server device 10 when the second storage unit 12 of the server devices 10-1 to 10-5 is in the lower status in FIG. 2 shows the state of the storage unit 12.
  • the state of the second storage unit 12 of the server device 10-1 includes the first state request A, the first state request A, the first state request B, and the first state as other candidate data from the other server devices 10. Updated by receiving status request A.
  • the server devices 10-2 to 10-5 are also updated by receiving other candidate data from other server devices 10.
  • the selection unit 15 of the server apparatus 10-1 determines that the number of requests (A, A, A, A) having the same change contents among requests (A, A, A, B, A) of candidate data is the threshold (2. 5) Since it is larger, the request (A) is selected from the requests (A, A, A, A) having the same change contents (is set as own candidate data), and the state of the selected request is changed to the second state. decide. Next, the selection unit 15 of the server device 10-1 deletes the candidate data (A, A, B, A) that has not been selected. Next, the selection unit 15 of the server device 10-1 increases the round number of the candidate data by 1 and increases the current round number by 1. The selection unit 15 of the server device 10-1 transmits the candidate data to another server device 10 via the transmission unit 18. The operations of the server device 10-2 and the server device 10-5 are the same as those of the server device 10-1.
  • the selection unit 15 of the server apparatus 10-3 has the number of requests with the same change contents among the requests (A, A, B) of the candidate data being equal to or less than the threshold (2.5), and the change contents are different.
  • One candidate data (A) is selected at random (to be self-candidate data).
  • the selection unit 15 of the server device 10-1 deletes the candidate data (A, B) that has not been selected.
  • the selection unit 15 of the server device 10-1 increases the round number of the candidate data by 1 and increases the current round number by 1.
  • the selection unit 15 of the server device 10-1 transmits the candidate data to another server device 10 via the transmission unit 18.
  • the operation of the server device 10-4 is the same as that of the server device 10-3.
  • the upper diagram in FIG. 15 shows the second after the other candidate data is received from the other server device 10 when the second storage unit 12 of the server devices 10-1 to 10-5 is in the lower state in FIG. 2 shows the state of the storage unit 12.
  • the state of the second storage unit 12 of the server device 10-1 includes the second state request A, the first state request A, the first state request B, and the second state as other candidate data from the other server devices 10. Updated by receiving status request A.
  • the server devices 10-2 to 10-5 are also updated by receiving other candidate data from other server devices 10.
  • the changing unit 16 of the server apparatus 10-1 determines that the number of requests (A, A, A) whose status is the second state among the requests (A, A, A, B, A) of candidate data is the threshold value (2.5). ), The history data in the first storage unit 11 is updated using one candidate data (A) of the candidate data including the request (A, A, A) in the second state, and the first storage unit 11 data is changed. Next, the changing unit 16 of the server apparatus 10-1 deletes all candidate data (A, A, A, B, A). Next, the changing unit 16 of the server apparatus 10-1 returns the current round number to 1, and increases the current sequence number by one. Next, the current sequence number is transmitted to another server device 10. The operations of the server devices 10-2 to 10-4 are the same as those of the server device 10-1.
  • the changing unit 16 of the server apparatus 10-5 includes candidate data including a request for the first state, the number of requests for which the state is the second state is equal to or less than a threshold value (2.5) among the requests for the candidate data. ,
  • the candidate data including the request in the second state is present, so one candidate data is selected from the candidate data including the request (A, A) in the second state, and the request (A) for the selected candidate data is selected. Is determined as the first state.
  • the history data and data in the first storage unit 11 of the server apparatus 10-5 have not been updated by the information processing method described with reference to FIGS. 9 to 15, but when the current sequence number is received from another server apparatus 10 Updated. That is, when the receiving unit 13 of the server device 10-5 receives the current sequence number from the other server device 10, the synchronization unit 17 of the server device 10-5 performs the process of the flowchart of FIG. 1 History data and data in the storage unit 11 are updated.
  • the information processing method of the present embodiment is executed independently by each server device 10. That is, it should be noted that the processing result of each round may be different between the server apparatuses 10.
  • the round in which the request for the current sequence number is determined is not necessarily the same.
  • each server device 10 since each server device 10 operates asynchronously, the sequence number and round number of processing executed at a certain point in time may be different in each server device 10.
  • the processing of the reception unit 13 and the synchronization unit 17 includes processing for catching up to the advanced number when a notification is received from the server device 10 with the advanced sequence number or round number.
  • the legitimacy of the information processing method (algorithm) of the present embodiment can be proved by satisfying the following Validity condition, Agreement condition, and Termination condition.
  • the request determined by each sequence number is one of the requests accepted from the client device 20.
  • the Validity condition will be described.
  • the self-candidate data is determined from the other candidate data received from 10.
  • a request other than the request originally received from the client device 20 does not appear. That is, the Validity condition is satisfied.
  • a certain server device 10 first settles a request associated with the current sequence number in round r with request V. This means that the server device 10 has received candidate data including the request V in the second state from the majority of the server devices 10 before performing the processing of the changing unit 16 in the round r.
  • the request V is determined as a request in the second state by a majority of the server apparatuses 10. Then, even if other server devices 10 receive candidate data to be used for the processing of the changing unit 16 of round r from a majority of server devices 10 in any combination, at least one request V is notified. Will be. Therefore, in all the server apparatuses 10, if it is settled in the round r, there can be only the request V. Even if it is not settled, the own candidate data used for the processing of the selection unit 15 in the next round becomes the request V. Since all the candidate data of the selection unit 15 becomes the request V, as described above, it is settled by the processing of the next change unit 16 as described above.
  • catch-up the validity of the catch-up operation of the receiving unit 13 and the synchronizing unit 17 will be described.
  • the basic idea of catch-up is that it is not necessary to set up the own candidate data for the round processing in which the majority of candidate data is prepared without the own server device 10, and therefore other server devices without setting up the own candidate data. This means that the processing result at 10 is used as it is. Since each round process of the information processing method of the present embodiment does not necessarily include candidate data of its own server device 10, when the processing result of another server device 10 is diverted, it is as if it is its own. It can be regarded as if the server device 10 performed each round of processing. Therefore, the catch-up operation does not affect the validity of the information processing method of this embodiment.
  • Termination conditions will be described. Since the information processing method of the present embodiment is an algorithm using random numbers or the like, it is proved that the probabilistic termination is satisfied. That is, when the majority of the server devices 10 are normal, it is proved that the probability that the request for each sequence number is not settled forever is close to zero.
  • Vr is the total number of request types that appear as candidate data for processing of the selection unit 15 in the round.
  • Vr monotonously decreases as the round progresses (that is, Vr ⁇ Vs when r ⁇ s).
  • Vr becomes 1 it is settled by the process of the next change part 16 as above-mentioned.
  • Vr> 1 there is always a request V that does not occupy a majority of candidate data in the processing of the selection unit 15.
  • the request V cannot become candidate data in the second state at the start of the processing of the changing unit 16, and the probability that the request V is not selected as candidate data in the first state by the processing of the selecting unit 15 is (1 / N) or more. Therefore, the probability that the request V is not selected as candidate data of the changing unit 16 in all the server apparatuses 10 is ((1 / N) ⁇ N) or more. If all of the server devices 10 are not selected as candidate data of the changing unit 16, they will not appear in the candidate data of the next selecting unit 15, and in this case, Vr truly decreases. This proves that the probabilistic Termination condition is satisfied.
  • the process of the selection unit 15 can be compared to a primary election, and the process of the change unit 16 can be compared to a confidence election. This is because the changing unit 16 determines candidate data including a request to be associated with the current sequence number from candidate data including the request that the selecting unit 15 has put into the second state (candidate data elected in the primary election) (determined by the confidence election). ).
  • FIG. 16 is a diagram illustrating the performance of the information processing method according to the embodiment.
  • FIG. 16 also shows the result of Ben'or's consensus algorithm for reference.
  • FIG. 16 shows a result of simulating the number of rounds required to obtain consent when the initial values are different as a comparison of the performance of the Ben'or agreement algorithm and the information processing method of the present embodiment.
  • the simulation is performed using an asynchronous network model, and an average of 1000 simulation results is taken.
  • the number of server apparatuses 10 to be multiplexed was evaluated for 3 to 29.
  • the Ben'or consensus algorithm has the following characteristics. -The agreed value can only be either 0 or 1. When there is no request that can be changed to the second state, the server apparatus 10 is notified that the second state cannot be set. ⁇ For randomization, select from any candidate data. -Each server device 10 calculates each round in turn (does not skip).
  • the information processing method of the present embodiment has the following features.
  • As agreed values, multivalues can be handled instead of binary values. -When there is no request which can be made into the 2nd state, the server apparatus 10 is notified of the candidate data of the 1st state selected at random. ⁇ Randomization can only be selected from the candidate data of the first state of the previous round. -When a round number larger than the current round number is received, the round number is advanced. -When the candidate data is not yet determined, the received candidate data is set as the candidate data.
  • each server device 10 does not necessarily execute processing uniformly.
  • the ratio of the execution speeds of the server apparatus 10-1 and the server apparatus 10-2 may be 100: 1. In other cases, the ratio may reverse to 1: 100.
  • a delay may occur in the network 30.
  • the probability that the processing of each server device 10 proceeds at a certain point is set at random. Further, the probability that the delivery of the packet to each server device 10 will be set is also set at random.
  • the initial value is set to a different value for all server apparatuses 10. Comparing the simulation results, the superiority of the information processing method of the present embodiment becomes clear as the multiplicity increases.
  • the agreed value is only 0 or 1, but the information processing method of this embodiment originally has the advantage of being able to handle multiple values.
  • FIG. 17 is a diagram illustrating an example of a hardware configuration of the server device 10 and the client device 20 according to the embodiment.
  • the server device 10 and the client device 20 of this embodiment include a control device 31, a main storage device 32, an auxiliary storage device 33, a display device 34, an input device 35, and a communication device 36.
  • the control device 31, main storage device 32, auxiliary storage device 33, display device 34, input device 35, and communication device 36 are connected to each other via a bus 37.
  • the control device 31 executes the program read from the auxiliary storage device 33 to the main storage device 32.
  • the main storage device 32 is a memory such as a ROM (Read Only Memory) or a RAM (Random Access Memory).
  • the auxiliary storage device 33 is, for example, a hard disk or a memory card.
  • the display device 34 is a screen that displays the status of the server device 10 and the client device 20.
  • the display device 34 is, for example, a liquid crystal display.
  • the input device 35 is an interface for operating the server device 10 and the client device 20.
  • the input device 35 is, for example, a keyboard or a mouse.
  • the communication device 36 is an interface for connecting to a network.
  • a computer such as a CD-ROM, a memory card, a CD-R, and a DVD (Digital Versatile Disk) in a file that can be installed or executed in a program that can be executed by the server device 10 and the client device 20 of the present embodiment. May be recorded on a readable recording medium and provided as a computer program product.
  • the program executed by the server device 10 and the client device 20 of the present embodiment may be provided by being stored on a computer connected to a network such as the Internet and downloaded via the network. Further, the program executed by the server device 10 and the client device 20 of the present embodiment may be provided or distributed via a network such as the Internet without downloading.
  • the programs of the server device 10 and the client device 20 of the present embodiment may be provided by being incorporated in advance in a ROM or the like.
  • the program executed by the server device 10 of the present embodiment is a functional block (reception unit 13, generation unit 14, selection unit 15, change unit 16) that can be realized as a program among the functional blocks of the server device 10 described above.
  • the module configuration includes a synchronization unit 17 and a transmission unit 18).
  • the program executed by the client device 20 of the present embodiment has a module configuration including the transmission unit 21 of the client device 20 described above.
  • the module is loaded onto the main storage device 32 by the control device 31 reading and executing the program from the storage medium. That is, each module is generated on the main storage device 32.
  • the functional blocks of the server device 10 and the client device 20 may be realized by hardware such as an IC (Integrated Circuit) without being realized by a program.
  • each server device 10 includes the selection unit 15 and the change unit 16, and the processing of the selection unit 15 and the change unit 16 is alternately repeated, so that the current sequence number of the history data is obtained.
  • the request to associate can be determined.
  • data consistency among the server devices 10 is guaranteed regardless of any combination of failures (server device processing delay or stop, network congestion, packet loss, etc.), and the majority of servers.
  • the request associated with the current sequence number can be uniquely determined.
  • the consistency of the history data is not lost no matter what combination of failures occurs, so the consistency of the information multiplexed by the plurality of server apparatuses 10 is lost. Absent. Further, in the information processing system 100 of this embodiment, no matter what combination of failures occurs, the information processing method (algorithm) of the server device 10 is symmetrical, so a single point of failure (Single Point of Failure). There is no server device 10 to become. Therefore, the client device 20 can transmit a request to any server device 10.
  • the information processing method of the present embodiment is not limited to the server device 10 but can be applied to a personal computer, a virtual machine, a process on an OS (Operating System), and the like.
  • the client device 20 can be a personal computer, a virtual machine, a process on an OS (Operating System), or the like.
  • the network 30 may be a wide area network (WAN) such as the Internet, a virtual network, inter-process communication (IPC), or the like.
  • WAN wide area network
  • IPC inter-process communication
  • the threshold values of the selection unit 15 and the change unit 16 are the same. However, the threshold value of the selection unit 15 is the first threshold value, and the threshold value of the change unit 16 is the second threshold value. Different threshold values may be set in the selection unit 15 and the change unit 16.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

 実施形態の情報処理システムは、1以上のクライアント装置と、データを記憶するN以上(Nは3以上の整数)のサーバ装置とを備える。サーバ装置は、第1記憶部と、受信部と、生成部と、選択部と、送信部と、変更部とを備える。選択部は、候補データのリクエストのうち変更内容が同一のリクエストの数が第1閾値より大きい場合、変更内容が同一のリクエストのうち一のリクエストを選択し、選択されたリクエストの状態を第2状態に決定する。送信部は、選択されたリクエストを含む候補データを他のサーバ装置に送信する。変更部は、候補データのリクエストのうち、状態が第2状態のリクエストの数が第2閾値より大きい場合、第2状態のリクエストを含む候補データのうち一の候補データを使用して履歴データを更新するとともにデータを変更する。

Description

情報処理システム、サーバ装置、情報処理方法及びプログラム
 本発明の実施形態は、情報処理システム、サーバ装置、情報処理方法及びプログラムに関する。
 複数のコンピュータにより構成される分散システムが、さまざまな分野で広く利用されている。分散システムにはさまざまな形態があるが、一例として、全体で1台のコンピュータであるかのように振舞うクラスタシステムが挙げられる。また近年、急速に普及しているクラウドサービスも、分散システムによって提供されている。例えば、値(バリュー)に名前(キー)を付けて情報を格納する分散キーバリューストアが、クラウドサービスで利用されている。
 耐障害性を向上させるため、同一の情報を複数のコンピュータで保持すれば、一部のコンピュータでデータが消失しても、その情報は失われない。情報の多重化での技術的課題は、情報が変更されるとき、いかにして多重化された情報の一貫性を維持するかという点にある。一貫性の維持は、変更の内容又は結果を各コンピュータに通知して、各コンピュータでその変更を適用することにより実現できる。
 この方法の注意点は、可換(commutative)でない変更が同時並行的に行われたとき、各コンピュータでの変更の順序が同一でなければならないという点である。例えば、預金残高に1000円を加えるという変更Aと、預金残高の1%を加えるという変更Bがほぼ同時に発生したとき、その適用順序が変わると最終的な結果は同一でない。つまり、変更A及び変更Bの順序を決定し、多重化された各コンピュータはすべて同じ順序で変更を行わなければならない。同様に、変更の結果を各コンピュータに通知する方式においても、各コンピュータでの変更の順序が同一でなければならない。
 変更の順序を同一に保つためには、すべての変更に順序番号を付けることができればよい。仮に、変更の要求元が一元的であれば、要求元で順序番号を付けることができるが、しかしながら一般的には、変更の要求元が一元的であるとはかぎらない。変更の要求元が一元的でない場合に、変更の順序を決定するため、非特許文献1には、リーダ(又はマスタ)とよばれるコンピュータにいったん変更要求をすべて集めて順序を決定するという方法が開示されている。
ZooKeeper: A Distributed Coordination Service for Distributed Applications <URL:http://zookeeper.apache.org/doc/current/zookeeperOver.html>
 しかしながら、マスタコンピュータに変更要求をすべて集めて順序を決定する方法では、マスタコンピュータが故障して停止した場合に、他のコンピュータをマスタコンピュータとして選出するまでは、変更要求の順序が決定できず、多重化の処理を中断しなければならなかった。
 実施形態の情報処理システムは、1以上のクライアント装置と、データを記憶するN以上(Nは3以上の整数)のサーバ装置とを備える。前記クライアント装置は、前記データの変更内容を示すリクエストを前記サーバ装置に送信する送信部を備える。前記サーバ装置は、第1記憶部と、受信部と、生成部と、選択部と、送信部と、変更部とを備える。第1記憶部は、前記リクエストと、前記リクエストの変更内容に基づいて前記データを変更する順序を示す順序番号とを関連付けた履歴データと、前記データとを記憶する。受信部は、前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信する。生成部は、前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成する。選択部は、前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定する。送信部は、選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する。変更部は、前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更する。
図1は、実施形態の情報処理システムの構成の一例を示す図である。 図2は、実施形態のサーバ装置の構成の一例を示す図である。 図3は、実施形態の履歴データの一例を示す図である。 図4は、実施形態のサーバ装置がリクエストを受信したときの処理を示すフローチャートである。 図5は、実施形態のサーバ装置が候補データを受信したときの処理を示すフローチャートである。 図6は、実施形態のサーバ装置の選択部の処理を示すフローチャートである。 図7は、実施形態のサーバ装置の変更部の処理を示すフローチャートである。 図8は、実施形態のサーバ装置が現順序番号を受信したときの処理を示すフローチャートである。 図9は、実施形態の情報処理方法を具体的に説明するための図である。 図10は、実施形態の情報処理方法を具体的に説明するための図である。 図11は、実施形態の情報処理方法を具体的に説明するための図である。 図12は、実施形態の情報処理方法を具体的に説明するための図である。 図13は、実施形態の情報処理方法を具体的に説明するための図である。 図14は、実施形態の情報処理方法を具体的に説明するための図である。 図15は、実施形態の情報処理方法を具体的に説明するための図である。 図16は、実施形態の情報処理方法の性能を示す図である。 図17は、実施形態のサーバ装置及びクライアント装置のハードウェアの構成の一例を示す図である。
 以下、添付図面を参照して実施形態の情報処理システム、サーバ装置、情報処理方法及びプログラムについて説明する。
 図1は、実施形態の情報処理システムの構成の一例を示す図である。本実施形態の情報処理システム100は、サーバ装置10-1、・・・、サーバ装置10-n(nは3以上の整数)と、クライアント装置20-1、・・・、クライアント装置20-m(mは1以上の整数)と、ネットワーク30とを備える。以下、サーバ装置10-1、・・・、及びサーバ装置10-nを区別する必要がない場合は単にサーバ装置10という。同様に、クライアント装置20-1、・・・、及びクライアント装置20-mを区別する必要がない場合は、単にクライアント装置20という。
 サーバ装置10及びクライアント装置20は、互いに通信できるようにネットワーク30を介して接続されている。なお、サーバ装置10及びクライアント装置20との間の通信手段は、有線であっても無線であってよく、また、両方を組み合わせてもよい。サーバ装置10-1、・・・、及びサーバ装置10-nは、データを記憶する。クライアント装置20は、送信部21を備える。送信部21は、サーバ装置10のデータの変更内容を示すリクエストを任意のサーバ装置10に送信する。
 図2は、実施形態のサーバ装置10の構成の一例を示す図である。本実施形態のサーバ装置10は、第1記憶部11、第2記憶部12、受信部13、生成部14、選択部15、変更部16、同期部17及び送信部18を備える。
 第1記憶部11は、データ及び履歴データを記憶する。データは、例えばデータベースのデータである。履歴データは、例えば当該データベースのジャーナルである。サーバ装置10が第1記憶部11に記憶するデータは任意でよい。
 図3は、実施形態の履歴データの一例を示す図である。履歴データは、順序番号とリクエストとを関連付けた情報である。順序番号は、当該リクエストの変更内容に基づいて第1記憶部11のデータを変更する順序を示す。本実施形態の順序番号の初期値は1である。以下、まだリクエストが関連付けられていない未使用の順序番号を現順序番号という。図3の例では、順序番号Sが現順序番号である。
 図2に戻り、第2記憶部12は、各サーバ装置10の候補データ及び現ラウンド番号を一時的に記憶する。候補データは、現順序番号と、当該現順序番号を使用して履歴データに登録する候補となるリクエストと、リクエストの状態と、ラウンド番号と、サーバ識別子とを含む。候補データに含まれるリクエストの状態は、第1状態及び第2状態がある。リクエストの状態は、現順序番号に関連付けるリクエストを決定する処理に使用される情報である。また、ラウンド番号は、現順序番号に関連付けるリクエストを決定する処理に使用される番号である。現順序番号に関連付けるリクエストを決定する処理の詳細な説明は図4~8のフローチャートを参照して後述する。サーバ識別子は、各サーバ装置10を識別する識別情報である。例えば、サーバ識別子は、各サーバ装置10に割り当てられた1~Nのサーバ番号である。候補データに含まれるサーバ識別子により、当該候補データを送信したサーバ装置10を識別することができる。
 現ラウンド番号は、ラウンド番号の最新の値である。本実施形態の現ラウンド番号の初期値は1である。第2記憶部12の現ラウンド番号及び候補データは、選択部15及び変更部16によって更新される。
 受信部13は、クライアント装置20からリクエストを受信し、他のサーバ装置10から候補データを受信する。受信部13は、現ラウンド番号が1のときに、クライアント装置20から受信したリクエストを生成部14に送信する。
 また、受信部13は、受信した候補データを第2記憶部12に一時的に記憶する。このとき、現ラウンドの自身の候補データが決定していない場合には、受信した候補データを当該ラウンドの自身の候補データとし、第2記憶部12に記憶する。受信部13は、第2記憶部12から現ラウンド番号を読み出し、当該現ラウンド番号に応じて、他のサーバ装置10から候補データを受信した旨を示す候補データ受信通知を選択部15又は変更部16に送信する。具体的には、受信部13は、現ラウンド番号が奇数のときに、候補データ受信通知を選択部15に送信する。受信部13は、現ラウンド番号が偶数のときに、候補データ受信通知を変更部16に送信する。
 また、受信部13は、他のサーバ装置10が履歴データを更新したときに他のサーバ装置10から現順序番号を受信し、当該現順序番号を同期部17に送信し、現順序番号受信契機の履歴データ同期処理を同期部17に依頼する。現順序番号受信契機の履歴データ同期処理については後述する。
 また、受信部13は、受信した候補データの現順序番号が履歴データの現順序番号よりも大きい場合、候補データ受信契機の履歴データ同期処理を同期部17に依頼する。また、受信部13は、受信した候補データのラウンド番号が現ラウンド番号より大きい場合、段落0019の処理に先だって、同期部17に現ラウンド番号同期処理を依頼する。これらの同期処理により、第2記憶部12に含まれる候補データの順序番号とラウンド番号はすべて同一となる。候補データ受信契機の履歴データ同期処理、及びラウンド番号の同期処理については後述する。
 受信部13及び後述の同期部17の処理により、サーバ装置10は、他のサーバ装置10よりも、現順序番号に関連付けるリクエストを決定する処理が遅れている場合を判定し、当該処理が遅れている場合は、他のサーバ装置10の処理に合わせる。詳細な説明は、図5のフローチャートを参照して後述する。
 生成部14は、現ラウンド番号が1(初期値)のとき、受信部13を介してクライアント装置20から受信したリクエストの状態を第1状態に決定する。生成部14は、第1状態のリクエストと、履歴データの現順序番号と、値が1であるラウンド番号とを含む候補データを生成する。生成部14は、当該候補データを選択部15に送信する。
 選択部15は、現ラウンド番号が1(初期値)のとき、生成部14から候補データを受信する。また、選択部15は、現ラウンド番号が奇数のとき、候補データ受信通知を受信部13から受信する。選択部15は、候補データ受信通知を受信すると、第2記憶部12から候補データを読み出す。
 選択部15は、第2記憶部12から読み出した候補データのリクエストのうち変更内容が同一のリクエストの数が閾値より大きい場合、変更内容が同一のリクエストのうち一のリクエストを選択する。なお、本実施形態では、当該閾値をn/2とする。すなわち、当該閾値を情報処理システム100内のサーバ装置10の台数の半分の値とする。しかしながら、当該閾値は、n/2に限られずそれより大きい任意の値でもよい。選択部15は、選択されたリクエストの状態を第2状態にし、選択されたリクエストを含む候補データのラウンド番号を1増やす。選択部15は、選択されなかったリクエストを含む候補データを第2記憶部12から削除し、選択されたリクエストを含む候補データを、送信部18を介して他のサーバ装置10に送信する。選択部15は、第2記憶部12の現ラウンド番号を1増やす。
 また、選択部15は、第2記憶部12から読み出した候補データのリクエストのうち変更内容が相異なるリクエストがある場合、一の候補データを選択する。具体的には、選択部15は、第2記憶部12から候補データを読み出し、ランダムに一の候補データを選択する。なお、選択部15が一の候補データを選択する方法は、ランダムに一の候補データを選択する方法に限られず、その他の方法でもよい。選択部15は、選択された候補データのラウンド番号を1増やす。選択部15は、選択されなかった候補データを第2記憶部12から削除し、選択された候補データを当該ラウンドの自身の候補データとして決定して第2記憶部12に記憶し、送信部18を介して他のサーバ装置10に送信する。選択部15は、第2記憶部12の現ラウンド番号を1増やす。
 なお、選択部15が候補データを送信するサーバ装置10は、所定の方法により決定する。当該所定の方法は、例えば、送信先のサーバ装置10をランダムに所定の数だけ選択する方法や、送信先のサーバ装置10を他のサーバ装置10の全てにする等である。
 変更部16は、現ラウンド番号が偶数のとき、候補データ受信通知を受信部13から受信する。変更部16は、候補データ受信通知を受信すると、第2記憶部12から候補データを読み出す。
 変更部16は、第2記憶部12から読み出した候補データのリクエストのうち状態が第2状態のリクエストの数が閾値より大きい場合、第2状態のリクエストを含む候補データのうち一の候補データを使用して履歴データを更新するとともにデータを変更する。変更部16は、第2記憶部12の現ラウンド番号を1(初期値)に戻す。また、変更部16は、第1記憶部11の現順序番号を1増やす。また、変更部16は、1増やした後の現順序番号を他のサーバ装置10に送信する。これにより、新たに使用された順序番号を他のサーバ装置10に通知する。
 また、変更部16は第2記憶部12から読み出した候補データのうち、第1状態のリクエストを含む候補データがあり、かつ、第2状態のリクエストを含む候補データがある場合、第2状態のリクエストを含む候補データのうち一の候補データを選択し、選択された候補データのリクエストの状態を第1状態に決定する。変更部16は、選択された候補データのラウンド番号を1増やす。変更部16は、選択されなかった候補データを第2記憶部12から削除し、選択された候補データを当該ラウンドの自身の候補データとして決定して第2記憶部12に記憶し、送信部18を介して他のサーバ装置10に送信する。選択部15は、第2記憶部12の現ラウンド番号を1増やす。
 また、変更部16は、第2記憶部12から読み出した候補データのリクエストのうち、状態が第1状態のリクエストの数が閾値より大きい場合、一の候補データを選択する。例えば、変更部16は、ランダムに一の候補データを選択する。なお、変更部16が一の候補データを選択する方法は、ランダムに一の候補データを選択する方法に限られず、その他の方法でもよい。変更部16は、選択された候補データのラウンド番号を1増やす。変更部16は、選択されなかった候補データを第2記憶部12から削除し、選択された候補データを当該ラウンドの自身の候補データとして決定して第2記憶部12に記憶し、送信部18を介して他のサーバ装置10に送信する。選択部15は、第2記憶部12の現ラウンド番号を1増やす。
 同期部17は、受信部13が他のサーバ装置10から受信した候補データの現順序番号が、履歴データの現順序番号よりも大きい場合、第2記憶部12の候補データを削除し、現順序番号を送信した他の前記サーバ装置10に、履歴データの送信依頼を、送信部18を介して送信する(候補データ受信契機の履歴データ同期処理)。
 また、同期部17は、受信部13が候補データを受信したときに、受信した候補データのラウンド番号が、第2記憶部12の現ラウンド番号よりも大きい場合、第2記憶部12の候補データを削除し、受信した候補データを第2記憶部12に記憶するとともに、現ラウンド番号を受信した候補データのラウンド番号にする(ラウンド番号の同期処理)。
 また、同期部17は、受信部13を介して他のサーバ装置10から現順序番号を受信したときに、他のサーバ装置10から受信した現順序番号が、履歴データの現順序番号よりも大きい場合、第2記憶部12の候補データを削除し、現順序番号を送信した他のサーバ装置10に、履歴データの送信依頼を、送信部18を介して送信する(現順序番号受信契機の履歴データ同期処理)。
 同期部17の履歴データ同期処理により、サーバ装置10は、他のサーバ装置10から最新の履歴データを受信して、自身の履歴データを最新の状態に更新することができる。
 送信部18は、選択部15又は変更部16から受信した候補データに、自身のサーバ装置10を識別するサーバ識別子を含め、当該候補データを他のサーバ装置10に送信する。また、順序番号を変更部16から受信したときに、当該順序番号を他のサーバ装置10の全てに送信する。また、送信部18は、履歴データの送信依頼を同期部17から受信すると、依頼先のサーバ装置10に履歴データの送信依頼を送信する。
 次に、本実施形態の情報処理システム100の情報処理方法についてフローチャートを参照して説明する。図4は、実施形態のサーバ装置10がリクエストを受信したときの処理を示すフローチャートである。受信部13がクライアント装置20からリクエストを受信する(ステップS1)。受信部13は、第2記憶部12から現ラウンド番号を読み出し、現ラウンド番号が1(初期値)であるか否かを判定する(ステップS2)。現ラウンド番号が1である場合(ステップS2、Yes)、受信部13の処理は、ステップS3に進む。現ラウンド番号が1でない場合(ステップS2、No)、受信部13は、処理を終了する。
 受信部13は、第一ラウンドの自身の候補データが決定しているか否かを判定する(ステップS3)。第一ラウンドの自身の候補データが決定している場合(ステップS3、Yes)、受信部13は、処理を終了する。第一ラウンドの自身の候補データがまだ決定していない場合(ステップS3、No)、受信したリクエストを生成部14に送信する。生成部14は、受信部13から受信したリクエストの状態を第1状態にする。生成部14は、当該第1状態のリクエスト、第1記憶部11の現順序番号、及び値が1(初期値)のラウンド番号を含む候補データを生成する(ステップS4)。生成部14は、生成した候補データを選択部15に送信する。選択部15は、生成部14から受信した候補データを第一ラウンドの自身の候補データとして決定して第2記憶部12に記憶する(ステップS5)。選択部15は、当該候補データを送信部18を介して他のサーバ装置10に送信する(ステップS6)。なお、送信部18は、候補データに自身のサーバ装置10を識別するサーバ識別子を含め、当該候補データを他のサーバ装置10に送信する。
 図5は、実施形態のサーバ装置10が候補データを受信したときの処理を示すフローチャートである。受信部13は、候補データを他のサーバ装置10から受信する(ステップS11)。受信部13は、当該候補データに含まれる現順序番号が履歴データの現順序番号よりも大きいか否かを判定する(ステップS12)。
 当該候補データに含まれる現順序番号が履歴データの現順序番号よりも大きい場合(ステップS12、Yes)、受信部13は、同期部17に履歴データの同期処理を依頼する。同期部17は、受信部13から履歴データの同期処理の依頼を受信すると、第2記憶部12の全ての候補データを削除し(ステップS13)、当該現順序番号を含む候補データを送信したサーバ装置10に履歴データの送信を依頼し(ステップS14)、候補データの受信処理を終了する。
 当該候補データに含まれる現順序番号が履歴データの現順序番号以下である場合(ステップS12、No)、受信部13の処理はステップS15に進む。
 受信部13は、受信した候補データの現順序番号と履歴データの現順序番号が一致するか否かを判定する(ステップS15)。一致する場合(ステップS15、Yes)、受信部13の処理はステップS16に進む。一致しない場合(ステップS15、No)、受信部13の処理を終了する。
 受信部13は、受信した候補データのラウンド番号が第2記憶部12の現ラウンド番号より大きいか否かを判定する(ステップS16)。受信した候補データのラウンド番号が第2記憶部12の現ラウンド番号より大きい場合(ステップS16、Yes)、受信部13は、同期部17にラウンド番号の同期処理を依頼する。同期部17は、受信部13からラウンド番号の同期処理の依頼を受信すると、第2記憶部12の全ての候補データを削除し(ステップS17)、現ラウンド番号を受信部13が受信した候補データのラウンド番号にする(ステップS18)。次に、受信部13の処理はステップS20に進む。
 受信した候補データのラウンド番号が第2記憶部12の現ラウンド番号以下である場合(ステップS16、No)、受信部13の処理はステップS19に進む。
 受信部13は、受信した候補データのラウンド番号と第2記憶部12の現ラウンド番号とが一致するか否かを判定する(ステップS19)。一致する場合(ステップS19、Yes)、受信部13の処理はステップS20に進む。一致しない場合(ステップS19、No)、処理を終了する。
 受信部13は、受信した候補データを第2記憶部12に記憶する(ステップS20)。次に、現ラウンドの自身の候補データが決定しているか否かを判定する(ステップS21)。決定している場合(ステップS21、Yes)、受信した候補データを自身の候補データとして決定して第2記憶部12に記憶する(ステップS22)。次に、受信部13は、現ラウンド番号が奇数であるか否かを判定する(ステップS23)。現ラウンド番号が奇数である場合(ステップS23、Yes)、受信部13は、候補データ受信通知を選択部15に送信し、選択部15による処理に移行する(ステップS24)。現ラウンド番号が偶数である場合(ステップS23、No)、受信部13は、候補データ受信通知を変更部16に送信し、変更部16による処理に移行する(ステップS25)。
 図6は、実施形態のサーバ装置10の選択部15の処理を示すフローチャートである。選択部15は、候補データ受信通知を受信部13から受信すると、第2記憶部12から候補データを読み出す(ステップS31)。なお、選択部15は、候補データ受信通知を受信する度に、第2記憶部12から候補データを読み出してもよいし、複数の候補データ受信通知に対して候補データの読み出しを1度にしてもよい。選択部15は、第2記憶部12の候補データの読み出し処理を終了すると、ステップS32の処理に進む。なお、読み出し処理の終了を判定する方法は任意でよい。例えば、最初の候補データ受信通知を受信してから、所定の期間待つ間に受信した候補データ受信通知の分だけ候補データを読み出す方法や、情報処理システム100内のサーバ装置10の数に基づいて定められた数だけ候補データを読み出したら読み出し処理を終了する等の方法がある。
 選択部15は、第2記憶部12から読み出した候補データのリクエストのうち変更内容が同一のリクエストの数が閾値より大きいか否かを判定する(ステップS32)。閾値より大きい場合(ステップS32、Yes)、選択部15は、ステップS32の条件を満たす候補データから一の候補データを選択し(ステップS33)、選択された候補データのリクエストの状態を第2状態に決定する(ステップS34)。次に、選択部15の処理はステップS37に進む。
 閾値以下である場合(ステップS32、No)、第2記憶部12から読み出した候補データのリクエストのうち変更内容が相異なるリクエストがあるか否かを判定する(ステップS35)。変更内容が相異なるリクエストが無い場合(ステップS35、No)、ステップS31に戻る。変更内容が相異なるリクエストがある場合(ステップS35、Yes)、選択部15は、第2記憶部12から読み出した候補データのうち一の候補データを選択し(ステップS36)、ステップS37に進む。
 選択部15は、選択されなかった候補データを第2記憶部12から削除する(ステップS37)。選択部15は、選択した候補データのラウンド番号を1増やすとともに、第2記憶部12の現ラウンド番号を1増やす(ステップS38)。選択部15は、選択した候補データを当該ラウンドの自身の候補データとして決定して第2記憶部12に記憶し、送信部18を介して他のサーバ装置10に送信する(ステップS39)。なお、送信部18は、候補データに自身のサーバ装置10を識別するサーバ識別子を含め、当該候補データを他のサーバ装置10に送信する。
 図7は、実施形態のサーバ装置10の変更部16の処理を示すフローチャートである。 変更部16は、候補データ受信通知を受信部13から受信すると、第2記憶部12から候補データを読み出す(ステップS41)。なお、ステップS41の読み出し処理の詳細は、ステップS31と同様なので説明を省略する。
 変更部16は、リクエストの状態が第2状態である候補データの数が閾値より大きいか否かを判定する(ステップS42)。閾値以下である場合(ステップS42、No)、変更部16の処理はステップS49に進む。
 閾値より大きい場合(ステップS42、Yes)、変更部16は、ステップS42の条件を満たす候補データから一の候補データを選択する(ステップS43)。次に、変更部16は、選択された候補データを使用して第1記憶部11の履歴データを更新し、第1記憶部11のデータを変更する(ステップS44)。次に、変更部16は、第2記憶部12の全ての候補データを削除する(ステップS45)。次に、変更部16は、第2記憶部12の現ラウンド番号を1(初期値)に戻す(ステップS46)。次に、変更部16は、第1記憶部11の履歴データの現順序番号を1増やす(ステップS47)。次に、変更部16は、現順序番号を他のサーバ装置10に送信し(ステップS48)、処理を終了する。
 変更部16は、第2記憶部12から読み出した候補データに、第1状態のリクエストを含む候補データと、第2状態のリクエストを含む候補データとが共にあるか否かを判定する(ステップS49)。共にある場合(ステップS49、Yes)、変更部16は、第2状態のリクエストを含む候補データから一の候補データを選択し(ステップS50)、選択された候補データのリクエストの状態を第1状態にする(ステップS51)。次に、変更部16の処理はステップS54に進む。
 共にない場合(ステップS49、No)、リクエストの状態が第1状態である候補データの数が閾値より大きいか否かを判定する(ステップS52)。閾値以下である場合(ステップS52、No)、変更部16の処理はステップS41に戻る。閾値より大きい場合(ステップS52、Yes)、変更部16の処理はステップS53に進む。変更部16は、第2記憶部12から読み出した候補データのうち一の候補データを選択する(ステップS53)。次に、変更部16の処理はステップS54に進む。
 変更部16は、選択されなかった候補データを第2記憶部12から削除する(ステップS54)。変更部16は、選択した候補データのラウンド番号を1増やすとともに、第2記憶部12の現ラウンド番号を1増やす(ステップS55)。変更部16は、選択した候補データを送信部18を介して他のサーバ装置10に送信する(ステップS56)。なお、送信部18は、候補データに自身のサーバ装置10を識別するサーバ識別子を含め、当該候補データを他のサーバ装置10に送信する。
 図8は、実施形態のサーバ装置10が現順序番号を受信したときの処理を示すフローチャートである。受信部13は、他の前記サーバ装置10が履歴データを更新したときに、他のサーバ装置10から現順序番号を受信する(ステップS61)。受信部13は、受信した現順序番号が第1記憶部11の履歴データの現順序番号よりも大きいか否かを判定する(ステップS62)。受信した現順序番号が第1記憶部11の履歴データの現順序番号以下である場合(ステップS62、Yes)、処理を終了する。
 受信した現順序番号が第1記憶部11の履歴データの現順序番号よりも大きい場合(ステップS62、Yes)、同期部17に履歴データの同期処理を依頼する。同期部17は、受信部13から履歴データの同期処理の依頼を受信すると、第2記憶部12の全ての候補データを削除し(ステップS63)、当該現順序番号を含む候補データを送信したサーバ装置10に履歴データの送信を依頼する(ステップS64)。これにより、サーバ装置10は、他のサーバ装置10から最新の履歴データを受信して、自身の履歴データを最新の状態に更新することができる。
 次に、上述の情報処理方法について具体例を参照して説明する。図9~図14は、実施形態の情報処理方法を具体的に説明するための図である。図9~図14は、サーバ装置の数nが5の例である。自候補は、サーバ装置10自身の候補データ(以下、「自候補データ」という。)を示す。他候補は、他のサーバ装置10から受信した候補データ(以下、「他候補データ」という。)を示す。なお、本例では、他候補データに含まれる現順序番号は、サーバ装置10自身の現順序番号と一致しているものとして説明する。また、本例では、サーバ装置10の送信部18は、自候補データの送信先、及び当該送信先の数をランダムに決定するものとして説明する。すなわち、自候補データと他候補データとを合わせた候補データが、全てのサーバ装置10で同じになるとは限らない。なお、サーバ装置10の送信部18が、自候補データの送信先、及び当該送信先の数を常に同じにしている場合であっても、ネットワーク30の遅延や障害などの影響により、候補データは、全てのサーバ装置10で同じになるとは限らない。また、本例では、上述の閾値を5/2(=2.5)とする。
 図9上段の図は、サーバ装置10-1~サーバ装置10-5の第2記憶部12の初期状態である。すなわち、サーバ装置10-1~サーバ装置10-5の現ラウンド番号が1であり、本実施形態の情報処理方法を開始するときの第2記憶部12の状態を示す。図9下段の図は、サーバ装置10-1の受信部13がクライアント装置20からリクエストAを受信し、サーバ装置10-1の生成部14が当該リクエストAの状態を第1状態にして自候補データを生成したことを示す。また、サーバ装置10-3の受信部13がクライアント装置20からリクエストBを受信し、サーバ装置10-3の生成部14が当該リクエストBの状態を第1状態にして自候補データを生成したことを示す。サーバ装置10-5の受信部13がクライアント装置20からリクエストCを受信し、サーバ装置10-5の生成部14が当該リクエストCの状態を第1状態にして自候補データを生成したことを示す。サーバ装置10-2及びサーバ装置10-4は、クライアント装置20からリクエストを受信していないことを示す。
 図10上段の図は、サーバ装置10-1~サーバ装置10-5の第2記憶部12が図9下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10-1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストB、及び第1状態のリクエストCを受信したことにより更新されている。サーバ装置10-3の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストAを受信したことにより更新されている。サーバ装置10-5の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストAを受信したことにより更新されている。サーバ装置10-2の第2記憶部12の状態は、サーバ装置10-3から他候補データとして、第1状態のリクエストBを受信したことにより更新されている。特に、サーバ装置10-2は、自候補データを決定していなかったので、リクエストBを自候補データに決定している。サーバ装置10-4の第2記憶部12の状態は、サーバ装置10-1から他候補データとして、第1状態のリクエストAを受信したことにより更新されている。特に、サーバ装置10-4は、自候補データを決定していなかったので、リクエストAを自候補データに決定している。
 図10下段の図は、選択部15による処理の後の状態を示す図である。サーバ装置10-1の選択部15は、候補データのリクエスト(A、B,C)は変更内容が相異なるため、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10-1の選択部15は、選択されなかった候補データ(B,C)を削除する。次に、サーバ装置10-1の選択部15は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10-1の選択部15は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10-3、サーバ装置10-5の動作もサーバ装置10-1と同様である。サーバ装置10-2及びサーバ装置10-4は、変更内容が相異なる候補データがないため、候補データを選択する処理に進まずに、候補データの受信を待つ(候補データの読み出し処理に戻る)。
 図11上段の図は、サーバ装置10-1~サーバ装置10-5の第2記憶部12が図10下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10-2の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストB及びCを受信(図10下段の図の状態から更にリクエストCを受信)したことにより、現ラウンド番号が1から2に更新されている。これは、サーバ装置10-2の受信部13が、第2記憶部12の現ラウンド番号1と、他候補データに含まれるラウンド番号2とを比較し、他候補データに含まれるラウンド番号2>現ラウンド番号1であるため、現ラウンド番号を2に更新したためである。自候補データが決定していなかったので、先に受信したリクエストBに自候補データが決定している。なお、サーバ装置10-4についても同様である。
 図11下段の図は、変更部16による処理の後の状態を示す図である。サーバ装置10-1の変更部16は、候補データのリクエスト(A、B,C)の状態はすべて第1状態で閾値(2.5)より多くあるので、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10-1の変更部16は、選択されなかった候補データ(B,C)を削除する。次に、サーバ装置10-1の変更部16は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10-1の変更部16は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10-2~サーバ装置10-5の動作もサーバ装置10-1と同様である。
 図12上段の図は、サーバ装置10-1~サーバ装置10-5の第2記憶部12が図11下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10-1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストB、第1状態のリクエストB、第1状態のリクエストA、及び第1状態のリクエストCを受信したことにより更新されている。サーバ装置10-2~サーバ装置10-5についても、他のサーバ装置10から他候補データを受信したことにより更新されている。
 図12下段の図は、選択部15による処理の後の状態を示す図である。サーバ装置10-1の選択部15は、候補データのリクエスト(A,B,B,A,C)のうち変更内容が同一のリクエストの数が閾値(2.5)以下であり、変更内容が相異なるため、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10-1の選択部15は、選択されなかった候補データ(B,B,A,C)を削除する。次に、サーバ装置10-1の選択部15は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10-1の選択部15は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10-2~サーバ装置10-5の動作もサーバ装置10-1と同様である。
 図13上段の図は、サーバ装置10-1~サーバ装置10-5の第2記憶部12が図12下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10-1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストB、第1状態のリクエストB、及び第1状態のリクエストAを受信したことにより更新されている。サーバ装置10-2~サーバ装置10-5についても、他のサーバ装置10から他候補データを受信したことにより更新されている。
 図13下段の図は、変更部16による処理の後の状態を示す図である。サーバ装置10-1の変更部16は、候補データのリクエスト(A、B,B,A)の状態はすべて第1状態で閾値(2.5)より多くあるので、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10-1の変更部16は、選択されなかった候補データ(B,B,A)を削除する。次に、サーバ装置10-1の変更部16は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10-1の変更部16は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10-2~サーバ装置10-5の動作もサーバ装置10-1と同様である。
 図14上段の図は、サーバ装置10-1~サーバ装置10-5の第2記憶部12が図13下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10-1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストA、第1状態のリクエストA、第1状態のリクエストB、及び第1状態のリクエストAを受信したことにより更新されている。サーバ装置10-2~サーバ装置10-5についても、他のサーバ装置10から他候補データを受信したことにより更新されている。
 図14下段の図は、選択部15による処理の後の状態を示す図である。サーバ装置10-1の選択部15は、候補データのリクエスト(A,A,A,B,A)のうち変更内容が同一のリクエスト(A,A,A,A)の数が閾値(2.5)より大きいため、変更内容が同一のリクエスト(A,A,A,A)のうち一のリクエスト(A)を選択し(自候補データにし)、選択されたリクエストの状態を第2状態に決定する。次に、サーバ装置10-1の選択部15は、選択されなかった候補データ(A,A,B,A)を削除する。次に、サーバ装置10-1の選択部15は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10-1の選択部15は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10-2及びサーバ装置10-5の動作もサーバ装置10-1と同様である。
 サーバ装置10-3の選択部15は、候補データのリクエスト(A,A,B)のうち変更内容が同一のリクエストの数が閾値(2.5)以下であり、変更内容が相異なるため、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10-1の選択部15は、選択されなかった候補データ(A,B)を削除する。次に、サーバ装置10-1の選択部15は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10-1の選択部15は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10-4の動作もサーバ装置10-3と同様である。
 図15上段の図は、サーバ装置10-1~サーバ装置10-5の第2記憶部12が図14下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10-1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第2状態のリクエストA、第1状態のリクエストA、第1状態のリクエストB、及び第2状態のリクエストAを受信したことにより更新されている。サーバ装置10-2~サーバ装置10-5についても、他のサーバ装置10から他候補データを受信したことにより更新されている。
 図15下段の図は、変更部16による処理の後の状態を示す図である。サーバ装置10-1の変更部16は、候補データのリクエスト(A,A,A,B,A)のうち状態が第2状態のリクエスト(A,A,A)の数が閾値(2.5)より大きいため、第2状態のリクエスト(A,A,A)を含む候補データのうち一の候補データ(A)を使用して第1記憶部11の履歴データを更新するとともに第1記憶部11のデータを変更する。次に、サーバ装置10-1の変更部16は、全ての候補データ(A,A,A,B,A)を削除する。次に、サーバ装置10-1の変更部16は、現ラウンド番号を1に戻すともに、現順序番号を1増やす。次に、当該現順序番号を他のサーバ装置10に送信する。なお、サーバ装置10-2~サーバ装置10-4の動作もサーバ装置10-1と同様である。
 サーバ装置10-5の変更部16は、候補データのリクエストのうち、状態が第2状態のリクエストの数が閾値(2.5)以下であり、かつ、第1状態のリクエストを含む候補データと、第2状態のリクエストを含む候補データとが共にあるため、第2状態のリクエスト(A,A)を含む候補データのうち一の候補データを選択し、選択された候補データのリクエスト(A)の状態を第1状態に決定する。
 サーバ装置10-5の第1記憶部11の履歴データ及びデータは、図9~図15で説明した情報処理方法では更新されていないが、他のサーバ装置10から現順序番号を受信した契機で更新される。すなわち、サーバ装置10-5の受信部13が、他のサーバ装置10から現順序番号を受信すると、サーバ装置10-5の同期部17が上述の図8のフローチャートの処理を行うことにより、第1記憶部11の履歴データ及びデータが更新される。
 次に、本実施形態の情報処理方法の正当性について説明する。本実施形態の情報処理方法は、各サーバ装置10で独立して実行される。つまり、各ラウンドの処理結果はサーバ装置10間で異なるかもしれないことに注意する。現順序番号のリクエストが確定するラウンドも同一であるとは限らない。また、各サーバ装置10は非同期的に動作するため、ある時点で実行している処理の順序番号やラウンド番号は、各サーバ装置10で異なるかもしれない。受信部13及び同期部17の処理は、順序番号やラウンド番号が進んでいるサーバ装置10から通知を受け取ったとき、進んでいる番号にキャッチアップする処理を含む。
 本実施形態の情報処理方法(アルゴリズム)の正当性は、以下のValidity条件、Agreement条件、及びTermination条件を満たしていることを証明して示すことができる。
(Validity条件)各順序番号で確定したリクエストは、クライアント装置20から受け付けられたリクエストのいずれかである。
(Agreement条件)各順序番号で確定したリクエストは、サーバ装置10間で異ならない。
(Termination条件)過半数のサーバ装置10が正常な時、正常なサーバ装置10では各順序番号のリクエストが確定する。
 まず、Validity条件について説明する。本実施形態の情報処理方法は、ラウンド番号=1のときにクライアント装置20から受け付けたアクセスを自候補データとし、それ以降のラウンドでは、前のラウンドで決定した自候補データ、及び他のサーバ装置10から受信した他候補データから、自候補データが決定される。いずれのラウンドでも元々クライアント装置20から受け付けたリクエスト以外が現れることはない。つまりValidity条件が成立する。
 次に、Agreement条件について説明する。これには、一連のラウンドによって、現順序番号に関連付けるリクエストを決定したサーバ装置10があるとき、他のサーバ装置10においても、次の変更部16の処理までには、当該現順序番号に同じリクエストが関連付けられることが証明できればよい。まず、変更部16の処理で第2状態の候補データがあるとしたら、それは唯一であることに注意する。なぜなら、変更部16の第2状態の候補データは、選択部15の処理で過半数あったため、第2状態に決定されるからである(選択部15の処理で過半数を得られる候補データが唯一であることは、各サーバ装置10が候補データを翻さないことから従う)。
 あるサーバ装置10が、ラウンドrで現順序番号に関連付けるリクエストを、リクエストVで最初に決着したとする。これは、そのサーバ装置10は、ラウンドrの変更部16の処理を行う前に、第2状態のリクエストVを含む候補データを過半数のサーバ装置10から受信したということである。
 つまり、リクエストVは、過半数のサーバ装置10で第2状態のリクエストに決定されている。すると、他のサーバ装置10においても、どのような組み合わせの過半数のサーバ装置10からラウンドrの変更部16の処理に使用する候補データを受け取ったとしても、最低でも一つはリクエストVが通知されることになる。したがって、すべてのサーバ装置10において、ラウンドrで決着するとすればリクエストVしかありえないし、決着しないとしても、次のラウンドの選択部15の処理に使用する自候補データがリクエストVとなる。選択部15の自候補データがすべてリクエストVとなることから、前述したとおり、その次の変更部16の処理で決着する。
 ここで、受信部13及び同期部17のキャッチアップ動作の正当性について説明する。キャッチアップの基本的な考え方は、自身のサーバ装置10抜きで過半数の候補データが揃ったラウンドの処理については、自候補データを立てる必要がないため、自候補データを立てずに他のサーバ装置10での処理結果をそのまま流用するということである。本実施形態の情報処理方法の各ラウンドの処理は、必ずしも自身のサーバ装置10の候補データを含んでいる必要はないため、他のサーバ装置10の処理結果を流用したとき、これをあたかも自身のサーバ装置10で各ラウンドの処理を実施したかのようにみなすことができる。したがって、キャッチアップ動作は本実施形態の情報処理方法の正当性に影響を与えない。
 最後にTermination条件について説明する。本実施形態の情報処理方法は乱数等を利用するアルゴリズムであるため、確率的Terminationを満たすことを証明する。すなわち、過半数のサーバ装置10が正常な時、各順序番号のリクエストが永遠に決着しない確率は、限りなく0に近いことを証明する。
 まず、過半数のサーバ装置10が正常な時には、各ラウンドの処理において、候補データを過半数以上集めることができる。したがって、決着に至るまでラウンド番号は増加し続けることになる。逆に、過半数のサーバ装置10が故障により停止した場合には、候補データを過半数集めることができなくなるため決着に至らなくなる(キャッチアップ動作を除く)。
 Vrをそのラウンドの選択部15の処理の候補データとして現れたリクエストの種類の総数とする。ラウンドが進むにつれてVrは単調減少である(つまり、r<sのときVr≧Vs)。Vrが1となった場合、前述した通り次の変更部16の処理で決着する。そこで、Vrが1となるまでは、Vrが一定以上の確率で真に減少していくことが示せれば、確率的Termination条件が成立することが判る。実際、Vr>1のとき、選択部15の処理で候補データの過半数を占めないリクエストVが必ずある。リクエストVは変更部16の処理の開始時に、第2状態の候補データにはなり得ず、選択部15の処理で第1状態の候補データに選ばれない確率は各サーバ装置10で(1/N)以上である。したがって、すべてのサーバ装置10でリクエストVが変更部16の候補データに選ばれない確率は((1/N)^N)以上ある。すべてのサーバ装置10で変更部16の候補データに選ばれないと、次の選択部15の候補データに現れることはないため、その場合Vrは真に減少する。これで、確率的Termination条件が成立することが証明された。
 ここで、本実施形態の選択部15及び変更部16の処理について補足する。選択部15の処理は、予備選挙に例えることができ、変更部16の処理は、信任選挙に例えることができる。これは、変更部16が、選択部15が第2状態にしたリクエストを含む候補データ(予備選挙で当選した候補データ)から、現順序番号に関連付けるリクエストを含む候補データを決定(信任選挙で決定)するためである。
 次に、本実施形態の情報処理方法の性能について説明する。図16は、実施形態の情報処理方法の性能を示す図である。なお、図16では、参考までにBen’orの合意アルゴリズムによる結果についても示している。
 図16は、Ben’orの合意アルゴリズムと、本実施形態の情報処理方法の性能の比較として、初期値が異なる場合に、同意を得るまでに要するラウンド数をシミュレーションした結果を示す。なお、シミュレーションは、非同期ネットワークモデルでのシミュレーションで行い、1000回のシミュレーション結果の平均値をとる。多重化するサーバ装置10の数を3~29までについて評価した。
 なお、本実施形態の情報処理方法と比較して、Ben’orの合意アルゴリズムには、下記の特徴がある。
・同意する値は、0か1のどちらかしかない。
・第2状態にできるリクエストがない場合、第2状態にできないことを他のサーバ装置10に通知する。
・乱拓は、任意の候補データの中から選ぶ。
・各サーバ装置10で順に各ラウンドを計算する(スキップしない)。
 一方、本実施形態の情報処理方法には下記の特徴がある。
・同意する値として、2値ではなく多値が扱える。
・第2状態にできるリクエストがない場合、ランダムに選んだ第1状態の候補データを他のサーバ装置10に通知する。
・乱拓は、前のラウンドの第1状態の候補データの中からしか選ばない。
・現ラウンド番号より大きいラウンド番号を受信したとき、ラウンド番号を進める。
・自候補データが未決定の時、受信した候補データを自候補データとする。
 非同期ネットワークモデルでは、各サーバ装置10は必ずしも一様に処理を実行するわけではない。例えば、サーバ装置10-1とサーバ装置10-2の実行の速度の比が100:1かもしれない。またあるときには、その比が1:100に逆転するかもしれない。また、ネットワーク30内で遅延が発生する可能性がある。シミュレーションでは、ある時点で各サーバ装置10の処理が進む確率をランダムに設定している。また、各サーバ装置10へのパケットの配送が進む確率もランダムに設定している。
 Ben’orの合意アルゴリズムの場合、初期値は0か1しか選べないため、各サーバ装置10でランダムに与えるようにした。本実施形態の情報処理方法は、多値を扱えるため、初期値はすべてのサーバ装置10で異なる値とした。シミュレーション結果を比較すると、多重度が大きくなるにつれて、本実施形態の情報処理方法の優位性が明らかになる。また、Ben’orの合意アルゴリズムの場合、同意する値が0か1しかないが、本実施形態の情報処理方法では多値を扱えるという優位性がもともとある。
 最後に、本実施形態のサーバ装置10及びクライアント装置20のハードウェア構成の一例について説明する。図17は、実施形態のサーバ装置10及びクライアント装置20のハードウェアの構成の一例を示す図である。
 本実施形態のサーバ装置10及びクライアント装置20は、制御装置31、主記憶装置32、補助記憶装置33、表示装置34、入力装置35及び通信装置36を備える。制御装置31、主記憶装置32、補助記憶装置33、表示装置34、入力装置35及び通信装置36は、バス37を介して互いに接続されている。
 制御装置31は、補助記憶装置33から主記憶装置32に読み出されたプログラムを実行する。主記憶装置32は、ROM(Read Only Memory)やRAM(Random Access Memory)等のメモリである。補助記憶装置33は、例えば、ハードディスクやメモリカード等である。表示装置34は、サーバ装置10及びクライアント装置20の状態等を表示する画面である。表示装置34は、例えば、液晶ディスプレイ等である。入力装置35は、サーバ装置10及びクライアント装置20を操作するためのインタフェースである。入力装置35は、例えば、キーボードやマウス等である。通信装置36は、ネットワークに接続するためのインタフェースである。
 本実施形態のサーバ装置10及びクライアント装置20で実行されるプログラムを、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、メモリカード、CD-R及びDVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録し、コンピュータ・プログラム・プロダクトとして提供してもよい。また、本実施形態のサーバ装置10及びクライアント装置20で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供してもよい。また、本実施形態のサーバ装置10及びクライアント装置20で実行されるプログラムをダウンロードさせずに、インターネット等のネットワーク経由で提供、又は配布してもよい。また、本実施形態のサーバ装置10及びクライアント装置20のプログラムを、ROM等に予め組み込んで提供してもよい。
 本実施形態のサーバ装置10で実行されるプログラムは、上述したサーバ装置10の各機能ブロックのうち、プログラムとしても実現可能な機能ブロック(受信部13、生成部14、選択部15、変更部16、同期部17及び送信部18)を含むモジュール構成となっている。
 また、本実施形態のクライアント装置20で実行されるプログラムは、上述したクライアント装置20の送信部21を含むモジュール構成となっている。
 当該モジュールは、実際のハードウェアとしては、制御装置31が上記記憶媒体からプログラムを読み出して実行することにより、上記各モジュールが主記憶装置32上にロードされる。すなわち、上記各モジュールは、主記憶装置32上に生成される。なお、サーバ装置10及びクライアント装置20の各機能ブロックの一部、又は全部を、プログラムにより実現せずに、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
 本実施形態の情報処理システム100によれば、各サーバ装置10が選択部15及び変更部16を備え、選択部15及び変更部16の処理を交互に繰り返すことにより、履歴データの現順序番号に関連付けるリクエストを決定することができる。これにより、どのような組み合わせの障害(サーバ装置の処理の遅延や停止、及びネットワークの輻輳やパケットロス等)があったとしても、サーバ装置10間のデータの一貫性が保証され、過半数のサーバ装置10が正常に動作する条件下であれば、現順序番号に関連付けるリクエストを一意に決定することができる。
 本実施形態の情報処理システム100では、どのような組み合わせの障害があったとしても、履歴データの一貫性が失われないため、複数のサーバ装置10により多重化される情報の一貫性が失われない。また、本実施形態の情報処理システム100では、どのような組み合わせの障害があったとしても、サーバ装置10の情報処理方法(アルゴリズム)は対称であるため、単一故障点(Single Point of Failure)となるサーバ装置10がない。そのため、クライアント装置20は、任意のサーバ装置10にリクエストを送信することができる。
 なお、本実施形態の情報処理方法の説明では、複数のサーバ装置10の間で履歴データの現順序番号に関連付けるリクエストを一意に決定する場合について説明した。しかしながら、本実施形態の情報処理方法は、サーバ装置10に限らず、パーソナルコンピュータ、仮想マシン、OS(Operating System)上のプロセスなどにも適用可能である。同様に、クライアント装置20を、パーソナルコンピュータ、仮想マシン、OS(Operating System)上のプロセスなどにすることも可能である。また、ネットワーク30は、LANの他に、インターネットなどの広域ネットワーク(WAN)であってもよいし、仮想ネットワークやプロセス間通信(IPC)などでもよい。
 また、本実施形態の情報処理方法の説明では、選択部15及び変更部16の閾値を同一としたが、選択部15の閾値を第1閾値とし、変更部16の閾値を第2閾値として、選択部15と変更部16とで値の異なる閾値を設定してもよい。
 本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
 10 サーバ装置
 11 第1記憶部
 12 第2記憶部
 13 受信部
 14 生成部
 15 選択部
 16 変更部
 17 同期部
 18 送信部
 20 クライアント装置
 30 ネットワーク
 31 制御装置
 32 主記憶装置
 33 補助記憶装置
 34 表示装置
 35 入力装置
 36 通信装置
 37 バス

Claims (13)

  1.  1以上のクライアント装置と、データを記憶するN以上(Nは3以上の整数)のサーバ装置とを備える情報処理システムであって、
     前記クライアント装置は、
     前記データの変更内容を示すリクエストを前記サーバ装置に送信する送信部を備え、
     前記サーバ装置は、
     前記リクエストと、前記リクエストの変更内容に基づいて前記データを変更する順序を示す順序番号とを関連付けた履歴データと、前記データとを記憶する第1記憶部と、
     前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信する受信部と、
     前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成する生成部と、
     前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定する選択部と、
     選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する送信部と、
     前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更する変更部と、
     を備える情報処理システム。
  2.  前記第1閾値と前記第2閾値とは、N/2である
     請求項1に記載の情報処理システム。
  3.  前記選択部は、
     前記候補データの前記リクエストのうち前記変更内容が相異なるものがある場合、一の前記候補データを選択し、
     前記送信部は、
     選択された前記候補データを他の前記サーバ装置に送信する
     請求項1又は2に記載の情報処理システム。
  4.  前記変更部は、
     前記候補データの前記リクエストのうち、前記第1状態の前記リクエストを含む前記候補データと、前記第2状態の前記リクエストを含む前記候補データとが共にある場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを選択し、選択された前記候補データの前記リクエストの状態を第1状態に決定し、
     前記送信部は、
     選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する
     請求項1乃至3のいずれか1項に記載の情報処理システム。
  5.  前記変更部は、
     前記候補データの前記リクエストのうち、状態が前記第1状態の前記リクエストの数が第2閾値より大きい場合、一の前記候補データを選択し、
     前記送信部は、
     選択された前記候補データを他の前記サーバ装置に送信する
     請求項1乃至4のいずれか1項に記載の情報処理システム。
  6.  前記受信部は、
     自身の前記サーバ装置で前記候補データを決定していない場合、他の前記サーバ装置から受信した前記候補データに含まれるリクエストの状態を第1状態に決定し、自身の前記サーバ装置の前記候補データにする
     請求項1乃至5のいずれか1項に記載の情報処理システム。
  7.  前記サーバ装置は、
     前記候補データを一時的に記憶する第2記憶部を更に備え、
     前記受信部は、
     他の前記サーバ装置から受信した前記候補データを前記第2記憶部に記憶し、
     前記選択部は、
     前記選択部が選択しなかった前記リクエストを含む候補データを前記第2記憶部から削除し、
     前記変更部は、
     前記変更部が選択しなかった前記候補データを前記第2記憶部から削除する
     請求項1乃至6のいずれか1項に記載の情報処理システム。
  8.  前記受信部が他の前記サーバ装置から受信した前記候補データの前記現順序番号が、前記履歴データの現順序番号よりも大きい場合、前記第2記憶部の前記候補データを削除し、前記現順序番号を送信した他の前記サーバ装置に、前記履歴データの送信を依頼する同期部を
     更に備える請求項7に記載の情報処理システム。
  9.  前記受信部は、
     他の前記サーバ装置が前記履歴データを更新したときに、他の前記サーバ装置から前記現順序番号を受信し、
     前記同期部は、
     他の前記サーバ装置から受信した前記現順序番号が、前記履歴データの現順序番号よりも大きい場合、前記第2記憶部の前記候補データを削除し、前記現順序番号を送信した他の前記サーバ装置に、前記履歴データの送信を依頼し、
     前記変更部は、
     前記履歴データを更新したときに、前記現順序番号を1増やし、1増やした後の前記順序番号を他の前記サーバ装置に送信する
     請求項7又は8に記載の情報処理システム。
  10.  前記生成部は、
     初期値を設定したラウンド番号を更に含めて前記候補データを生成し、
     前記第2記憶部は、
     最新のラウンド番号を現ラウンド番号として更に記憶し、
     前記選択部は、
     選択した前記候補データの前記ラウンド番号を1増やすとともに、1増やした後の前記ラウンド番号を前記現ラウンド番号として第2記憶部に記憶し、
     前記変更部は、
     選択した前記候補データの前記ラウンド番号を1増やすとともに、1増やした後の前記ラウンド番号を前記現ラウンド番号として第2記憶部に記憶し、選択した前記候補データを使用して前記履歴データを更新するときに前記現ラウンド番号を初期値に戻し、
     前記同期部は、
     前記受信部が前記候補データを受信したときに、受信した前記候補データの前記ラウンド番号が、前記現ラウンド番号よりも大きい場合、前記第2記憶部の前記候補データを削除し、受信した前記候補データを前記第2記憶部に記憶するとともに、前記現ラウンド番号を受信した前記候補データの前記ラウンド番号にする
     請求項7乃至9のいずれか1項に記載の情報処理システム。
  11.  クライアント装置からデータの変更内容を示すリクエストを受信するサーバ装置であって、
     前記リクエストと、前記リクエストの変更内容に基づいて前記データを変更する順序を示す順序番号とを関連付けた履歴データと、前記データとを記憶する第1記憶部と、
     前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信する受信部と、
     前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成する生成部と、
     前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定する選択部と、
     選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する送信部と、
     前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更する変更部と、
     を備えるサーバ装置。
  12.  1以上のクライアント装置と、データを記憶するN以上(Nは3以上の整数)のサーバ装置とを備える情報処理システムの情報処理方法であって、
     クライアント装置が、前記データの変更内容を示すリクエストを前記サーバ装置に送信するステップと、
     サーバ装置が、前記リクエストと、前記リクエストの変更内容に基づいて前記データを変更する順序を示す順序番号とを関連付けた履歴データと、前記データとを記憶するステップと、
     サーバ装置が、前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信するステップと、
     サーバ装置が、前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成するステップと、
     サーバ装置が、前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定するステップと、
     サーバ装置が、選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信するステップと、
     サーバ装置が、前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更するステップと、
     を含む情報処理方法。
  13.  データの変更内容を示すリクエストと、前記リクエストを記憶する順序を示す順序番号とを関連付けた履歴データを記憶する第1記憶部を備え、クライアント装置から前記リクエストを受信するサーバ装置を、
     前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信する受信部と、
     前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成する生成部と、
     前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定する選択部と、
     選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する送信部と、
     前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更する変更部
     として機能させるためのプログラム。
PCT/JP2013/073847 2013-09-04 2013-09-04 情報処理システム、サーバ装置、情報処理方法及びプログラム WO2015033410A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2013/073847 WO2015033410A1 (ja) 2013-09-04 2013-09-04 情報処理システム、サーバ装置、情報処理方法及びプログラム
JP2015535209A JP6100384B2 (ja) 2013-09-04 2013-09-04 情報処理システム、サーバ装置、情報処理方法及びプログラム
US15/060,715 US10165086B2 (en) 2013-09-04 2016-03-04 Information processing system, server apparatus, information processing method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/073847 WO2015033410A1 (ja) 2013-09-04 2013-09-04 情報処理システム、サーバ装置、情報処理方法及びプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/060,715 Continuation US10165086B2 (en) 2013-09-04 2016-03-04 Information processing system, server apparatus, information processing method, and computer program product

Publications (1)

Publication Number Publication Date
WO2015033410A1 true WO2015033410A1 (ja) 2015-03-12

Family

ID=52627919

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/073847 WO2015033410A1 (ja) 2013-09-04 2013-09-04 情報処理システム、サーバ装置、情報処理方法及びプログラム

Country Status (3)

Country Link
US (1) US10165086B2 (ja)
JP (1) JP6100384B2 (ja)
WO (1) WO2015033410A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017088382A1 (zh) * 2015-11-25 2017-06-01 乐视控股(北京)有限公司 数据处理的方法和装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015140942A1 (ja) 2014-03-18 2015-09-24 株式会社東芝 情報処理システム、サーバ装置、情報処理方法およびプログラム
JP6203407B2 (ja) 2014-08-05 2017-09-27 株式会社東芝 整列装置、データ処理装置、プログラム、整列方法および多重化システム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010044553A (ja) * 2008-08-12 2010-02-25 Hitachi Ltd データ処理方法、クラスタシステム、及びデータ処理プログラム
JP2010152559A (ja) * 2008-12-24 2010-07-08 Toshiba Corp 分散システムおよび同システムの多重化制御方法
JP2011253390A (ja) * 2010-06-02 2011-12-15 Trytech Co Ltd 分散コンピューティングシステム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2534430B2 (ja) * 1992-04-15 1996-09-18 インターナショナル・ビジネス・マシーンズ・コーポレイション フォ―ルト・トレランスのあるコンピュ―タ・システム出力の合致を達成するための方法
US6178522B1 (en) 1998-06-02 2001-01-23 Alliedsignal Inc. Method and apparatus for managing redundant computer-based systems for fault tolerant computing
DE19921179C2 (de) 1999-05-07 2002-04-25 Astrium Gmbh Logikeinheit nach byzantinem Algorithmus, Rechnereinheit mit solcher Logikeinheit, Verbund aus Logik- oder Rechnereinheiten und Verfahren zum Betreiben eines solchen Verbunds
JP3831154B2 (ja) 1999-08-13 2006-10-11 株式会社東芝 プログラム多重化拡大方法
JP4060522B2 (ja) 2000-09-29 2008-03-12 株式会社東芝 分散コンピュータシステム及び同システムにおけるコンピュータ状態の多重化記憶方法
JP3655263B2 (ja) 2001-06-15 2005-06-02 株式会社東芝 分散システムおよび同システムの多重化制御方法
US7272632B2 (en) * 2001-06-15 2007-09-18 Kabushiki Kaisha Toshiba Distributed system and multiplexing control method for the system
JP4278434B2 (ja) * 2003-05-19 2009-06-17 パナソニック株式会社 通信装置、情報共有システムおよび情報共有方法
DE102004046292A1 (de) 2004-09-24 2006-03-30 Robert Bosch Gmbh Verfahren zur Durchführung eines Votings von redundanten Informationen
JP2007219598A (ja) 2006-02-14 2007-08-30 Nippon Telegr & Teleph Corp <Ntt> 多重化データベースシステム及びその同期化方法、データベースサーバ、並びに、データベースサーバプログラム
JP4956603B2 (ja) 2009-12-04 2012-06-20 株式会社東芝 分散システムおよび論理時間調整方法
JP5613119B2 (ja) 2011-07-26 2014-10-22 日本電信電話株式会社 マスター/スレーブシステム、制御装置、マスター/スレーブ切替方法、および、マスター/スレーブ切替プログラム
WO2015140942A1 (ja) 2014-03-18 2015-09-24 株式会社東芝 情報処理システム、サーバ装置、情報処理方法およびプログラム
JP6203407B2 (ja) 2014-08-05 2017-09-27 株式会社東芝 整列装置、データ処理装置、プログラム、整列方法および多重化システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010044553A (ja) * 2008-08-12 2010-02-25 Hitachi Ltd データ処理方法、クラスタシステム、及びデータ処理プログラム
JP2010152559A (ja) * 2008-12-24 2010-07-08 Toshiba Corp 分散システムおよび同システムの多重化制御方法
JP2011253390A (ja) * 2010-06-02 2011-12-15 Trytech Co Ltd 分散コンピューティングシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017088382A1 (zh) * 2015-11-25 2017-06-01 乐视控股(北京)有限公司 数据处理的方法和装置

Also Published As

Publication number Publication date
US20160191676A1 (en) 2016-06-30
JPWO2015033410A1 (ja) 2017-03-02
JP6100384B2 (ja) 2017-03-22
US10165086B2 (en) 2018-12-25

Similar Documents

Publication Publication Date Title
CN108173774B (zh) 一种客户端的升级方法及系统
US10225145B2 (en) Method and device for updating client
US8959144B2 (en) System and method for scalable data distribution
US20150012914A1 (en) Distributed update service
EP3629522B1 (en) Systems and methods for testing resilience of a distributed network
CN104866339A (zh) Fota数据的分布式持久化管理方法、系统和装置
JP2013157748A (ja) サービスバスシステム、サービスバス装置及び接続一意性保証方法
JP6405255B2 (ja) 通信システム、キュー管理サーバ、及び、通信方法
JP6100384B2 (ja) 情報処理システム、サーバ装置、情報処理方法及びプログラム
CN109445827A (zh) 一种游戏更新的方法及装置、电子设备、存储介质
US10216593B2 (en) Distributed processing system for use in application migration
CN103281356A (zh) 一种分发文件的方法及系统
CN111147605B (zh) 服务注册方法、装置和设备
CN109714430A (zh) 分布式缓存方法、装置、计算机系统及存储介质
US10817512B2 (en) Standing queries in memory
US20170300553A1 (en) System and methodology for propagating modifications in key-value pairs across a cluster of computers
US9342291B1 (en) Distributed update service
US20220383304A1 (en) Distributed network with consensus mechanism
JP2007272540A (ja) データ配信方法及びデータ配信システム
JP6063882B2 (ja) 仮想マシン配置システム及び方法
JP6233846B2 (ja) 可変長ノンスの生成
CN114996350A (zh) 一种区块链中的区块状态同步方法及第一节点
CN113032188B (zh) 确定主服务器的方法、装置、服务器及存储介质
US9942314B2 (en) System and method for optimizing web service availability with a node group agreement protocol
CN103281395A (zh) 一种基于客户端数量的数据片均分选择系统及方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13892939

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015535209

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13892939

Country of ref document: EP

Kind code of ref document: A1