WO2020148815A1 - 引継プログラム、引継方法、情報処理装置、および並列分散処理システム - Google Patents

引継プログラム、引継方法、情報処理装置、および並列分散処理システム Download PDF

Info

Publication number
WO2020148815A1
WO2020148815A1 PCT/JP2019/000977 JP2019000977W WO2020148815A1 WO 2020148815 A1 WO2020148815 A1 WO 2020148815A1 JP 2019000977 W JP2019000977 W JP 2019000977W WO 2020148815 A1 WO2020148815 A1 WO 2020148815A1
Authority
WO
WIPO (PCT)
Prior art keywords
plug
information processing
function
code
information
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/JP2019/000977
Other languages
English (en)
French (fr)
Inventor
岳 中川
泰彦 金政
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to PCT/JP2019/000977 priority Critical patent/WO2020148815A1/ja
Publication of WO2020148815A1 publication Critical patent/WO2020148815A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Definitions

  • the present invention relates to a takeover program, a takeover method, an information processing device, and a parallel distributed processing system.
  • a plug-in that includes a plurality of nodes and implements a function of processing data in each of the plurality of nodes is implemented, and data of each terminal device of a plurality of terminal devices is distributed and processed by the plurality of nodes.
  • one or more plug-ins that enable a device driver to support a function that is not locally supported in a function set are identified, and a plug-in is obtained with permission from the user. There is something to download. Further, for example, there is a technique in which a second plug-in corresponding to each peripheral device is arranged so as to be connected to an execution environment of an application via a first plug-in common to a plurality of peripheral devices. Further, for example, there is a technique of determining a plug-in module required for a predetermined content.
  • the present invention aims to make it possible to take over a function.
  • another information processing apparatus different from the own apparatus receives a request for taking over a predetermined function provided to a predetermined terminal apparatus, and the request is transmitted.
  • each information processing device of the plurality of information processing devices stores backup data in which the code of the plug-in that realizes each function of one or more functions provided by the information processing device is aggregated.
  • Each of the one or more functions provided by the other information processing device by obtaining backup data stored by the other information processing device from the external storage device, interpreting the obtained backup data, Extracting the code of the plug-in that realizes the predetermined function from the code of the plug-in that realizes, and a takeover program that provides the predetermined function to the predetermined terminal device based on the extracted code, a takeover A method, an information processing device, and a parallel distributed processing system are proposed.
  • FIG. 1 is an explanatory diagram illustrating an example of a takeover method according to an embodiment.
  • FIG. 2 is an explanatory diagram showing an example of the parallel distributed processing system 200.
  • FIG. 3 is a block diagram showing a hardware configuration example of the distributed node 201.
  • FIG. 4 is an explanatory diagram showing an example of the stored contents of the state table 410.
  • FIG. 5 is an explanatory diagram showing an example of the stored contents of the plug-in repository table 500.
  • FIG. 6 is a block diagram showing a functional configuration example of the information processing apparatus 110.
  • FIG. 7 is an explanatory diagram showing an example of updating the state table 410.
  • FIG. 8 is an explanatory diagram showing an example of managing plug-in data.
  • FIG. 1 is an explanatory diagram illustrating an example of a takeover method according to an embodiment.
  • FIG. 2 is an explanatory diagram showing an example of the parallel distributed processing system 200.
  • FIG. 3 is a block diagram showing a hardware configuration example of the
  • FIG. 9 is an explanatory diagram showing an example of backing up the state table 410 and the plug-in repository table 500.
  • FIG. 10 is an explanatory diagram (1) of the operation of the distributed node 201 when a failure occurs.
  • FIG. 11 is an explanatory diagram (part 2) of the operation of the distributed node 201 when a failure occurs.
  • FIG. 12 is an explanatory diagram (part 3) of the operation of the distributed node 201 when a failure occurs.
  • FIG. 13 is an explanatory diagram (Part 4) of the operation of the distributed node 201 when a failure occurs.
  • FIG. 14 is an explanatory diagram (Part 5) of the operation of the distributed node 201 when a failure occurs.
  • FIG. 10 is an explanatory diagram (1) of the operation of the distributed node 201 when a failure occurs.
  • FIG. 11 is an explanatory diagram (part 2) of the operation of the distributed node 201 when a failure occurs.
  • FIG. 12 is an explanatory diagram (part 3) of
  • FIG. 15 is an explanatory diagram (Part 6) of the operation of the distributed node 201 when a failure occurs.
  • FIG. 16 is an explanatory diagram showing an application example of the parallel distributed processing system 200.
  • FIG. 17 is an explanatory diagram showing a message flow in the application example.
  • FIG. 18 is an explanatory diagram (part 1) of a specific functional configuration example of the computer 1601 in the application example.
  • FIG. 19 is an explanatory diagram (part 2) showing a specific functional configuration example of the computer 1601 in the application example.
  • FIG. 20 is an explanatory diagram showing an example of various messages.
  • FIG. 21 is a flowchart showing an example of the overall processing procedure.
  • FIG. 22 is a flowchart showing an example of an event message processing procedure.
  • FIG. 23 is a flowchart showing an example of the state update processing procedure.
  • FIG. 24 is a flowchart showing an example of the plug-in processing procedure.
  • FIG. 25 is a flowchart showing an example of a control system event processing procedure.
  • FIG. 26 is a flowchart (part 1) showing an example of the plug-in addition processing procedure.
  • FIG. 27 is a flowchart (No. 2) showing an example of the plug-in addition processing procedure.
  • FIG. 28 is a flowchart (part 1) illustrating an example of a plug-in deletion processing procedure.
  • FIG. 29 is a flowchart (part 2) illustrating an example of the plug-in deletion processing procedure.
  • FIG. 30 is a flowchart showing an example of the checkpoint processing procedure.
  • FIG. 31 is a flowchart showing an example of the checkpoint storage processing procedure.
  • FIG. 32 is a flowchart showing an example of the recovery processing procedure.
  • FIG. 33 is a flowchart (No. 1) showing an example of the regeneration processing procedure.
  • FIG. 34 is a flowchart (part 2) illustrating an example of the regeneration processing procedure.
  • FIG. 35 is a flowchart (No. 3) showing an example of the regeneration processing procedure.
  • FIG. 1 is an explanatory diagram illustrating an example of a takeover method according to an embodiment.
  • the information processing device 110 is a computer that can operate as any one of a plurality of nodes included in the parallel distributed processing system.
  • the number i may be used to describe as “information processing device 110-i”.
  • Each node has a processing program that processes the processing target data, and processes the processing target data.
  • the processing program includes, for example, a main program that can call a plug-in that realizes a function of processing data to be processed.
  • the processing program can include, for example, a plug-in.
  • the plug-in is delivered from the service developer's computer to the node and added to the processing program, for example.
  • a node may be difficult for a node to take over the function that another node was in charge of. For example, when a node takes over a function provided by another node, it needs to acquire a plug-in that implements the function, but it may not be possible to acquire the plug-in and take over the function. is there.
  • the node cannot get the plug-in from the service developer's computer. ..
  • the node cannot acquire the plug-in from the specific node.
  • the parallel distributed processing system is not formed so that the nodes can directly communicate with each other, the node cannot directly acquire the plug-in from another node.
  • the node of the parallel distributed processing system takes over the function of the other node that processes the data to be processed, based on the backup data stored in the external storage device by the other node.
  • the possible inheritance method will be described.
  • the parallel distributed processing system 100 includes three information processing devices 110.
  • information processing device 110-1 when distinguishing the three information processing devices 110, they may be referred to as “information processing device 110-1,” “information processing device 110-2,” and “information processing device 110-3.”
  • the information processing device 110 has a processing program that processes data to be processed.
  • the processing program includes, for example, a main program that can call a plug-in that realizes a function of processing data to be processed.
  • the processing program can include, for example, a plug-in.
  • the information processing device 110 provides the function realized by the plug-in to any one of the plurality of terminal devices. Providing a function is, for example, allowing the data used by the function to be input, or allowing the data generated by the function to be acquired.
  • the information processing device 110 stores the plug-in execution condition and the plug-in code in response to the reception of the control message including the plug-in code, and adds the plug-in to the processing program.
  • the control message represents, for example, the execution condition of the plug-in to be added and the code of the plug-in in association with each other.
  • the execution condition of the plug-in is the occurrence of a specific event on a specific terminal device.
  • An event is, for example, a change in the state of a person or thing.
  • the state is a state, for example, speed.
  • the control message is transmitted from the computer 120 of the service developer to the information processing device 110.
  • the information processing device 110-1 stores the code of the plug-in P1 and the code of the plug-in P2.
  • the information processing apparatus 110-2 stores the code of the plug-in P3 and the code of the plug-in P4.
  • the information processing apparatus 110-3 stores the code of the plug-in P5 and the code of the plug-in P6.
  • the information processing apparatus 110 stores, for example, the execution condition of the plug-in using a state table described later in FIG.
  • the information processing apparatus 110 collects the plug-in code in a plug-in repository table described later with reference to FIG. 5, for example.
  • the information processing apparatus 110 stores, in a predetermined timing, backup data in which the code of a plug-in that realizes each function of one or more functions provided by the apparatus itself is collected in the external storage device 130.
  • the backup data is, for example, a snapshot of the plugin repository table.
  • the information processing device 110-1 stores the backup data b1 in which the code of the plug-in P1 and the code of the plug-in P2 are aggregated in the external storage device 130.
  • the information processing device 110-2 stores the backup data b2 in which the code of the plug-in P3 and the code of the plug-in P4 are integrated in the external storage device 130.
  • the information processing apparatus 110-3 stores the backup data b3 in which the code of the plug-in P5 and the code of the plug-in P6 are integrated in the external storage device 130.
  • the information processing device 110 accepts a request to take over a predetermined function provided to a predetermined terminal device by another information processing device 110 different from its own device.
  • the information processing device 110-3 receives a request that the information processing device 110-2 provided to a predetermined terminal device to take over a predetermined function realized by the plug-in P4.
  • the information processing device 110 acquires at least the backup data stored by the other information processing device 110 from the external storage device 130.
  • the information processing device 110-3 acquires the backup data b2 stored by the information processing device 110-2 from the external storage device 130.
  • the information processing device 110 interprets the acquired backup data and, of the plug-in code that realizes each function of one or more functions provided by another information processing device 110, a plug that realizes a predetermined function. Extract the in code. The interpretation is to make various data included in the backup data distinguishable according to the data format. The interpretation makes it possible to distinguish the plug-in code for each plug-in. Interpretation may include decoding. In the example of FIG. 1, the information processing device 110-3 interprets the backup data b2 and extracts the code of the plug-in P4 that realizes the predetermined function provided by the information processing device 110-2.
  • the information processing device 110 provides a predetermined function to a predetermined terminal device based on the extracted code.
  • the information processing device 110-3 provides a predetermined function to a predetermined terminal device based on the code of the plug-in P4.
  • the information processing apparatus 110 specifically performs an operation as shown in an operation example described later in FIGS. 7 to 15.
  • the information processing apparatus 110 can acquire the code of the plug-in that realizes the function provided by the other information processing apparatus 110, and can take over the function provided by the other information processing apparatus 110.
  • the information processing apparatus 110 acquires the plug-in code that realizes the function provided by the other information processing apparatus 110 even if it is difficult to acquire the plug-in code from the plug-in distributor. can do.
  • the information processing apparatus 110 may obtain the plug-in code that realizes the function provided by the other information processing apparatus 110, even if it is difficult to obtain the plug-in code from the other information processing apparatus 110, for example. Can be obtained.
  • the external storage device 130 stores backup data in which plug-in codes are aggregated, and even if it is difficult to obtain the plug-in codes by distinguishing each plug-in code, You can get the code of Inn. Therefore, the parallel distributed processing system 100 can be realized without adding a special function to the external storage device 130.
  • the parallel distributed processing system 100 can be realized, for example, even if the external storage device 130 does not have a function of interpreting the backup data and making the plug-in code distinguishable in plug-in units. Therefore, the parallel/distributed processing system 100 can be realized even in a situation where it is difficult for the external storage device 130 to search the backup data and extract the plug-in code for each plug-in. As a result, the parallel/distributed processing system 100 can use a storage area on the cloud or the like as the external storage device 130.
  • FIG. 2 is an explanatory diagram showing an example of the parallel distributed processing system 200.
  • the parallel distributed processing system 200 includes distributed nodes 201-1 to 201-N, a management node 202, a terminal device 203, a development node 204, and an external storage device 205.
  • the distributed nodes 201-1 to 201-N may be referred to as “distributed node 201” without distinguishing them.
  • the distributed node 201, the management node 202, the terminal device 203, the development node 204, and the external storage device 205 are connected via a wired or wireless network 210.
  • the network 210 is, for example, a LAN (Local Area Network), a WAN (Wide Area Network), the Internet, or the like.
  • the distributed node 201 is a computer that operates as the information processing device shown in FIG. Upon receiving the control message, the distributed node 201 adds or deletes the plug-in according to the control message.
  • the control message represents, for example, the execution condition of the plug-in to be added and the code of the plug-in in association with each other.
  • the execution condition of the plug-in is the occurrence of a specific event on a specific terminal device.
  • An event is, for example, a change in the state of a person or thing.
  • the state is a state, for example, speed.
  • the plugin code is executable.
  • the distributed node 201 when the distributed node 201 receives a control message, stores the execution condition of the plug-in and the code of the plug-in in association with each other using various tables described later in FIGS. 4 and 5. Specifically, the distributed node 201 stores the execution condition of the plug-in and the plug-in ID in association with each other using the state table 410 described later in FIG.
  • the distributed node 201 specifically stores a list 400 of the state table 410, which will be described later with reference to FIG. 4, including a plurality of state tables 410. Further, the distributed node 201 specifically stores the plug-in ID and the code of the plug-in in association with each other using a plug-in repository table 500 described later in FIG.
  • the distributed node 201 backs up various tables described later in FIGS. 4 and 5 in the external storage device 205.
  • the distributed node 201 Upon receiving the event message, the distributed node 201 executes the plug-in according to the event message.
  • the event message represents the event and the terminal device corresponding to the person or thing from which the event occurred.
  • the event message represents the state of a person or an object at the timing of an event such as a change of the state of the person or the object.
  • the distributed node 201 is, for example, a server or a PC (Personal Computer).
  • the management node 202 is a computer that receives an event message from the terminal device 203 and sends it to the distributed node 201. Further, the management node 202 receives the control message from the development node 204 and transmits the control message to the distributed node 201.
  • the management node 202 is, for example, a server or a PC.
  • the terminal device 203 is a computer corresponding to a person or thing that is the source of the event.
  • the terminal device 203 is, for example, a device held by a person.
  • the terminal device 203 is, for example, a device mounted on a mobile body.
  • the moving body is, for example, a car.
  • the terminal device 203 generates an event message in response to the occurrence of the event and transmits it to the management node 202.
  • the terminal device 203 is, for example, a PC, a tablet terminal, a smartphone, a wearable terminal, or the like.
  • the development node 204 is a computer that sends a control message to the management node 202.
  • the development node 204 transmits a control message to the management node 202 when, for example, the distributed node 201 is caused to add or delete a plug-in.
  • the development node 204 is, for example, a server, a PC, or the like.
  • the external storage device 205 is backed up from the distributed node 201 by various tables described later with reference to FIGS. 4 and 5.
  • the external storage device 205 is, for example, a storage device.
  • the external storage device 205 may be realized by, for example, a storage area on the cloud.
  • the management node 202 is a device different from the distributed node 201 has been described, but the present invention is not limited to this.
  • the management node 202 may be integrated with any of the distributed nodes 201.
  • the management node 202 may be integrated with the development node 204.
  • the network that connects the distributed node 201, the management node 202, and the development node 204 may be different from the network that connects the management node 202 and the terminal device 203.
  • FIG. 3 is a block diagram showing a hardware configuration example of the distributed node 201.
  • the distributed node 201 includes a CPU (Central Processing Unit) 301, a memory 302, a network I/F (Interface) 303, a recording medium I/F 304, and a recording medium 305.
  • each component is connected by a bus 300.
  • the CPU 301 controls the entire distributed node 201.
  • the memory 302 includes, for example, a ROM (Read Only Memory), a RAM (Random Access Memory), and a flash ROM. Specifically, for example, a flash ROM or a ROM stores various programs, and a RAM is used as a work area of the CPU 301. The program stored in the memory 302 is loaded into the CPU 301 to cause the CPU 301 to execute the coded processing.
  • the memory 302 stores, for example, various tables described later with reference to FIGS. 4 and 5.
  • the network I/F 303 is connected to the network 210 via a communication line, and is connected to another computer via the network 210.
  • the network I/F 303 administers an internal interface with the network 210 and controls input/output of data from/to another computer.
  • the network I/F 303 is, for example, a modem or a LAN adapter.
  • the recording medium I/F 304 controls data read/write with respect to the recording medium 305 under the control of the CPU 301.
  • the recording medium I/F 304 is, for example, a disk drive, an SSD (Solid State Drive), a USB (Universal Serial Bus) port, or the like.
  • the recording medium 305 is a non-volatile memory that stores data written under the control of the recording medium I/F 304.
  • the recording medium 305 is, for example, a disk, a semiconductor memory, a USB memory, or the like.
  • the recording medium 305 may be removable from the distributed node 201.
  • the recording medium 305 may store various tables, which will be described later with reference to FIGS. 4 and 5, for example.
  • the distributed node 201 may have, for example, a keyboard, a mouse, a display, a printer, a scanner, a microphone, a speaker, etc., in addition to the above-described components. Further, the distributed node 201 may include a plurality of recording medium I/Fs 304 and recording media 305. Further, the distributed node 201 may not have the recording medium I/F 304 or the recording medium 305.
  • the state table 410 is realized by a storage area such as the memory 302 or the recording medium 305 of the distributed node 201 shown in FIG. 3, for example.
  • FIG. 4 is an explanatory diagram showing an example of the stored contents of the state table 410.
  • the state table 410 has fields of ID, state name, state content, and plug-in ID.
  • the state table 410 stores state information as a record by setting information in each field.
  • an ID for identifying the terminal device corresponding to the person or thing that generated the event is set.
  • the state name is set in the state name field as information indicating the type of event.
  • the execution condition of the plug-in is set by the fields of ID and state name.
  • the state content is set in the state content field as information indicating the content of the event.
  • the plugin ID is set in the plugin ID field as information for identifying the plugin.
  • the plugin ID is, for example, a hash value of the plugin.
  • the state table 410 is generated for each ID, for example.
  • the information processing apparatus for example, generates the state table 410 for each ID and stores the list 400 of the state table 410. Further, in the following description, the state table 410 may be illustrated by using a simplified graphic 420. In the example of FIG. 4, the figure 420 represents, for example, the state table 410 that associates the ID “5”, the state name “S”, and the plug-in ID “B”.
  • the plug-in repository table 500 is realized, for example, by a storage area such as the memory 302 or the recording medium 305 of the distributed node 201 shown in FIG.
  • FIG. 5 is an explanatory diagram showing an example of the stored contents of the plug-in repository table 500.
  • the plug-in repository table 500 has fields for a plug-in ID, the number of references, and plug-in data.
  • the plug-in repository table 500 stores plug-in information as a record by setting information in each field.
  • Plugin ID is set in the plugin ID field as information for identifying the plugin.
  • the number of execution conditions of the plug-ins set in the state table 410 is set.
  • Plug-in data is set in the plug-in data field.
  • the plug-in data is the code of an executable plug-in.
  • the hardware configuration example of the management node 202 is the same as the hardware configuration example of the distributed node 201 shown in FIG.
  • the hardware configuration example of the terminal device 203 is similar to the hardware configuration example of the distributed node 201 shown in FIG.
  • the terminal device 203 may further include a sensor device.
  • the sensor device detects the state of the terminal device 203, for example. Specifically, the sensor device detects at least one of the position, movement, and orientation of the terminal device 203.
  • the sensor device is specifically realized by at least one of an acceleration sensor, a geomagnetic sensor, an optical sensor, a vibration sensor, and the like.
  • the sensor device may be realized by a GPS (Global Positioning System) receiver and detect the GPS coordinates of the terminal device 203.
  • GPS Global Positioning System
  • the sensor device may acquire biometric information, for example.
  • the sensor device acquires, for example, as biological information, information about body temperature, pulse, heartbeat, respiration, and the like.
  • the sensor device may acquire, for example, as biometric information, information regarding a fingerprint, a vein, a facial feature, a voiceprint, a palm shape, a retina, an iris, and the like.
  • the sensor device may acquire image information, for example. Thereby, the sensor device can detect the state.
  • the hardware configuration example of the development node 204 is similar to the hardware configuration example of the distributed node 201 shown in FIG.
  • FIG. 6 is a block diagram showing a functional configuration example of the information processing apparatus 110.
  • the information processing device 110 includes a storage unit 600, an acquisition unit 601, an update unit 602, an extraction unit 603, an execution unit 604, and an output unit 605.
  • the storage unit 600 is realized by a storage area such as the memory 302 and the recording medium 305 illustrated in FIG. 3, for example.
  • the case where the storage unit 600 is included in the information processing device 110 will be described below, but the present invention is not limited to this.
  • the storage unit 600 may be included in a device different from the information processing device 110, and the storage content of the storage unit 600 may be referred to by the information processing device 110.
  • the acquisition unit 601 to the output unit 605 function as an example of a control unit. Specifically, the acquisition unit 601 to the output unit 605 cause the CPU 301 to execute a program stored in a storage area such as the memory 302 or the recording medium 305 illustrated in FIG. 3, or the network I/F 303, for example. To realize that function.
  • the processing result of each functional unit is stored in a storage area such as the memory 302 or the recording medium 305 illustrated in FIG. 3, for example.
  • the storage unit 600 stores various information that is referred to or updated in the processing of each functional unit.
  • the storage unit 600 stores the execution condition of the plug-in and the plug-in data of the plug-in.
  • a plug-in is a subprogram that can be called from the main program.
  • the execution condition of the plug-in is the occurrence of a specific event on the specific terminal device 203.
  • the execution condition of the plug-in is expressed by the ID of the terminal device 203 and the state name, for example.
  • An event is, for example, a change in the state of a person or thing.
  • the state is a state, for example, speed.
  • the plug-in data is the code of an executable plug-in.
  • the plug-in data may be encoded and stored, for example.
  • the storage unit 600 stores the execution condition of the plug-in in association with the plug-in using the state table 410 shown in FIG. 4, for example.
  • the storage unit 600 specifically stores the ID of the terminal device 203, the state name, the state content, and the plug-in ID in association with each other using the state table 410 shown in FIG.
  • the storage unit 600 collects, for example, plug-in data in the plug-in repository table 500 shown in FIG. Specifically, the storage unit 600 associates the plug-in ID, the reference number, and the plug-in data with each other and collects them in the plug-in repository table 500 shown in FIG. Accordingly, the storage unit 600 can make the plug-in corresponding to the event executable.
  • the acquisition unit 601 acquires various types of information used in the processing of each functional unit.
  • the acquisition unit 601 stores the acquired various information in the storage unit 600 or outputs it to each functional unit. Further, the acquisition unit 601 may output various information stored in the storage unit 600 to each functional unit.
  • the acquisition unit 601 acquires various kinds of information based on, for example, a user's operation input.
  • the acquisition unit 601 may receive various kinds of information from, for example, a device different from its own device.
  • the acquisition unit 601 receives the first control message.
  • the first control message is a request to add a plugin.
  • the first control message represents, for example, the execution condition of the plug-in to be added and the plug-in data in association with each other.
  • the first control message is transmitted, for example, from the management node 202 to the distributed node 201 that operates as the information processing device 110.
  • the first control message may not be left in the management node 202 after transmission.
  • the acquisition unit 601 receives the second control message.
  • the second control message is a request to delete the plugin.
  • the second control message represents the execution condition of the plug-in to be deleted and the plug-in data in association with each other.
  • the second control message is transmitted, for example, from the management node 202 to the distributed node 201 that operates as the information processing device 110.
  • the acquisition unit 601 receives the event message.
  • the event message represents the event and the terminal device 203 corresponding to the person or thing from which the event occurred.
  • the event message includes, for example, the ID of the terminal device 203 and the key-value pair.
  • the key is information indicating the type of event.
  • the key corresponds to the state name, for example.
  • value is information indicating the content of the event. value corresponds to the state content, for example.
  • the acquisition unit 601 receives a synchronization message that is periodically issued.
  • the synchronization message is, for example, a barrier message.
  • the barrier message represents an instruction to back up the storage content of the storage unit 600.
  • the barrier message represents a backup instruction for failure recovery by the distributed checkpoint.
  • the backup is to save in the external storage device 205 as a checkpoint.
  • the barrier message is transmitted from the management node 202, for example.
  • the acquisition unit 601 receives a request to take over a predetermined function that another information processing apparatus 110 has provided to a predetermined terminal device 203.
  • a request to take over a predetermined function may be referred to as a “takeover request”.
  • the takeover request includes, for example, the identifier of the predetermined terminal device 203.
  • the identifier is, for example, an ID.
  • the takeover request includes an execution condition of a plug-in that realizes each function of one or more functions assigned to the information processing apparatus 110.
  • the execution condition of the plug-in includes the ID of the terminal device 203 that is a partner who provides the function.
  • the takeover request is transmitted from the management node 202, for example.
  • the update unit 602 stores the plug-in in the storage unit 600 or deletes the plug-in from the storage unit 600. For example, when the updating unit 602 receives the first control message, the updating unit 602 stores the execution condition of the plug-in and the plug-in data, which are specified by the received first control message, in the storage unit 600 in association with each other. Specifically, the update unit 602 identifies the ID of the terminal device 203, the state name, and the plug-in data from the received first control message, and calculates the plug-in ID and the reference number. The plug-in ID is a hash value of plug-in data. Then, the updating unit 602 stores the state information in which the ID of the terminal device 203, the state name, and the plug-in ID are associated with each other using the state table 410 illustrated in FIG. 4.
  • the update unit 602 stores, for example, the plug-in information in which the plug-in ID, the reference number, and the plug-in data are associated with each other in the plug-in repository table 500 shown in FIG. As a result, the updating unit 602 can add a new plug-in to the processing program in response to receiving the first control message, and provides the terminal device 203 with a new function realized by the new plug-in. can do.
  • the updating unit 602 deletes the plug-in data stored in the storage unit 600 in association with the execution condition of the plug-in specified by the received second control message. Specifically, the updating unit 602 identifies the ID of the terminal device 203, the state name, and the plug-in data from the received second control message, and calculates the plug-in ID. Then, the updating unit 602 deletes the state information that associates the ID of the terminal device 203, the state name, and the plug-in ID from the state table 410 illustrated in FIG. 4. The updating unit 602 also decrements the reference number according to the deletion.
  • the updating unit 602 shows the plug-in information in which the plug-in ID, the reference number that became 0, and the specified plug-in data are associated with each other, in FIG. Delete from the plugin repository table 500.
  • the update unit 602 can delete the plug-in from the processing program.
  • the updating unit 602 Upon receiving the synchronization message, the updating unit 602 backs up the storage content of the storage unit 600. Specifically, the backup is to save in the external storage device 205 as a checkpoint.
  • the update unit 602 may, for example, externally store backup data in which correspondence information that associates plug-in data with identifiers of plug-ins that realize respective functions of one or more functions provided by the information processing apparatus 110 is externally stored. It is stored in the storage device 205.
  • the plug-in identifier is, for example, a plug-in ID.
  • the backup data is, for example, the plug-in data of a plug-in that realizes each function of one or more functions provided by the information processing apparatus 110, and is divided into a predetermined data format and aggregated.
  • the backup data is, for example, encrypted and aggregated plug-in data of a plug-in that realizes each function of one or more functions provided by the information processing apparatus 110.
  • the update unit 602 stores the snapshot of the plug-in repository table 500 in the external storage device 205 in association with the checkpoint number and the identifier of the self device.
  • the update unit 602 may include a plug-in ID of a plug-in that realizes the function and an ID of the terminal device 203 to which the function is provided. Correspondence information associated with and is stored in the external storage device 205. Specifically, the update unit 602 stores the state table 410 in the external storage device 205 in association with the checkpoint number, the identifier of the own device, and the ID of the state table 410.
  • the updating unit 602 saves the state table 410 and the snapshot of the plug-in repository table 500, and increments the checkpoint number. As a result, the updating unit 602 can perform backup and can acquire the state table 410 and the plug-in repository table 500.
  • the updating unit 602 may regularly back up the storage content of the storage unit 600 regardless of the synchronization message. Specifically, the updating unit 602 saves the state table 410 and the snapshot of the plug-in repository table 500 in the external storage device 205 each time a predetermined time elapses. As a result, the updating unit 602 can perform backup and can acquire the state table 410 and the plug-in repository table 500.
  • the extraction unit 603 acquires the storage content of the external storage device 205.
  • the extracting unit 603 acquires, from the external storage device 205, the backup data stored by the other information processing apparatus 110 that provided the takeover function.
  • the extraction unit 603 acquires, for example, from the external storage device 205, backup data that is stored by the other information processing device 110 that has provided the function to take over and that aggregates the first correspondence information.
  • the first correspondence information associates the plug-in ID and the plug-in data of the plug-in that realizes each function of one or more functions provided by the other information processing apparatus 110.
  • the first correspondence information is, for example, a snapshot of the plugin repository table 500.
  • the extraction unit 603 snaps the repository table associated with the combination of the identifier of the other information processing apparatus 110 that provided the function to be taken over from the external storage device 205 and the latest checkpoint number. Get a shot. Accordingly, the extraction unit 603 can acquire the plug-in data of the plug-in that realizes the function to be taken over.
  • the extraction unit 603 also acquires, from the external storage device 205, the backup data stored by itself. Specifically, the extraction unit 603 acquires, from the external storage device 205, a snapshot of the repository table associated with the combination of the own device identifier and the latest checkpoint number. Accordingly, the extraction unit 603 can obtain plug-in data of a plug-in that realizes the function provided by the own device.
  • the extraction unit 603 acquires the correspondence information that is stored by the other information processing apparatus 110 that has provided the function to take over and that associates the plug-in ID with the ID of the terminal device 203.
  • the extraction unit 603 acquires, for example, the second correspondence information stored by another information processing device 110 that has provided the function to take over.
  • the second correspondence information is, for each function of one or more functions provided by another information processing apparatus 110, a plug-in ID of a plug-in that realizes the function and an ID of the terminal device 203 that provides the function.
  • the second correspondence information is, for example, the state table 410 or the state information of the state table 410.
  • the extraction unit 603 stores the latest checkpoint number stored in the external storage device 205, the identifier of another information processing apparatus 110 that has provided the function to take over, and the terminal device that provides the function to take over.
  • the state information corresponding to the combination with the ID of 203 is acquired.
  • the extraction unit 603 can reflect the state information regarding the function to be inherited among the functions assigned to the own device in the state table 410.
  • the extraction unit 603 acquires the correspondence information stored by the own device and in which the plug-in ID and the ID of the terminal device 203 are associated with each other. Specifically, the extraction unit 603 is a combination of the latest checkpoint number stored in the external storage device 205, the identifier of the own device, and the ID of the terminal device 203 that provides the function assigned to the own device. Get the state information corresponding to. As a result, the extraction unit 603 can reflect the state information regarding the function assigned to the own device in the state table 410.
  • the extraction unit 603 reflects the acquired state information in the state table 410.
  • the extraction unit 603, for example, overwrites the acquired state information on the state information of the state table 410 or adds it to the state table 410.
  • the extraction unit 603 may initialize the state table 410 and recreate the state table 410 based on the acquired state information. Accordingly, the extraction unit 603 can reflect the state information regarding the function to be taken over in the state table 410. Further, the extraction unit 603 can restore the state information in the state table 410 to the state at the time of backup.
  • the extraction unit 603 interprets the backup data, extracts the plug-in data, and stores it in the storage unit 600.
  • the extraction unit 603, for example, interprets the acquired backup data and extracts a predetermined function from the plug-in data of the plug-in that realizes each function of one or more functions provided by the other information processing apparatus 110. Extract the plug-in data of the plug-in to be realized.
  • the extraction unit 603 interprets the acquired backup data, refers to the acquired second correspondence information, and based on the ID of the predetermined terminal device 203 included in the takeover request, the first correspondence information. Of these, the plug-in data of the plug-in that realizes the predetermined function is extracted.
  • the extraction unit 603 interprets the acquired backup data and generates a repository table included in another information processing apparatus 110.
  • the extraction unit 603 refers to the state table 410 that reflects the state information, and identifies the ID of the predetermined terminal device 203 included in the takeover request and the plug-in ID associated with the state name.
  • the extraction unit 603 extracts the plug-in data associated with the specified plug-in ID from the plug-in repository table 500 included in the other information processing device 110.
  • the extraction unit 603 sets the extracted plug-in data in the plug-in repository table 500 of its own device. Thereby, the extraction unit 603 can realize a predetermined function to be inherited.
  • the extraction unit 603 interprets the acquired backup data, extracts plug-in data of a plug-in that realizes each function of one or more functions provided by the own device, and stores the plug-in data in the storage unit 600, for example. You may.
  • the extraction unit 603 interprets the acquired backup data and generates the past plug-in repository table 500 that the device itself has.
  • the extraction unit 603 refers to the state table 410 that reflects the state information, and identifies the ID of the terminal device 203 included in the takeover request and the plug-in ID associated with the state name.
  • the extraction unit 603 extracts the plug-in data associated with the specified plug-in ID from the past plug-in repository table 500 that the device itself has.
  • the extraction unit 603 sets the extracted plug-in data in the plug-in repository table 500 of its own device. Thereby, the extraction unit 603 can realize the function assigned to the own device.
  • the extraction unit 603 may obtain the backup data stored by each information processing device 110 from the external storage device 205.
  • the extraction unit 603 interprets the acquired backup data and replaces the plug-in data of the plug-in that realizes each function of one or more functions provided by each information processing apparatus 110 with the plug-in of the overlapping plug-in.
  • List information is created by integrating the data.
  • the extraction unit 603 extracts plug-in data of a plug-in that realizes a predetermined function from the list information and stores it in the storage unit 600.
  • the extraction unit 603 extracts, for example, plug-in data of a plug-in that realizes each function of one or more functions assigned to the own device from the list information, and stores the plug-in data in the storage unit 600. Thereby, the extraction unit 603 can realize the function assigned to the own device.
  • the execution unit 604 executes the plugin based on the plugin data stored in the storage unit 600. For example, when receiving the event message, the execution unit 604 executes the plug-in based on the plug-in data stored in the storage unit 600 in association with the event specified from the received event message.
  • the execution unit 604 refers to the state table 410 and identifies the plug-in ID associated with the ID of the terminal device 203 of the event message and the state name corresponding to the key of the key-value pair. ..
  • the execution unit 604 refers to the plug-in repository table 500, and executes the plug-in based on the plug-in data associated with the plug-in ID. As a result, the execution unit 604 can process the event message.
  • the execution unit 604 since the plug-in data extracted by the extraction unit 603 is stored in the storage unit 600, the execution unit 604 can realize the inherited predetermined function, and the predetermined function is executed by the predetermined terminal device 203. Can be provided.
  • the output unit 605 outputs the execution result of the plug-in.
  • the output format is, for example, display on a display, print output to a printer, transmission to an external device by the network I/F 303, or storage in a storage area such as the memory 302 or the recording medium 305. Thereby, the output unit 605 can make the execution result of the plug-in available.
  • the output unit 605 may output the processing result of any functional unit.
  • the output unit 605 can notify the user of the processing result of any of the functional units, and can assist the management and operation of the information processing apparatus 110, for example, the update of the setting value of the information processing apparatus 110. Therefore, the convenience of the information processing apparatus 110 can be improved.
  • FIG. 7 is an explanatory diagram showing an example of updating the state table 410.
  • the development node 204 transmits a control message to the distributed node 201 via the management node 202 based on the operation input of the service developer.
  • the control message represents a plug-in addition, and is a request to add the plug-in D to the distributed node 201.
  • the distributed node 201 Upon receiving the control message, the distributed node 201 adds, to the state table 410, state information in which the execution condition of the plugin D and the plugin ID of the plugin D are associated with each other, based on the control message.
  • the execution condition is an event in the terminal device 203 having the ID “X”.
  • the event is, for example, a change in driving time. Therefore, the state name indicating the type of event is the driving time.
  • the distributed node 201 can update the state table 410 by associating the state in the predetermined terminal device 203 with the plug-in. Then, the distributed node 201 can implement a service by a plug-in corresponding to a change in state in a predetermined terminal device 203.
  • the service is, for example, a speed warning or a long-time driving warning.
  • the distributed node 201 stores and manages the plugin data in the plugin repository table 500.
  • the distributed node 201 stores the plug-in data of the plug-in D in the plug-in repository table 500.
  • FIG. 8 is an explanatory diagram showing an example of managing plug-in data.
  • the distributed node 201 stores plug-in information in which a plug-in ID, a reference number, and plug-in data are associated with each other in the plug-in repository table 500, and manages the plug-in data.
  • the reference number is obtained by counting the number of execution conditions associated with the plug-in ID in the entire list 400 of the state table 410.
  • One plug-in repository table 500 is stored for each distributed node 201.
  • FIG. 9 is an explanatory diagram showing an example of backing up the state table 410 and the plug-in repository table 500.
  • the distributed node 201 saves the list 400 of the state table 410 and the snapshot of the plug-in repository table 500 in the external storage device 205 at regular intervals or according to an instruction from the management node 202. As a result, the distributed node 201 can take over the function between the distributed nodes 201.
  • 10 to 15 are explanatory diagrams showing the operation of the distributed node 201 when a failure occurs.
  • a failure occurs in the distributed node 201-2 and it becomes impossible to provide the function. Therefore, it is desired that the distributed node 201-1 and the distributed node 201-3 take over the function provided by the distributed node 201-2.
  • the management node 202 transmits to the distributed node 201-1 a request for taking over the function provided by the distributed node 201-2 and corresponding to the ID “3” of the terminal device 203. Further, the management node 202 transmits to the distributed node 201-3 a request for taking over the function provided by the distributed node 201-2 and corresponding to the ID “4” of the terminal device 203. Now, the operation of the distributed node 201-3 that has received the request will be described with reference to FIG.
  • the distributed node 201-3 acquires, as Step 1, from the external storage device 205, state information regarding a plug-in that implements each function of one or more functions allocated to the own device including a function to be inherited.
  • the distributed node 201-3 regenerates the list 400 of the state table 410 from the acquired state information.
  • Step 1 A specific example of Step 1 will be described later with reference to FIG.
  • the distributed node 201-3 calculates the reference number for each plugin based on the list 400 of the regenerated state table 410 as Step 2, and regenerates the plugin repository table 500.
  • Step 2 A specific example of Step 2 will be described later with reference to FIG.
  • the distributed node 201-3 acquires the snapshots 1101 to 1103 of the plug-in repository table 500 stored in each distributed node 201 from the external storage device 205 as Step 3, and generates list information in which the plug-in information is summarized. .. A specific example of Step 3 will be described later with reference to FIG.
  • the distributed node 201-3 acquires the plug-in data from the list information and sets it if there is plug-in information in the plug-in repository table 500 where the plug-in data is empty, as Step 4.
  • Step 4 A specific example of Step 4 will be described later with reference to FIG. Here, the description moves to FIG.
  • the distributed node 201-3 acquires, from the external storage device 205, the state information corresponding to the ID “5, 6” of the terminal device 203 that was allocated to itself. Further, the distributed node 201-3 acquires the state information corresponding to the ID “4” of the terminal device 203 regarding the plug-in that realizes the function to be taken over. The distributed node 201-3 regenerates the list 400 of the state table 410 based on the acquired state information. Next, the description moves to FIG.
  • the distributed node 201-3 calculates the reference number “2” corresponding to the plug-in ID “B” based on the list 400 of the regenerated state table 410 and sets it in the plug-in repository table 500. ..
  • the distributed node 201-3 overwrites the plug-in information with the reference number “2” because the plug-in repository table 500 already has the plug-in information corresponding to the plug-in ID “B”, for example.
  • the distributed node 201-3 calculates the reference number “1” corresponding to the plug-in ID “C” based on the regenerated list 400 of the state table 410 and sets it in the plug-in repository table 500.
  • the distributed node 201-3 associates the plug-in ID “C” with the reference number “1” because the plug-in repository table 500 does not yet have the plug-in information corresponding to the plug-in ID “C”. Add plugin information.
  • the distributed node 201-3 calculates the reference number “1” corresponding to the plug-in ID “D” based on the regenerated list 400 of the state table 410, and sets it in the plug-in repository table 500.
  • the distributed node 201-3 overwrites the plug-in information with the reference number “1” because the plug-in repository table 500 already has the plug-in information corresponding to the plug-in ID “D”, for example.
  • the distributed node 201-3 does not have the plug-in data with the plug-in ID “C”.
  • the distributed node 201-3 acquires the snapshots 1101 to 1103 of the plug-in repository table 500 stored in each distributed node 201 from the external storage device 205 and generates list information in which the plug-in information is summarized. To do.
  • the distributed node 201-3 searches the list information for plug-in data with the plug-in ID “C” that the distributed node 201-3 does not have. Next, the description moves to FIG.
  • the distributed node 201-3 when the distributed node 201-3 finds the plug-in data with the plug-in ID “C”, it sets the plug-in information corresponding to the plug-in ID “C” in the plug-in repository table 500. As a result, the distributed node 201-3 can acquire the plug-in data of the plug-in that realizes the function provided by the distributed node 201-2, and takes over the function provided by the distributed node 201-2. be able to.
  • the distributed node 201 takes over the function provided by another distributed node 201 in response to the failure of the parallel distributed processing system 200 has been described, but the present invention is not limited to this.
  • the distributed node 201 may take over the function provided by another distributed node 201.
  • the distributed node 201-3 uses the plug-in repository table 500 before the failure and uses the plug-in data set in the plug-in repository table 500 has been described, but the present invention is not limited to this.
  • the distributed node 201-3 may delete the plug-in repository table 500 before the failure and regenerate the plug-in repository table 500.
  • FIG. 16 is an explanatory diagram showing an application example of the parallel distributed processing system 200.
  • the parallel distributed processing system 200 uses Apache Link as a framework, for example.
  • the parallel distributed processing system 200 includes computers 1601-1 to 1601-N corresponding to the above-mentioned distributed node 201, a computer 1602 as a master node, and a computer 1603 corresponding to the above-mentioned management node 202.
  • the computers 1601-1 to 1601-N may be simply referred to as “computer 1601” without making a distinction.
  • the computer 1601 operates the Flank Slave Runtime and the distributed node software.
  • the computer 1601 realizes the operation as shown in the above-described operation example as an Apache Flink job.
  • the computer 1602 operates the Link Slave Runtime.
  • the computer 1603 has a message queue, receives an event message, and sends it to the computer 1601.
  • the computers 1602 are connected by, for example, an inter-cluster communication network 1610.
  • the computers 1602 and 1603 are connected by, for example, an inter-cluster communication network 1610.
  • FIG. 17 is an explanatory diagram showing a message flow in an application example. As shown in FIG. 17, an event message and a control message are transmitted from the computer 1603 to the computer 1601.
  • the computer 1601 has a character string interpretation block 1701 and a virtual object block 1702.
  • the character string interpretation block 1701 interprets the character string of the received event message or control message and determines the destination of the received event message or control message. Then, the character string interpretation block 1701 transmits the received event message or control message to the virtual object block 1702 of its own device or the virtual object block 1702 of another device.
  • the virtual object block 1702 processes event messages and control messages.
  • the virtual object block 1702 specifically processes the event message and the control message so as to realize the operation as shown in the above-described operation example.
  • 18 and 19 description will be given of a specific functional configuration example for realizing the operation shown in the above operation example.
  • the character string interpretation block 1701 includes a character string interpretation module 1801 and a destination determination module 1802.
  • the character string interpretation block 1701 converts the JSON character string of the received event message or control message into an internal representation and outputs it to the destination determination module 1802.
  • the destination determination module 1802 determines the destination of the received event message or control message based on the internal representation, and sends it to the virtual object block 1702 of its own device or the virtual object block 1702 of another device.
  • the virtual object block 1702 has a list 1920 of a state table 1921 and a plug-in repository table 1930.
  • the state table 1921 is similar to the state table 410 shown in FIG.
  • the plugin repository table 1930 is similar to the plugin repository table 500 shown in FIG.
  • the virtual object block 1702 has a message discrimination unit 1911, a control message processing unit 1912, an event message processing unit 1913, a checkpoint management unit 1914, and a plug-in repository regenerating unit 1915.
  • the message determination unit 1911 accepts input of any one of an event message 1901 and a control message 1902 for adding or deleting a plug-in.
  • the message discrimination unit 1911 discriminates the type of the input message and delivers it to the control message processing unit 1912 or the event message processing unit 1913.
  • the control message processing unit 1912 interprets the control message 1902 for adding or deleting the plug-in.
  • the control message processing unit 1912 extracts, for example, the ID, the target state name, and the plug-in data of the plug-in to be added from the control message 1902 for adding the plug-in.
  • the control message processing unit 1912 updates the list 1920 of the state table 1921 and the plug-in repository table 1930 based on the extracted information.
  • the control message processing unit 1912 extracts, for example, the ID, the target state name, and the plug-in data of the plug-in to be deleted from the control message 1902 that deletes the plug-in.
  • the control message processing unit 1912 updates the list 1920 of the state table 1921 and the plug-in repository table 1930 based on the extracted information.
  • the event message processing unit 1913 interprets the event message 1901 and extracts an ID and one or more key-value pairs.
  • the event message processing unit 1913 identifies the state table 1921 corresponding to the extracted ID.
  • the event message processing unit 1913 updates the identified state table 1921 with the accepted key-value pair.
  • the event message processing unit 1913 determines that the state has changed if any of the state contents has changed. When the state changes, the event message processing unit 1913 executes the plug-in based on the plug-in data.
  • the checkpoint management unit 1914 increments the checkpoint number at regular time intervals.
  • the checkpoint management unit 1914 stores the list 1920 of the state table 1921 and the snapshot of the plug-in repository table 1930 in the external storage device 205 in association with the checkpoint number and the identifier of the self device.
  • the plug-in repository regenerating unit 1915 acquires the list 1920 of the state table 1921 and the snapshot of the plug-in repository table 1930 stored in the external storage device 205.
  • the plug-in repository regenerating unit 1915 regenerates the list 1920 of the state table 1921 and the snapshot of the plug-in repository table 1930 based on the acquired information.
  • FIG. 20 is an explanatory diagram showing an example of various messages.
  • the event message 1901 has fields of ID and one or more states.
  • the state is a key-value pair.
  • An ID is set in the ID field as information for identifying the terminal device 203 that is the source of the event.
  • a key-value pair is set in the field of the key-value pair.
  • the key is information corresponding to the state name and indicating the type of event.
  • value is a feature quantity corresponding to the state content and indicating the state of the state.
  • the state is, for example, speed.
  • the feature amount is, for example, a speed value.
  • the control message 1902 has fields of ID, target state name, operation type, and plug-in data.
  • An ID is set in the ID field as information for identifying the terminal device 203 that is the source of the event.
  • the target state name field the target state name is set as information indicating the type of event that is the execution condition of the plug-in.
  • the operation type field "add plugin” or "delete plugin” is set as the message type.
  • plug-in data field plug-in data that is the execution format data of the plug-in is set.
  • FIG. 21 is a flowchart showing an example of the overall processing procedure.
  • the distributed node 201 waits until the arrival of a message (step S2101).
  • the distributed node 201 determines whether the received message is a control message (step S2102). Here, when it is not the control message but the event message (step S2102: No), the distributed node 201 shifts to the processing of step S2103. On the other hand, if the message is a control message (step S2102: YES), the distributed node 201 moves to the process of step S2104.
  • step S2103 the distributed node 201 executes event message processing described later in FIG. 22 (step S2103). Then, the distributed node 201 returns to the processing of step S2101.
  • step S2104 the distributed node 201 executes control system event processing described later in FIG. 25 (step S2104). Then, the distributed node 201 returns to the processing of step S2101.
  • Event message processing procedure an example of the event message processing procedure executed by the distributed node 201 will be described with reference to FIG.
  • the event message processing is realized by, for example, the CPU 301 shown in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • FIG. 22 is a flowchart showing an example of an event message processing procedure.
  • the distributed node 201 selects the state table 410 that has not been selected from the list 400 of the state table 410 (step S2201).
  • the distributed node 201 determines whether or not the ID of the selected state table 410 matches the ID of the accepted event message (step S2202).
  • step S2202: Yes the distributed node 201 shifts to the processing of step S2206.
  • step S2202: No the distributed node 201 shifts to the processing of step S2203.
  • step S 2203 the distributed node 201 determines whether or not all the state tables 410 have been selected from the list 400 of the state table 410 (step S 2203 ).
  • step S2203: No when there is an unselected state table 410 (step S2203: No), the distributed node 201 returns to the process of step S2201.
  • step S2203: Yes when all the state tables 410 have been selected (step S2203: Yes), the distributed node 201 shifts to the processing of step S2204.
  • step S2204 the distributed node 201 creates a new state table 410 and registers it in the list 400 of the state table 410 (step S2204).
  • step S2204 the distributed node 201 sets the ID of the event message to the ID of the registered state table 410 (step S2205). Then, the distributed node 201 shifts to the processing of step S2206.
  • step S2206 the distributed node 201 executes a state update process described later in FIG. 23 (step S2206). Then, the distributed node 201 ends the event message processing.
  • the state update process is realized by, for example, the CPU 301 shown in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • FIG. 23 is a flowchart showing an example of the state update processing procedure.
  • the distributed node 201 selects a key-value pair that has not been selected from the event messages (step S2301).
  • the distributed node 201 selects the state information that has not been selected from the state table 410 (step S2302).
  • the distributed node 201 determines whether or not the key of the selected key-value pair and the state name of the selected state information match (step S2303). Here, if they match (step S2303: Yes), the distributed node 201 moves to the process of step S2306. On the other hand, if they do not match (step S2303: NO), the distributed node 201 shifts to the processing of step S2304.
  • step S2304 the distributed node 201 determines whether or not all state information has been selected from the state table 410 (step S2304). Here, if there is unselected state information (step S2304: No), the distributed node 201 returns to the process of step S2302. On the other hand, when all the state information is selected (step S2304: Yes), the distributed node 201 shifts to the processing of step S2305.
  • step S2305 the distributed node 201 adds, to the state table 410, state information in which the key of the selected key-value pair is set as the state name (step S2305).
  • step S2306 the distributed node 201 sets the value of the selected key-value pair as the state content in the state information (step S2306).
  • the distributed node 201 determines whether or not the state information includes the plug-in ID (step S2307). If the plug-in ID is not included in the state information (step S2307: No), the distributed node 201 moves to the process of step S2309. On the other hand, when the state information includes the plug-in ID (step S2307: Yes), the distributed node 201 moves to the process of step S2308.
  • step S2308 the distributed node 201 executes plug-in processing described later in FIG. 24 (step S2308). Then, the distributed node 201 shifts to the processing of step S2309.
  • step S2309 the distributed node 201 determines whether all the key-value pairs have been selected from the event message (step S2309). Here, if there is an unselected key-value pair (step S2309: No), the distributed node 201 returns to the process of step S2301. On the other hand, when all the key-value pairs have been selected (step S2309: Yes), the distributed node 201 ends the state update process.
  • Plug-in processing procedure Next, with reference to FIG. 24, an example of a plug-in processing procedure executed by the distributed node 201 will be described.
  • the plug-in process is realized by, for example, the CPU 301 illustrated in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • FIG. 24 is a flowchart showing an example of a plug-in processing procedure.
  • the distributed node 201 selects plug-in information that has not been selected yet from the plug-in repository table 500 (step S2401).
  • the distributed node 201 determines whether or not the plug-in ID of the selected plug-in information matches the plug-in ID of the execution target (step S2402). If they do not match (step S2402: NO), the distributed node 201 moves to the process of step S2403. On the other hand, if they match (step S2402: YES), the distributed node 201 moves to the process of step S2404.
  • step S2403 the distributed node 201 determines whether or not all plugin information has been selected from the plugin repository table 500 (step S2403). Here, if there is unselected plug-in information (step S2403: No), the distributed node 201 returns to the processing of step S2401. On the other hand, when all the plug-in information is selected (step S2403: Yes), the distributed node 201 ends the plug-in processing.
  • step S2404 the distributed node 201 executes the plugin based on the plugin data of the plugin information (step S2404). Then, the distributed node 201 ends the plug-in processing.
  • Control system event processing procedure Next, an example of a control system event processing procedure executed by the distributed node 201 will be described with reference to FIG.
  • the control system event processing is realized by, for example, the CPU 301 shown in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • FIG. 25 is a flowchart showing an example of a control system event processing procedure.
  • the distributed node 201 determines whether or not the control message represents plug-in addition (step S2501).
  • step S2501: Yes when the plug-in addition is indicated (step S2501: Yes), the distributed node 201 shifts to the processing of step S2502.
  • step S2501: No when the plug-in addition is not indicated (step S2501: No), the distributed node 201 shifts to the processing of step S2503.
  • step S2502 the distributed node 201 executes plug-in addition processing described later in FIGS. 26 and 27 (step S2502). Then, the distributed node 201 ends the control system event processing.
  • step S2503 the distributed node 201 determines whether the control message indicates plug-in deletion (step S2503).
  • step S2503: Yes the distributed node 201 executes plug-in deletion processing described later with reference to FIGS. 28 and 29 (step S2504). Then, the distributed node 201 ends the control system event processing.
  • step S2503: No the distributed node 201 ends the control system event processing.
  • the plug-in addition processing is realized by, for example, the CPU 301 shown in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • 26 and 27 are flowcharts showing an example of a plug-in addition processing procedure.
  • the distributed node 201 selects the state table 410 that has not been selected yet from the list 400 of the state table 410 (step S2601).
  • the distributed node 201 determines whether or not the ID of the selected state table 410 matches the ID of the received control message (step S2602). Here, if they match (step S2602: Yes), the distributed node 201 moves to the process of step S2604. On the other hand, when they do not match (step S2602: No), the distributed node 201 moves to the processing of step S2603.
  • step S 2603 the distributed node 201 determines whether or not all the state tables 410 have been selected from the list 400 of the state table 410 (step S 2603 ). Here, if there is an unselected state table 410 (step S2603: No), the distributed node 201 returns to the processing of step S2601. On the other hand, when all the state tables 410 have been selected (step S2603: YES), the distributed node 201 ends the plug-in addition processing.
  • step S2604 the distributed node 201 selects state information that has not yet been selected from the state table 410 (step S2604).
  • step S2605 determines whether or not the state name of the selected state information matches the state name of the received control message.
  • step S2605: YES the distributed node 201 moves to the process of step S2701 of FIG.
  • step S2605: NO the distributed node 201 shifts to the processing of step S2606.
  • step S2606 the distributed node 201 determines whether or not all state information has been selected from the state table 410 (step S2606). Here, if there is unselected state information (step S2606: No), the distributed node 201 returns to the process of step S2604. On the other hand, when all the state information has been selected (step S2606: Yes), the distributed node 201 ends the plug-in addition processing. Here, the description moves to FIG. 27.
  • the distributed node 201 acquires the plug-in data of the plug-in to be added from the control message (step S2701). Next, the distribution node 201 calculates the MD5 hash value of the acquired plug-in data as the plug-in ID (step S2702). Then, the distribution node 201 selects the plug-in information that has not been selected yet from the plug-in repository table 500 (step S2703).
  • the distributed node 201 determines whether the calculated plug-in ID matches the plug-in ID of the selected plug-in information (step S2704). Here, if they match (step S2704: YES), the distributed node 201 shifts to the processing of step S2707. On the other hand, when they do not match (step S2704: NO), the distributed node 201 shifts to the processing of step S2705.
  • step S2705 the distributed node 201 determines whether or not all the plugin information has been selected from the plugin repository table 500 (step S2705). Here, if there is unselected plug-in information (step S2705: NO), the distributed node 201 returns to the processing of step S2703. On the other hand, when all the plug-in information is selected (step S2705: YES), the distributed node 201 moves to the process of step S2706.
  • step S2706 the distributed node 201 adds new plug-in information to the plug-in repository table 500, sets the calculated plug-in ID and the acquired plug-in data in the new plug-in information, and sets the reference count. It is initialized to 0 (step S2706).
  • step S2707 the distributed node 201 sets the calculated plugin ID to the plugin ID of the state table 410 (step S2707).
  • the distributed node 201 increments the reference number corresponding to the plug-in to be added in the plug-in repository table 500 (step S2708). Then, the distributed node 201 ends the plug-in addition processing.
  • the plug-in deletion process is realized by, for example, the CPU 301 illustrated in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • 28 and 29 are flowcharts showing an example of a plug-in deletion processing procedure.
  • the distribution node 201 selects the state table 410 that has not been selected yet from the list 400 of the state table 410 (step S2801).
  • the distributed node 201 determines whether or not the ID of the selected state table 410 matches the ID of the accepted control message (step S2802). Here, if they match (step S2802: YES), the distributed node 201 shifts to the processing of step S2804. On the other hand, if they do not match (step S2802: NO), the distributed node 201 shifts to the processing of step S2803.
  • step S2803 the distributed node 201 determines whether or not all the state tables 410 have been selected from the list 400 of the state table 410 (step S2803). Here, if there is an unselected state table 410 (step S2803: No), the distributed node 201 returns to the process of step S2801. On the other hand, when all the state tables 410 have been selected (step S2803: Yes), the distributed node 201 ends the plug-in deletion process.
  • step S2804 the distributed node 201 selects state information that has not yet been selected from the state table 410 (step S2804).
  • step S2805 determines whether or not the state name of the selected state information matches the state name of the received control message.
  • step S2805: YES the distributed node 201 moves to the process of step S2901 of FIG.
  • step S2805: NO the distributed node 201 shifts to the processing of step S2806.
  • step S2806 the distributed node 201 determines whether or not all state information has been selected from the state table 410 (step S2806). Here, if there is unselected state information (step S2806: NO), the distributed node 201 returns to the process of step S2804. On the other hand, when all the state information has been selected (step S2806: Yes), the distributed node 201 ends the plug-in deletion process. Here, the description moves to FIG. 29.
  • the distributed node 201 acquires the plug-in data of the plug-in to be deleted from the control message (step S2901). Next, the distribution node 201 calculates the MD5 hash value of the acquired plug-in data as the plug-in ID (step S2902). Then, the distribution node 201 selects the plug-in information that has not been selected yet from the plug-in repository table 500 (step S2903).
  • step S2904 determines whether the calculated plug-in ID matches the plug-in ID of the selected plug-in information. Here, if they match (step S2904: YES), the distributed node 201 moves to the process of step S2906. On the other hand, when they do not match (step S2904: NO), the distributed node 201 shifts to the processing of step S2905.
  • step S2905 the distributed node 201 determines whether or not all the plugin information has been selected from the plugin repository table 500 (step S2905). Here, if there is unselected plug-in information (step S2905: NO), the distributed node 201 returns to the process of step S2903. On the other hand, when all the plug-in information is selected (step S2905: Yes), the distributed node 201 ends the plug-in deleting process.
  • step S2906 the distributed node 201 sets the plug-in ID of the state table 410 to empty (step S2906).
  • the distributed node 201 decrements the reference number corresponding to the plug-in to be deleted from the plug-in repository table 500 (step S2907).
  • the distributed node 201 determines whether the reference number of the plug-in repository table 500 is 0 (step S2908).
  • the distributed node 201 ends the plug-in deleting process.
  • the distributed node 201 shifts to the processing of step S2909.
  • step S2909 the distributed node 201 deletes the plug-in information whose reference number is 0 from the plug-in repository table 500 (step S2909). Then, the distributed node 201 ends the plug-in deleting process.
  • checkpoint processing procedure Next, with reference to FIG. 30, an example of the checkpoint processing procedure executed by the distributed node 201 will be described.
  • the checkpoint process is realized by, for example, the CPU 301 shown in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • FIG. 30 is a flowchart showing an example of the checkpoint processing procedure.
  • the distributed node 201 initializes the checkpoint number to 0 (step S3001).
  • the distributed node 201 executes a checkpoint saving process described later in FIG. 31 (step S3002).
  • step S3003 the distributed node 201 increments the checkpoint number. After that, the distributed node 201 waits for a certain period of time (step S3004), and returns to the processing of step S3002.
  • checkpoint storage procedure Next, an example of the checkpoint storage processing procedure executed by the distributed node 201 will be described with reference to FIG.
  • the checkpoint saving process is realized by, for example, the CPU 301 shown in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • FIG. 31 is a flowchart showing an example of a checkpoint storage processing procedure.
  • the distributed node 201 selects a state table 410 that has not been selected yet from the list 400 of the state table 410 (step S3101).
  • the distributed node 201 stores the selected state table 410 in the external storage device 205 in association with the checkpoint number, the identifier of the self node, and the ID of the selected state table 410 (step S3102). ..
  • the distributed node 201 determines whether or not all the state tables 410 have been selected from the list 400 of the state table 410 (step S3103).
  • step S3103: No when there is an unselected state table 410 (step S3103: No), the distributed node 201 returns to the process of step S3101.
  • step S3103: Yes when all the state tables 410 are selected (step S3103: Yes), the distributed node 201 shifts to the processing of step S3104.
  • step S3104 the distributed node 201 stores the snapshot of the plug-in repository table 500 in the external storage device 205 in association with the checkpoint number and the self-node identifier (step S3104). Then, the distributed node 201 ends the checkpoint saving process.
  • the recovery process is realized by, for example, the CPU 301 illustrated in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • FIG. 32 is a flowchart showing an example of the recovery processing procedure.
  • the distributed node 201 acquires the state information corresponding to the combination of the latest checkpoint number, the identifier of the own node, and the ID assigned to the own node, which is stored in the external storage device 205. (Step S3201).
  • the distributed node 201 updates the state table 410 based on the acquired state information (step S3202).
  • the distributed node 201 determines whether or not there is state information to be inherited from another node (step S3203).
  • step S3203 No
  • the distributed node 201 ends the recovery process.
  • step S3203: YES if it exists (step S3203: YES), the distributed node 201 shifts to the processing of step S3204.
  • step S3204 the distributed node 201 acquires the state information to be taken over from the external storage device 205 (step S3204).
  • the distributed node 201 updates the state table 410 based on the acquired state information (step S3205).
  • the distributed node 201 executes a regeneration process described later with reference to FIGS. 33 to 35 (step S3206).
  • the distributed node 201 ends the recovery process.
  • the regeneration processing is realized by, for example, the CPU 301 shown in FIG. 3, a storage area such as the memory 302 and the recording medium 305, and the network I/F 303.
  • FIG. 33 to 35 are flowcharts showing an example of the regeneration processing procedure.
  • the distributed node 201 initializes the reference number of the plug-in repository table 500 to 0 (step S3301).
  • the distributed node 201 selects the state table 410 that has not been selected from the list 400 of the state table 410 (step S3302). Then, the distribution node 201 selects the state information that has not been selected from the selected state table 410 (step S3303).
  • the distributed node 201 determines whether or not the selected state information includes the plug-in ID (step S3304).
  • step S3304: Yes when the plug-in ID is included (step S3304: Yes), the distributed node 201 moves to the process of step S3401 of FIG.
  • step S3304: No when the plug-in ID is not included (step S3304: No), the distributed node 201 shifts to the processing of step S3305.
  • step S3305 the distributed node 201 determines whether or not all state information has been selected from the selected state table 410 (step S3305). Here, if there is unselected state information (step S3305: No), the distributed node 201 returns to the processing of step S3303. On the other hand, when all the state information is selected (step S3305: Yes), the distributed node 201 shifts to the processing of step S3306.
  • step S3306 the distributed node 201 determines whether or not all the state tables 410 have been selected from the list 400 of the state table 410 (step S3306).
  • step S3306: No the distributed node 201 returns to the process of step S3302.
  • step S3306: Yes the distributed node 201 moves to the process of step S3501 in FIG. First, the description moves to FIG. 34.
  • the distributed node 201 selects the plug-in information that has not been selected from the plug-in repository table 500 (step S3401).
  • step S3402 determines whether the plugin ID of the selected state information and the plugin ID of the selected plugin information match (step S3402). Here, if they match (step S3402: YES), the distributed node 201 moves to the process of step S3405. On the other hand, when they do not match (step S3402: NO), the distributed node 201 shifts to the processing of step S3403.
  • step S3403 the distributed node 201 determines whether or not all plug-in information has been selected (step S3403). Here, if there is unselected plug-in information (step S3403: No), the distributed node 201 returns to the processing of step S3401. On the other hand, when all the plug-in information is selected (step S3403: YES), the distributed node 201 shifts to the processing of step S3404.
  • step S3404 the distributed node 201 adds new plugin information in which the plugin ID of the selected state information is set to the plugin repository table 500, and initializes the reference count to 0 (step S3404). Then, the distributed node 201 shifts to the processing in step S3405.
  • step S3405 the distributed node 201 increments the reference number of the plug-in information (step S3405). Then, the distributed node 201 returns to the processing of step S3305 in FIG. Next, the description moves to FIG.
  • the distributed node 201 acquires a snapshot of the repository table associated with the latest checkpoint number from the external storage device 205 (step S3501). Next, the distributed node 201 generates list information in which the plug-in ID and the plug-in data are associated with each other, based on the acquired snapshot (step S3502). Then, the distributed node 201 selects the plug-in information that has not been selected yet from the plug-in repository table 500 (step S3503).
  • step S3504 determines whether or not the plug-in data of the selected plug-in information is empty (step S3504). Here, if it is not empty (step S3504: No), the distributed node 201 moves to the processing of step S3506. On the other hand, if it is empty (step S3504: YES), the distributed node 201 shifts to the processing of step S3505.
  • step S3505 the distributed node 201 searches for empty plug-in data from the list information and sets it in the selected plug-in information (step S3505). Then, the distributed node 201 shifts to the processing of step S3506.
  • step S3506 the distributed node 201 determines whether or not all plug-in information has been selected (step S3506). Here, if there is unselected plug-in information (step S3506: No), the distributed node 201 returns to the processing of step S3503. On the other hand, when all the plug-in information is selected (step S3506: Yes), the distributed node 201 ends the regeneration processing.
  • the information processing device 110 it is possible to accept a request for another information processing device 110 different from the own device to take over the predetermined function provided to the predetermined terminal device.
  • the backup data stored by another information processing device 110 can be acquired from the external storage device 130.
  • a predetermined function is realized in the plug-in code that interprets the acquired backup data and realizes each function of one or more functions provided by another information processing apparatus 110. You can extract the code of the plug-in that you want.
  • the information processing device 110 it is possible to provide a predetermined function to a predetermined terminal device based on the extracted code. As a result, the information processing apparatus 110 can acquire the code of the plug-in that realizes the function provided by the other information processing apparatus 110, and can take over the function provided by the other information processing apparatus 110. You can
  • the information processing device 110 it is possible to obtain, from the external storage device 130, backup data that is stored by another information processing device 110 and that is a collection of the first correspondence information and second correspondence information.
  • the acquired backup data is interpreted, the acquired second correspondence information is referred to, and based on the identifier of the predetermined terminal device included in the request, one of the first correspondence information is determined.
  • the backup data stored by the device itself can be acquired from the external storage device 130. According to the information processing apparatus 110, it is possible to interpret the acquired backup data and extract the plug-in code that realizes each of the one or more functions provided by the own apparatus. As a result, the information processing apparatus 110 can restore the plug-in code that realizes each of the one or more functions provided by the information processing apparatus 110 to the state at the time of backup.
  • the backup data stored by each information processing device 110 can be acquired from the external storage device 130.
  • the plug-in code that interprets the acquired backup data and realizes each function of one or more functions provided by each information processing device 110 is the same as the duplicate plug-in code. Can be integrated and put together.
  • the information processing device 110 it is possible to extract the code of the plug-in that realizes a predetermined function. As a result, the information processing apparatus 110 can extract the code of the plug-in that implements the function to be taken over, without specifying the information processing apparatus 110 that provided the function to be taken over.
  • the code of the plug-in can be received and stored from the management device.
  • the information processing apparatus 110 can store the code of the plug-in.
  • the information processing apparatus 110 can extract the plug-in code based on the external storage device 130 even if the management apparatus transmits the plug-in code and then discards it.
  • the backup data that consolidates the code of the plug-in that realizes each function of one or more functions provided by any one of the information processing devices 110 by dividing the code according to a predetermined data format. Can be obtained. Then, according to the information processing apparatus 110, it is possible to interpret the backup data and acquire the plug-in code in plug-in units. As a result, the information processing apparatus 110 can operate normally even if the external storage device 130 does not have the function of interpreting the backup data.
  • the information processing device 110 it is possible to obtain backup data in which the code of the plug-in that realizes each function of one or more functions provided by any one of the information processing devices 110 is encrypted and aggregated. .. Then, according to the information processing device 110, it is possible to interpret the backup data and acquire the plug-in code in plug-in units. Accordingly, the information processing apparatus 110 can operate normally even if the external storage device 130 does not have a function of interpreting and decoding the backup data. Further, the information processing apparatus 110 can encrypt the backup data to improve security.
  • the takeover method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
  • the takeover program described in the present embodiment is recorded in a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, or a DVD, and is executed by being read from the recording medium by the computer.
  • the takeover program described in the present embodiment may be distributed via a network such as the Internet.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)

Abstract

分散ノード(201-3)は、外部記憶装置(205)から、引き継ぐ機能を含む自装置に割り振られた1以上の機能のそれぞれの機能を実現するプラグインに関するステート情報を取得し、ステートテーブル(410)のリスト(400)を再生成する。分散ノード(201-3)は、再生成したリスト(400)に基づいて、プラグインごとの参照数を算出し、プラグインリポジトリテーブル(500)を再生成する。分散ノード(201-3)は、外部記憶装置(205)から、それぞれの分散ノード(201)が格納したプラグインリポジトリテーブル(500)のスナップショット(1101~1103)を取得し、プラグイン情報を纏めた一覧情報を生成する。分散ノード(201-3)は、プラグインリポジトリテーブル(500)のうち、プラグインデータが空であるプラグイン情報があれば、一覧情報からプラグインデータを取得して設定する。

Description

引継プログラム、引継方法、情報処理装置、および並列分散処理システム
 本発明は、引継プログラム、引継方法、情報処理装置、および並列分散処理システムに関する。
 従来、複数のノードを含み、複数のノードのそれぞれのノードにデータを処理する機能を実現するプラグインを実装し、複数のノードで分散して複数の端末装置のそれぞれの端末装置のデータを処理する並列分散処理システムがある。
 先行技術としては、例えば、機能セットの内のローカルにサポートされていない機能を装置ドライバがサポートすることを可能とする1以上のプラグインを識別し、利用者からの許可を得て、プラグインをダウンロードするものがある。また、例えば、複数の周辺機器に共通する第1のプラグインを介して、周辺機器のそれぞれに対応する第2のプラグインをアプリケーションの実行環境に接続されるように配置する技術がある。また、例えば、所定のコンテンツに必要なプラグインモジュールを判定する技術がある。
特開2010-98732号公報 特開2015-207273号公報 特開2003-316591号公報
 しかしながら、従来技術では、並列分散処理システムのノード間において機能を引き継ぐことが難しいことがある。例えば、特定のノードで障害が発生した場合、特定のノードから他のノードに機能を引き継ぐことが望まれるが、障害により特定のノードが有するプラグインが失われると、機能を引き継ぐことが難しくなることがある。
 1つの側面では、本発明は、機能を引継可能にすることを目的とする。
 1つの実施態様によれば、複数の情報処理装置のうち、自装置とは異なる他の情報処理装置が所定の端末装置に提供していた所定の機能を引き継ぐことの要求を受け付け、前記要求を受け付けた場合、前記複数の情報処理装置のそれぞれの情報処理装置によって、当該情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを集約したバックアップデータが格納される外部記憶装置から、前記他の情報処理装置によって格納されたバックアップデータを取得し、取得した前記バックアップデータを解釈し、前記他の情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードのうち、前記所定の機能を実現するプラグインのコードを抽出し、抽出した前記コードに基づいて、前記所定の機能を前記所定の端末装置に提供する引継プログラム、引継方法、情報処理装置、および並列分散処理システムが提案される。
 一態様によれば、機能を引継可能にすることが可能になる。
図1は、実施の形態にかかる引継方法の一実施例を示す説明図である。 図2は、並列分散処理システム200の一例を示す説明図である。 図3は、分散ノード201のハードウェア構成例を示すブロック図である。 図4は、ステートテーブル410の記憶内容の一例を示す説明図である。 図5は、プラグインリポジトリテーブル500の記憶内容の一例を示す説明図である。 図6は、情報処理装置110の機能的構成例を示すブロック図である。 図7は、ステートテーブル410を更新する一例を示す説明図である。 図8は、プラグインデータを管理する一例を示す説明図である。 図9は、ステートテーブル410とプラグインリポジトリテーブル500とをバックアップする一例を示す説明図である。 図10は、障害発生時の分散ノード201の動作を示す説明図(その1)である。 図11は、障害発生時の分散ノード201の動作を示す説明図(その2)である。 図12は、障害発生時の分散ノード201の動作を示す説明図(その3)である。 図13は、障害発生時の分散ノード201の動作を示す説明図(その4)である。 図14は、障害発生時の分散ノード201の動作を示す説明図(その5)である。 図15は、障害発生時の分散ノード201の動作を示す説明図(その6)である。 図16は、並列分散処理システム200の適用例を示す説明図である。 図17は、適用例におけるメッセージフローを示す説明図である。 図18は、適用例における計算機1601の具体的な機能的構成例を示す説明図(その1)である。 図19は、適用例における計算機1601の具体的な機能的構成例を示す説明図(その2)である。 図20は、各種メッセージの一例を示す説明図である。 図21は、全体処理手順の一例を示すフローチャートである。 図22は、イベントメッセージ処理手順の一例を示すフローチャートである。 図23は、ステート更新処理手順の一例を示すフローチャートである。 図24は、プラグイン処理手順の一例を示すフローチャートである。 図25は、制御系イベント処理手順の一例を示すフローチャートである。 図26は、プラグイン追加処理手順の一例を示すフローチャート(その1)である。 図27は、プラグイン追加処理手順の一例を示すフローチャート(その2)である。 図28は、プラグイン削除処理手順の一例を示すフローチャート(その1)である。 図29は、プラグイン削除処理手順の一例を示すフローチャート(その2)である。 図30は、チェックポイント処理手順の一例を示すフローチャートである。 図31は、チェックポイント保存処理手順の一例を示すフローチャートである。 図32は、回復処理手順の一例を示すフローチャートである。 図33は、再生成処理手順の一例を示すフローチャート(その1)である。 図34は、再生成処理手順の一例を示すフローチャート(その2)である。 図35は、再生成処理手順の一例を示すフローチャート(その3)である。
 以下に、図面を参照して、本発明にかかる引継プログラム、引継方法、情報処理装置、および並列分散処理システムの実施の形態を詳細に説明する。
(実施の形態にかかる引継方法の一実施例)
 図1は、実施の形態にかかる引継方法の一実施例を示す説明図である。図1において、情報処理装置110は、並列分散処理システムに含まれる複数のノードのいずれかのノードとして動作することができるコンピュータである。以下の説明では、異なる情報処理装置を区別する場合、番号iを用いて「情報処理装置110-i」と表記する場合がある。
 それぞれのノードは、処理対象のデータを処理する処理プログラムを有し、処理対象のデータを処理する。処理プログラムは、例えば、処理対象のデータを処理する機能を実現するプラグインを呼び出すことができるメインプログラムを含む。処理プログラムは、例えば、プラグインを含むことができる。プラグインは、例えば、サービス開発者のコンピュータからノードに配信され、処理プログラムに追加される。
 ここで、並列分散処理システムでは、ノード間において、処理対象のデータを処理する機能を引き継ぐことが望まれる場合がある。例えば、特定のノードで障害が発生した場合、特定のノードが担当していた機能を、他のノードに引き継ぐことが望まれる。また、例えば、並列分散処理システムに新たなノードが追加された場合、新たなノードに、他のノードが担当していた機能を引き継ぎ、負荷分散を図ることが望まれる場合がある。
 しかしながら、ノードは、他のノードが担当していた機能を引き継ぐことが難しいことがある。例えば、ノードは、他のノードが提供していた機能を引き継ぐ際、機能を実現するプラグインを取得する必要があるが、プラグインを取得することができず、機能を引き継ぐことができない場合がある。
 具体的には、引き継ぐ機能を実現するプラグインを配信した、サービス開発者のコンピュータで、プラグインが既に失われている場合、ノードは、サービス開発者のコンピュータからプラグインを取得することができない。また、障害により特定のノードが有するプラグインが失われている場合、ノードは、特定のノードからプラグインを取得することができない。また、並列分散処理システムが、ノード間で直接通信可能に形成されていない場合、ノードは、他のノードから直接プラグインを取得することができない。
 そこで、本実施の形態では、並列分散処理システムのノードが、処理対象のデータを処理する他のノードが担当していた機能を、他のノードが外部記憶装置に格納したバックアップデータに基づいて引継可能にする引継方法について説明する。
 図1において、並列分散処理システム100は、3つの情報処理装置110を含む。以下の説明では、3つの情報処理装置110をそれぞれ区別する場合、「情報処理装置110-1」、「情報処理装置110-2」、「情報処理装置110-3」と表記する場合がある。
 情報処理装置110は、処理対象のデータを処理する処理プログラムを有する。処理プログラムは、例えば、処理対象のデータを処理する機能を実現するプラグインを呼び出すことができるメインプログラムを含む。処理プログラムは、例えば、プラグインを含むことができる。情報処理装置110は、プラグインが実現する機能を、複数の端末装置のいずれかの端末装置に提供する。機能の提供は、例えば、機能が用いるデータを入力可能にすること、または、機能が生成したデータを取得可能にすることである。
 情報処理装置110は、プラグインのコードを含む制御メッセージを受信したことに応じて、プラグインの実行条件とプラグインのコードとを記憶し、処理プログラムにプラグインを追加する。制御メッセージは、例えば、追加するプラグインの実行条件と、プラグインのコードとを対応付けて表す。プラグインの実行条件は、特定の端末装置での特定のイベントの発生である。イベントは、例えば、人や物のステートの変化である。ステートは、状態であり、例えば、速度である。制御メッセージは、サービス開発者のコンピュータ120から、情報処理装置110に送信される。
 図1の例では、情報処理装置110-1は、プラグインP1のコードやプラグインP2のコードを記憶する。情報処理装置110-2は、プラグインP3のコードやプラグインP4のコードを記憶する。情報処理装置110-3は、プラグインP5のコードやプラグインP6のコードを記憶する。
 情報処理装置110は、例えば、プラグインの実行条件を、図4に後述するステートテーブルを用いて記憶する。情報処理装置110は、例えば、プラグインのコードを、図5に後述するプラグインリポジトリテーブルに集約する。情報処理装置110は、所定のタイミングで、自装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを集約したバックアップデータを、外部記憶装置130に格納する。バックアップデータは、例えば、プラグインリポジトリテーブルのスナップショットである。
 図1の例では、情報処理装置110-1は、プラグインP1のコードやプラグインP2のコードを集約したバックアップデータb1を、外部記憶装置130に格納する。情報処理装置110-2は、プラグインP3のコードやプラグインP4のコードを集約したバックアップデータb2を、外部記憶装置130に格納する。情報処理装置110-3は、プラグインP5のコードやプラグインP6のコードを集約したバックアップデータb3を、外部記憶装置130に格納する。
 ここで、情報処理装置110は、自装置とは異なる他の情報処理装置110が所定の端末装置に提供していた所定の機能を引き継ぐことの要求を受け付ける。図1の例では、情報処理装置110-3は、情報処理装置110-2が所定の端末装置に提供していた、プラグインP4により実現される所定の機能を引き継ぐことの要求を受け付ける。
 情報処理装置110は、要求を受け付けた場合、外部記憶装置130から、少なくとも、他の情報処理装置110によって格納されたバックアップデータを取得する。図1の例では、情報処理装置110-3は、要求を受け付けた場合、外部記憶装置130から、情報処理装置110-2によって格納されたバックアップデータb2を取得する。
 情報処理装置110は、取得したバックアップデータを解釈し、他の情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードのうち、所定の機能を実現するプラグインのコードを抽出する。解釈は、データ形式に従って、バックアップデータに含まれる各種データを区別可能にすることである。解釈は、例えば、プラグイン単位で、プラグインのコードを区別可能にする。解釈は、復号を含んでもよい。図1の例では、情報処理装置110-3は、バックアップデータb2を解釈し、情報処理装置110-2が提供していた所定の機能を実現するプラグインP4のコードを抽出する。
 情報処理装置110は、抽出したコードに基づいて、所定の機能を所定の端末装置に提供する。図1の例では、情報処理装置110-3は、プラグインP4のコードに基づいて、所定の機能を所定の端末装置に提供する。情報処理装置110は、具体的には、図7~図15に後述する動作例に示すような動作を行う。
 これにより、情報処理装置110は、他の情報処理装置110が提供していた機能を実現するプラグインのコードを取得することができ、他の情報処理装置110が提供していた機能を引き継ぐことができる。情報処理装置110は、例えば、他の情報処理装置110が提供していた機能を実現するプラグインのコードを、プラグインの配信元から取得困難な状況であっても、プラグインのコードを取得することができる。情報処理装置110は、例えば、他の情報処理装置110が提供していた機能を実現するプラグインのコードを、他の情報処理装置110から取得困難な状況であっても、プラグインのコードを取得することができる。
 また、情報処理装置110は、外部記憶装置130が、プラグインのコードを集約したバックアップデータを記憶しており、プラグイン単位でプラグインのコードを区別して取得困難な状況であっても、プラグインのコードを取得することができる。このため、並列分散処理システム100は、外部記憶装置130に特別な機能を追加しなくても、実現することができる。
 並列分散処理システム100は、例えば、外部記憶装置130が、バックアップデータを解釈し、プラグイン単位でプラグインのコードを区別可能にする機能を有していなくても、実現することができる。このため、並列分散処理システム100は、例えば、外部記憶装置130が、バックアップデータ内を検索し、プラグイン単位でプラグインのコードを抽出することが難しい状況でも、実現することができる。結果として、並列分散処理システム100は、外部記憶装置130として、クラウド上の記憶領域などを利用することができる。
(並列分散処理システム200の一例)
 次に、図2を用いて、図1に示した情報処理装置を適用した、並列分散処理システム200の一例について説明する。
 図2は、並列分散処理システム200の一例を示す説明図である。図2において、並列分散処理システム200は、分散ノード201-1~201-Nと、管理ノード202と、端末装置203と、開発ノード204と、外部記憶装置205とを含む。以下の説明では、分散ノード201-1~201-Nを区別せずに「分散ノード201」と表記する場合がある。
 並列分散処理システム200において、分散ノード201と、管理ノード202と、端末装置203と、開発ノード204と、外部記憶装置205とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
 分散ノード201は、図1に示した情報処理装置として動作するコンピュータである。分散ノード201は、制御メッセージを受信すると、制御メッセージに応じてプラグインを追加または削除する。制御メッセージは、例えば、追加するプラグインの実行条件と、プラグインのコードとを対応付けて表す。プラグインの実行条件は、特定の端末装置での特定のイベントの発生である。イベントは、例えば、人や物のステートの変化である。ステートは、状態であり、例えば、速度である。プラグインのコードは、実行形式である。
 分散ノード201は、例えば、制御メッセージを受信すると、プラグインの実行条件と、プラグインのコードとを対応付けて、図4および図5に後述する各種テーブルを用いて記憶する。分散ノード201は、具体的には、プラグインの実行条件とプラグインIDとを対応付けて図4に後述するステートテーブル410を用いて記憶する。分散ノード201は、具体的には、ステートテーブル410を複数含む、図4に後述する、ステートテーブル410のリスト400を記憶する。また、分散ノード201は、具体的には、プラグインIDとプラグインのコードとを対応付けて図5に後述するプラグインリポジトリテーブル500を用いて記憶する。分散ノード201は、図4および図5に後述する各種テーブルを、外部記憶装置205にバックアップする。
 分散ノード201は、イベントメッセージを受信すると、イベントメッセージに応じてプラグインを実行する。イベントメッセージは、イベントと、イベントの発生元の人や物に対応する端末装置とを表す。イベントメッセージは、例えば、人や物のステートの変化などのイベントがあったタイミングにおける、人や物のステートを表す。分散ノード201は、例えば、サーバやPC(Personal Computer)などである。
 管理ノード202は、端末装置203からイベントメッセージを受信し、分散ノード201に送信するコンピュータである。また、管理ノード202は、開発ノード204から制御メッセージを受信し、制御メッセージを分散ノード201に送信する。管理ノード202は、例えば、サーバやPCなどである。
 端末装置203は、イベントの発生元の人や物に対応するコンピュータである。端末装置203は、例えば、人に保持される装置である。端末装置203は、例えば、移動体に搭載された装置である。移動体は、例えば、車である。端末装置203は、イベントの発生に応じてイベントメッセージを生成し、管理ノード202に送信する。端末装置203は、例えば、PC、タブレット端末、スマートフォン、ウェアラブル端末などである。
 開発ノード204は、制御メッセージを管理ノード202に送信するコンピュータである。開発ノード204は、例えば、分散ノード201にプラグインを追加または削除させるときに、管理ノード202に制御メッセージを送信する。開発ノード204は、例えば、サーバ、PCなどである。
 外部記憶装置205は、分散ノード201から、図4および図5に後述する各種テーブルをバックアップされる。外部記憶装置205は、例えば、ストレージ装置である。外部記憶装置205は、例えば、クラウド上の記憶領域などにより実現されてもよい。
 ここでは、管理ノード202が、分散ノード201とは異なる装置である場合について説明したが、これに限らない。例えば、管理ノード202が、いずれかの分散ノード201と一体である場合があってもよい。また、例えば、管理ノード202が、開発ノード204と一体である場合があってもよい。
 ここでは、分散ノード201と管理ノード202と端末装置203と開発ノード204とが、ネットワーク210を介して接続される場合について説明したが、これに限らない。例えば、分散ノード201と管理ノード202と開発ノード204とを接続するネットワークと、管理ノード202と端末装置203とを接続するネットワークとが異なる場合があってもよい。
(分散ノード201のハードウェア構成例)
 次に、図3を用いて、分散ノード201のハードウェア構成例について説明する。
 図3は、分散ノード201のハードウェア構成例を示すブロック図である。図3において、分散ノード201は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
 ここで、CPU301は、分散ノード201の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。メモリ302は、例えば、図4および図5に後述する各種テーブルを記憶する。
 ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
 記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、分散ノード201から着脱可能であってもよい。記録媒体305は、例えば、図4および図5に後述する各種テーブルを記憶してもよい。
 分散ノード201は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、分散ノード201は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、分散ノード201は、記録媒体I/F304や記録媒体305を有していなくてもよい。
(ステートテーブル410の記憶内容)
 次に、図4を用いて、ステートテーブル410の記憶内容の一例について説明する。ステートテーブル410は、例えば、図3に示した分散ノード201のメモリ302や記録媒体305などの記憶領域により実現される。
 図4は、ステートテーブル410の記憶内容の一例を示す説明図である。図4に示すように、ステートテーブル410は、IDと、ステート名と、ステート内容と、プラグインIDとのフィールドを有する。ステートテーブル410は、各フィールドに情報を設定することにより、ステート情報がレコードとして記憶される。
 IDのフィールドには、イベントの発生元の人や物に対応する端末装置を識別するIDが設定される。ステート名のフィールドには、イベントの種別を示す情報としてステート名が設定される。IDとステート名とのフィールドにより、プラグインの実行条件が設定される。ステート内容のフィールドには、イベントの内容を示す情報としてステート内容が設定される。プラグインIDのフィールドには、プラグインを識別する情報としてプラグインIDが設定される。プラグインIDは、例えば、プラグインのハッシュ値である。
 ステートテーブル410は、例えば、IDごとに生成される。情報処理装置は、例えば、IDごとにステートテーブル410を生成し、ステートテーブル410のリスト400を記憶する。また、以下の説明では、ステートテーブル410を、簡略化した図形420を用いて図示する場合がある。図4の例では、図形420は、例えば、ID「5」とステート名「S」とプラグインID「B」とを対応付けるステートテーブル410を表す。
(プラグインリポジトリテーブル500の記憶内容)
 次に、図5を用いて、プラグインリポジトリテーブル500の記憶内容の一例について説明する。プラグインリポジトリテーブル500は、例えば、図3に示した分散ノード201のメモリ302や記録媒体305などの記憶領域により実現される。
 図5は、プラグインリポジトリテーブル500の記憶内容の一例を示す説明図である。図5に示すように、プラグインリポジトリテーブル500は、プラグインIDと、参照数と、プラグインデータとのフィールドを有する。プラグインリポジトリテーブル500は、各フィールドに情報を設定することにより、プラグイン情報がレコードとして記憶される。
 プラグインIDのフィールドには、プラグインを識別する情報としてプラグインIDが設定される。参照数のフィールドには、ステートテーブル410に設定済みのプラグインの実行条件の数が設定される。プラグインデータのフィールドには、プラグインデータが設定される。プラグインデータは、実行形式のプラグインのコードである。
(管理ノード202のハードウェア構成例)
 管理ノード202のハードウェア構成例は、例えば、図3に示した分散ノード201のハードウェア構成例と同様であるため、説明を省略する。
(端末装置203のハードウェア構成例)
 端末装置203のハードウェア構成例は、図3に示した分散ノード201のハードウェア構成例と同様であるため、説明を省略する。端末装置203は、さらに、センサ装置を有してもよい。
 センサ装置は、例えば、端末装置203のステートを検出する。センサ装置は、具体的には、端末装置203の位置、動き、および向きのうち少なくともいずれかを検出する。センサ装置は、具体的には、加速度センサ、地磁気センサ、光センサ、振動センサなどの少なくともいずれかにより実現される。センサ装置は、GPS(Global Positioning System)受信機により実現され、端末装置203のGPS座標を検出してもよい。
 センサ装置は、例えば、生体情報を取得してもよい。センサ装置は、例えば、生体情報として、体温、脈拍、心拍、呼吸などに関する情報を取得する。センサ装置は、例えば、生体情報として、指紋、静脈、顔貌、声紋、掌形、網膜、虹彩などに関する情報を取得してもよい。センサ装置は、例えば、画像情報を取得してもよい。これにより、センサ装置は、ステートを検出することができる。
(開発ノード204のハードウェア構成例)
 開発ノード204のハードウェア構成例は、例えば、図3に示した分散ノード201のハードウェア構成例と同様であるため、説明を省略する。
(情報処理装置110の機能的構成例)
 次に、図6を用いて、情報処理装置110の機能的構成例について説明する。
 図6は、情報処理装置110の機能的構成例を示すブロック図である。情報処理装置110は、記憶部600と、取得部601と、更新部602と、抽出部603と、実行部604と、出力部605とを含む。
 記憶部600は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部600が、情報処理装置110に含まれる場合について説明するが、これに限らない。例えば、記憶部600が、情報処理装置110とは異なる装置に含まれ、記憶部600の記憶内容が情報処理装置110から参照可能である場合があってもよい。
 取得部601~出力部605は、制御部の一例として機能する。取得部601~出力部605は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
 記憶部600は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部600は、プラグインの実行条件とプラグインのプラグインデータとを記憶する。プラグインは、メインプログラムから呼出可能なサブプログラムである。プラグインの実行条件は、特定の端末装置203での特定のイベントの発生である。プラグインの実行条件は、例えば、端末装置203のIDと、ステート名とにより表現される。イベントは、例えば、人や物のステートの変化である。ステートは、状態であり、例えば、速度である。プラグインデータは、実行形式のプラグインのコードである。プラグインデータは、例えば、符号化して記憶されてもよい。
 記憶部600は、例えば、プラグインに対応付けて、プラグインの実行条件を、図4に示したステートテーブル410を用いて記憶する。記憶部600は、具体的には、端末装置203のIDと、ステート名と、ステート内容と、プラグインIDとを対応付けて、図4に示したステートテーブル410を用いて記憶する。
 記憶部600は、例えば、プラグインデータを、図5に示したプラグインリポジトリテーブル500に集約する。記憶部600は、具体的には、プラグインIDと、参照数と、プラグインデータとを対応付けて、図5に示したプラグインリポジトリテーブル500に集約する。これにより、記憶部600は、イベントに対応するプラグインを実行可能にすることができる。
 取得部601は、各機能部の処理に用いられる各種情報を取得する。取得部601は、取得した各種情報を、記憶部600に記憶し、または、各機能部に出力する。また、取得部601は、記憶部600に記憶しておいた各種情報を、各機能部に出力してもよい。取得部601は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部601は、例えば、自装置とは異なる装置から、各種情報を受信してもよい。
 取得部601は、第1制御メッセージを受信する。第1制御メッセージは、プラグインを追加することの要求である。第1制御メッセージは、例えば、追加するプラグインの実行条件と、プラグインデータとを対応付けて表す。第1制御メッセージは、例えば、管理ノード202から、情報処理装置110として動作する分散ノード201に送信される。第1制御メッセージは、送信後、管理ノード202に残されないことがある。
 取得部601は、第2制御メッセージを受信する。第2制御メッセージは、プラグインを削除することの要求である。第2制御メッセージは、削除するプラグインの実行条件と、プラグインデータとを対応付けて表す。第2制御メッセージは、例えば、管理ノード202から、情報処理装置110として動作する分散ノード201に送信される。
 取得部601は、イベントメッセージを受信する。イベントメッセージは、イベントと、イベントの発生元の人や物に対応する端末装置203とを表す。イベントメッセージは、例えば、端末装置203のIDと、key-valueペアとを含む。keyは、イベントの種別を示す情報である。keyは、例えば、ステート名に対応する。valueは、イベントの内容を示す情報である。valueは、例えば、ステート内容に対応する。
 取得部601は、定期的に発行される同期メッセージを受信する。同期メッセージは、例えば、バリアメッセージである。バリアメッセージは、記憶部600の記憶内容をバックアップする指示を表す。バリアメッセージは、具体的には、分散チェックポイントによる障害復旧のためのバックアップの指示を表す。バックアップは、具体的には、チェックポイントとして外部記憶装置205に保存することである。バリアメッセージは、例えば、管理ノード202から送信される。
 取得部601は、他の情報処理装置110が所定の端末装置203に提供していた所定の機能を引き継ぐことの要求を受信する。以下の説明では、所定の機能を引き継ぐことの要求を「引継要求」と表記する場合がある。引継要求は、例えば、所定の端末装置203の識別子を含む。識別子は、例えば、IDである。引継要求は、具体的には、情報処理装置110に割り振る1以上の機能のそれぞれの機能を実現するプラグインの実行条件を含む。プラグインの実行条件は、機能を提供する相手となる端末装置203のIDを含む。引継要求は、例えば、管理ノード202から送信される。
 更新部602は、プラグインを記憶部600に記憶、または、プラグインを記憶部600から削除する。更新部602は、例えば、第1制御メッセージを受信した場合、受信した第1制御メッセージから特定される、プラグインの実行条件とプラグインデータとを対応付けて、記憶部600に記憶する。更新部602は、具体的には、受信した第1制御メッセージから、端末装置203のIDと、ステート名と、プラグインデータとを特定し、プラグインIDと、参照数を算出する。プラグインIDは、プラグインデータのハッシュ値である。そして、更新部602は、端末装置203のIDと、ステート名と、プラグインIDとを対応付けたステート情報を、図4に示したステートテーブル410を用いて記憶する。
 また、更新部602は、例えば、プラグインIDと、参照数と、プラグインデータとを対応付けたプラグイン情報を、図5に示したプラグインリポジトリテーブル500に記憶する。これにより、更新部602は、第1制御メッセージを受信したことに応じて処理プログラムに新たなプラグインを追加することができ、新たなプラグインにより実現される新たな機能を端末装置203に提供することができる。
 更新部602は、例えば、第2制御メッセージを受信した場合、受信した第2制御メッセージから特定されるプラグインの実行条件に対応付けて記憶部600に記憶されたプラグインデータを削除する。更新部602は、具体的には、受信した第2制御メッセージから、端末装置203のIDと、ステート名と、プラグインデータとを特定し、プラグインIDを算出する。そして、更新部602は、端末装置203のIDと、ステート名と、プラグインIDとを対応付けているステート情報を、図4に示したステートテーブル410から削除する。また、更新部602は、削除に応じて参照数をデクリメントする。
 ここで、更新部602は、参照数が0になれば、プラグインIDと、0になった参照数と、特定したプラグインデータとを対応付けているプラグイン情報を、図5に示したプラグインリポジトリテーブル500から削除する。これにより、更新部602は、処理プログラムからプラグインを削除することができる。
 更新部602は、同期メッセージを受信すると、記憶部600の記憶内容をバックアップする。バックアップは、具体的には、チェックポイントとして外部記憶装置205に保存することである。更新部602は、例えば、情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインの識別子とプラグインデータとを対応付けた対応情報を集約したバックアップデータを、外部記憶装置205に格納する。プラグインの識別子は、例えば、プラグインIDである。
 バックアップデータは、例えば、情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのプラグインデータを、所定のデータ形式に沿って区切って集約される。バックアップデータは、例えば、情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのプラグインデータを、暗号化して集約される。更新部602は、具体的には、プラグインリポジトリテーブル500のスナップショットを、チェックポイント番号と、自装置の識別子とに対応付けて、外部記憶装置205に保存する。
 また、更新部602は、例えば、情報処理装置110が提供していた1以上の機能のそれぞれの機能について、機能を実現するプラグインのプラグインIDと、機能が提供される端末装置203のIDとを対応付けた対応情報を、外部記憶装置205に格納する。更新部602は、具体的には、ステートテーブル410を、チェックポイント番号と、自装置の識別子と、ステートテーブル410のIDとに対応付けて、外部記憶装置205に保存する。
 更新部602は、具体的には、ステートテーブル410とプラグインリポジトリテーブル500のスナップショットとを保存すると、チェックポイント番号をインクリメントする。これにより、更新部602は、バックアップを実施し、ステートテーブル410とプラグインリポジトリテーブル500とを取得可能にすることができる。
 また、更新部602は、同期メッセージに関わらず、定期的に記憶部600の記憶内容をバックアップしてもよい。更新部602は、具体的には、所定時間が経過する都度、ステートテーブル410とプラグインリポジトリテーブル500のスナップショットとを、外部記憶装置205に保存する。これにより、更新部602は、バックアップを実施し、ステートテーブル410とプラグインリポジトリテーブル500とを取得可能にすることができる。
 抽出部603は、外部記憶装置205の記憶内容を取得する。抽出部603は、引継要求を受け付けた場合、外部記憶装置205から、引き継ぐ機能を提供していた他の情報処理装置110によって格納されたバックアップデータを取得する。抽出部603は、例えば、外部記憶装置205から、引き継ぐ機能を提供していた他の情報処理装置110によって格納された、第1の対応情報を集約したバックアップデータを取得する。第1の対応情報は、他の情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのプラグインIDとプラグインデータとを対応付ける。第1の対応情報は、例えば、プラグインリポジトリテーブル500のスナップショットである。
 抽出部603は、具体的には、外部記憶装置205から、引き継ぐ機能を提供していた他の情報処理装置110の識別子と、直近のチェックポイント番号との組み合わせに対応付けられたリポジトリテーブルのスナップショットを取得する。これにより、抽出部603は、引き継ぐ機能を実現するプラグインのプラグインデータを取得可能にすることができる。
 また、抽出部603は、外部記憶装置205から、自装置によって格納されたバックアップデータを取得する。抽出部603は、具体的には、外部記憶装置205から、自装置の識別子と、直近のチェックポイント番号との組み合わせに対応付けられたリポジトリテーブルのスナップショットを取得する。これにより、抽出部603は、自装置が提供していた機能を実現するプラグインのプラグインデータを取得可能にすることができる。
 また、抽出部603は、引き継ぐ機能を提供していた他の情報処理装置110によって格納された、プラグインIDと、端末装置203のIDとを対応付けた対応情報を取得する。抽出部603は、例えば、引き継ぐ機能を提供していた他の情報処理装置110によって格納された第2の対応情報を取得する。第2の対応情報は、他の情報処理装置110が提供していた1以上の機能のそれぞれの機能について、機能を実現するプラグインのプラグインIDと、機能を提供する端末装置203のIDとを対応付ける。第2の対応情報は、例えば、ステートテーブル410またはステートテーブル410のステート情報である。
 抽出部603は、具体的には、外部記憶装置205に保存された、直近のチェックポイント番号と、引き継ぐ機能を提供していた他の情報処理装置110の識別子と、引き継ぐ機能を提供する端末装置203のIDとの組み合わせに対応するステート情報を取得する。これにより、抽出部603は、自装置に割り振られた機能のうち引き継ぐ機能についてのステート情報を、ステートテーブル410に反映可能にすることができる。
 また、抽出部603は、自装置によって格納された、プラグインIDと、端末装置203のIDとを対応付けた対応情報を取得する。抽出部603は、具体的には、外部記憶装置205に保存された、直近のチェックポイント番号と、自装置の識別子と、自装置に割り振られた機能を提供する端末装置203のIDとの組み合わせに対応するステート情報を取得する。これにより、抽出部603は、自装置に割り振られた機能についてのステート情報を、ステートテーブル410に反映可能にすることができる。
 抽出部603は、取得したステート情報を、ステートテーブル410に反映する。抽出部603は、例えば、取得したステート情報を、ステートテーブル410のステート情報に上書き、または、ステートテーブル410に追加する。抽出部603は、ステートテーブル410を初期化し、取得したステート情報に基づいてステートテーブル410を再作成してもよい。これにより、抽出部603は、ステートテーブル410に、引き継ぐ機能についてのステート情報を反映することができる。また、抽出部603は、ステートテーブル410のステート情報を、バックアップの時点の状態に戻すことができる。
 抽出部603は、バックアップデータを解釈し、プラグインデータを抽出し、記憶部600に記憶する。抽出部603は、例えば、取得したバックアップデータを解釈し、他の情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのプラグインデータのうち、所定の機能を実現するプラグインのプラグインデータを抽出する。抽出部603は、具体的には、取得したバックアップデータを解釈し、取得した第2の対応情報を参照し、引継要求に含まれる所定の端末装置203のIDに基づいて、第1の対応情報のうち、所定の機能を実現するプラグインのプラグインデータを抽出する。
 抽出部603は、より具体的には、取得したバックアップデータを解釈し、他の情報処理装置110が有していたリポジトリテーブルを生成する。抽出部603は、ステート情報を反映したステートテーブル410を参照し、引継要求に含まれる所定の端末装置203のIDと、ステート名とに対応付けられたプラグインIDを特定する。抽出部603は、他の情報処理装置110が有していたプラグインリポジトリテーブル500のうち、特定したプラグインIDに対応付けられたプラグインデータを抽出する。抽出部603は、抽出したプラグインデータを、自装置のプラグインリポジトリテーブル500に設定する。これにより、抽出部603は、引き継ぐ所定の機能を実現可能にすることができる。
 また、抽出部603は、例えば、取得したバックアップデータを解釈し、自装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのプラグインデータを抽出し、記憶部600に記憶してもよい。
 抽出部603は、具体的には、取得したバックアップデータを解釈し、自装置が有していた過去のプラグインリポジトリテーブル500を生成する。抽出部603は、ステート情報を反映したステートテーブル410を参照し、引継要求に含まれる端末装置203のIDと、ステート名とに対応付けられたプラグインIDを特定する。抽出部603は、自装置が有していた過去のプラグインリポジトリテーブル500のうち、特定したプラグインIDに対応付けられたプラグインデータを抽出する。抽出部603は、抽出したプラグインデータを、自装置のプラグインリポジトリテーブル500に設定する。これにより、抽出部603は、自装置に割り振られた機能を実現可能にすることができる。
 抽出部603は、外部記憶装置205から、それぞれの情報処理装置110によって格納されたバックアップデータを取得してもよい。抽出部603は、取得したバックアップデータを解釈し、それぞれの情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのプラグインデータを、重複するプラグインのプラグインデータを統合して纏めた一覧情報を生成する。抽出部603は、一覧情報の中から、所定の機能を実現するプラグインのプラグインデータを抽出し、記憶部600に記憶する。
 抽出部603は、例えば、一覧情報の中から、自装置に割り振られた1以上の機能のそれぞれの機能を実現するプラグインのプラグインデータを抽出し、記憶部600に記憶する。これにより、抽出部603は、自装置に割り振られた機能を実現可能にすることができる。
 実行部604は、記憶部600に記憶されたプラグインデータに基づいて、プラグインを実行する。実行部604は、例えば、イベントメッセージを受信した場合、受信したイベントメッセージから特定されるイベントに対応付けて記憶部600に記憶されたプラグインデータに基づいて、プラグインを実行する。
 実行部604は、具体的には、ステートテーブル410を参照し、イベントメッセージの端末装置203のIDと、key-valueペアのkeyに対応するステート名とに対応付けられたプラグインIDを特定する。実行部604は、プラグインリポジトリテーブル500を参照し、プラグインIDに対応付けられたプラグインデータに基づいて、プラグインを実行する。これにより、実行部604は、イベントメッセージを処理することができる。また、実行部604は、抽出部603が抽出したプラグインデータが、記憶部600に記憶されているため、引き継いだ所定の機能を実現することができ、所定の機能を所定の端末装置203に提供することができる。
 出力部605は、プラグインの実行結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部605は、プラグインの実行結果を利用可能にすることができる。
 出力部605は、いずれかの機能部の処理結果を出力してもよい。これにより、出力部605は、いずれかの機能部の処理結果を利用者に通知可能にし、情報処理装置110の管理や運用、例えば、情報処理装置110の設定値の更新などを支援することができ、情報処理装置110の利便性の向上を図ることができる。
(並列分散処理システム200の動作例)
 次に、図7~図15を用いて、並列分散処理システム200の動作例について説明する。まず、図7~図9を用いて、分散ノード201の基本動作について説明する。
 ここで、図7の説明に移行し、並列分散処理システム200において、分散ノード201がプラグインを追加される際、ステートテーブル410を更新する一例について説明する。
 図7は、ステートテーブル410を更新する一例を示す説明図である。図7において、開発ノード204は、サービス開発者の操作入力に基づき、制御メッセージを、管理ノード202を介して、分散ノード201に送信する。図7の例では、制御メッセージは、プラグイン追加を表し、プラグインDを分散ノード201に追加することの要求である。
 分散ノード201は、制御メッセージを受信すると、制御メッセージに基づいて、プラグインDの実行条件と、プラグインDのプラグインIDとを対応付けたステート情報を、ステートテーブル410に追加する。図7の例では、実行条件は、ID「X」の端末装置203におけるイベントである。イベントは、例えば、運転時間の変化である。このため、イベントの種別を示すステート名は、運転時間である。
 これにより、分散ノード201は、所定の端末装置203におけるステートとプラグインとを対応付けて、ステートテーブル410を更新することができる。そして、分散ノード201は、所定の端末装置203におけるステートの変化に対応した、プラグインによるサービスを実装することができる。サービスは、例えば、速度の警告、長時間運転の警告などである。
 また、分散ノード201は、プラグインデータを、プラグインリポジトリテーブル500に記憶して管理する。図7の例では、分散ノード201は、プラグインDのプラグインデータを、プラグインリポジトリテーブル500に記憶する。
 次に、図8の説明に移行し、分散ノード201が、プラグインリポジトリテーブル500によりプラグインデータを管理する一例について説明する。
 図8は、プラグインデータを管理する一例を示す説明図である。図8に示すように、分散ノード201は、プラグインIDと、参照数と、プラグインデータとを対応付けたプラグイン情報を、プラグインリポジトリテーブル500に記憶し、プラグインデータを管理する。参照数は、ステートテーブル410のリスト400全体で、プラグインIDに対応付けられた実行条件の数を計数して得られる。プラグインリポジトリテーブル500は、分散ノード201ごとに1つ記憶される。
 次に、図9の説明に移行し、分散ノード201が、ステートテーブル410とプラグインリポジトリテーブル500とをバックアップする一例について説明する。
 図9は、ステートテーブル410とプラグインリポジトリテーブル500とをバックアップする一例を示す説明図である。図9において、分散ノード201は、一定時間ごと、または、管理ノード202の指示により、ステートテーブル410のリスト400と、プラグインリポジトリテーブル500のスナップショットとを、外部記憶装置205に保存する。これにより、分散ノード201は、分散ノード201間において機能を引継可能にすることができる。
 次に、図10~図15の説明に移行し、並列分散処理システム200に障害が発生した場合の、分散ノード201の動作について説明する。
 図10~図15は、障害発生時の分散ノード201の動作を示す説明図である。図10において、分散ノード201-2において障害が発生し、機能を提供することができなくなる。このため、分散ノード201-1と分散ノード201-3とで、分散ノード201-2が提供していた機能を引き継ぐことが望まれる。
 このため、管理ノード202は、分散ノード201-1に、分散ノード201-2が提供していた、端末装置203のID「3」に対応する機能を引き継ぐことの要求を送信する。また、管理ノード202は、分散ノード201-3に、分散ノード201-2が提供していた、端末装置203のID「4」に対応する機能を引き継ぐことの要求を送信する。ここで、図11の説明に移行し、要求を受け付けた分散ノード201-3の動作について説明する。
 図11において、分散ノード201-3は、Step1として、外部記憶装置205から、引き継ぐ機能を含む自装置に割り振られた1以上の機能のそれぞれの機能を実現するプラグインに関するステート情報を取得する。分散ノード201-3は、取得したステート情報から、ステートテーブル410のリスト400を再生成する。Step1の具体例は、図12を用いて後述する。
 分散ノード201-3は、Step2として、再生成したステートテーブル410のリスト400に基づいて、プラグインごとの参照数を算出し、プラグインリポジトリテーブル500を再生成する。Step2の具体例は、図13を用いて後述する。
 分散ノード201-3は、Step3として、外部記憶装置205から、それぞれの分散ノード201が格納したプラグインリポジトリテーブル500のスナップショット1101~1103を取得し、プラグイン情報を纏めた一覧情報を生成する。Step3の具体例は、図14を用いて後述する。
 分散ノード201-3は、Step4として、プラグインリポジトリテーブル500のうち、プラグインデータが空であるプラグイン情報があれば、一覧情報からプラグインデータを取得して設定する。Step4の具体例は、図15を用いて後述する。ここで、図12の説明に移行する。
 図12において、分散ノード201-3は、外部記憶装置205から、自装置に割り振られていた端末装置203のID「5,6」に対応するステート情報を取得する。また、分散ノード201-3は、引き継ぐ機能を実現するプラグインに関する、端末装置203のID「4」に対応するステート情報を取得する。分散ノード201-3は、取得したステート情報に基づいて、ステートテーブル410のリスト400を再生成する。次に、図13の説明に移行する。
 図13において、分散ノード201-3は、再生成したステートテーブル410のリスト400に基づいて、プラグインID「B」に対応する参照数「2」を算出し、プラグインリポジトリテーブル500に設定する。分散ノード201-3は、例えば、プラグインリポジトリテーブル500に、既に、プラグインID「B」に対応するプラグイン情報があるため、プラグイン情報に参照数「2」を上書きする。
 また、分散ノード201-3は、再生成したステートテーブル410のリスト400に基づいて、プラグインID「C」に対応する参照数「1」を算出し、プラグインリポジトリテーブル500に設定する。分散ノード201-3は、例えば、プラグインリポジトリテーブル500に、まだプラグインID「C」に対応するプラグイン情報がないため、プラグインID「C」と参照数「1」とを対応付けたプラグイン情報を追加する。
 また、分散ノード201-3は、再生成したステートテーブル410のリスト400に基づいて、プラグインID「D」に対応する参照数「1」を算出し、プラグインリポジトリテーブル500に設定する。分散ノード201-3は、例えば、プラグインリポジトリテーブル500に、既に、プラグインID「D」に対応するプラグイン情報があるため、プラグイン情報に参照数「1」を上書きする。ここで、分散ノード201-3は、プラグインID「C」のプラグインデータを有していない。次に、図14の説明に移行する。
 図14において、分散ノード201-3は、外部記憶装置205から、それぞれの分散ノード201が格納したプラグインリポジトリテーブル500のスナップショット1101~1103を取得し、プラグイン情報を纏めた一覧情報を生成する。分散ノード201-3は、自装置で有していないプラグインID「C」のプラグインデータを、一覧情報から探索する。次に、図15の説明に移行する。
 図15において、分散ノード201-3は、プラグインID「C」のプラグインデータを発見すると、プラグインリポジトリテーブル500のプラグインID「C」に対応するプラグイン情報に設定する。これにより、分散ノード201-3は、分散ノード201-2が提供していた機能を実現するプラグインのプラグインデータを取得することができ、分散ノード201-2が提供していた機能を引き継ぐことができる。
 ここでは、並列分散処理システム200に障害が発生したことに応じて、分散ノード201が、他の分散ノード201が提供していた機能を引き継ぐ場合について説明したが、これに限らない。例えば、並列分散処理システム200に分散ノード201が増設されたことに応じて、分散ノード201が、他の分散ノード201が提供していた機能を引き継ぐ場合があってもよい。
 ここでは、分散ノード201-3が、障害発生前のプラグインリポジトリテーブル500を流用し、プラグインリポジトリテーブル500に設定されたプラグインデータを利用する場合について説明したが、これに限らない。例えば、分散ノード201-3が、障害発生前のプラグインリポジトリテーブル500を削除し、プラグインリポジトリテーブル500を再生成する場合があってもよい。
(並列分散処理システム200の適用例)
 次に、図16~図20を用いて、並列分散処理システム200の適用例について説明する。
 図16は、並列分散処理システム200の適用例を示す説明図である。図16に示すように、並列分散処理システム200は、例えば、フレームワークとしてApache Flinkを利用する。並列分散処理システム200は、上述した分散ノード201に対応する計算機1601-1~1601-Nと、マスタノードである計算機1602と、上述した管理ノード202に対応する計算機1603とを含む。以下の説明では、計算機1601-1~1601-Nを区別せずに単に「計算機1601」と表記する場合がある。
 計算機1601は、Flink Slave Runtimeを動作させ、分散ノードソフトウェアを動作させる。計算機1601は、Apache Flinkのジョブとして、上述した動作例に示したような動作を実現する。計算機1602は、Flink Slave Runtimeを動作させる。計算機1603は、メッセージキューを有し、イベントメッセージを受け付け、計算機1601に送信する。
 計算機1602間は、例えば、クラスタ間通信ネットワーク1610により接続される。計算機1602と計算機1603とは、例えば、クラスタ間通信ネットワーク1610により接続される。次に、図17の説明に移行する。
 図17は、適用例におけるメッセージフローを示す説明図である。図17に示すように、計算機1603からイベントメッセージや制御メッセージが、計算機1601に送信される。計算機1601は、文字列解釈ブロック1701と仮想オブジェクトブロック1702とを有する。
 文字列解釈ブロック1701は、受け付けたイベントメッセージや制御メッセージの文字列を解釈し、受け付けたイベントメッセージや制御メッセージの宛先を判別する。そして、文字列解釈ブロック1701は、受け付けたイベントメッセージや制御メッセージを、自装置の仮想オブジェクトブロック1702、または他装置の仮想オブジェクトブロック1702に送信する。
 仮想オブジェクトブロック1702は、イベントメッセージや制御メッセージを処理する。仮想オブジェクトブロック1702は、具体的には、上述した動作例に示したような動作を実現するように、イベントメッセージや制御メッセージを処理する。次に、図18および図19の説明に移行し、上述した動作例に示したような動作を実現する、具体的な機能的構成例について説明する。
 図18および図19は、適用例における計算機1601の具体的な機能的構成例を示す説明図である。図18に示すように、文字列解釈ブロック1701は、文字列解釈モジュール1801と、宛先決定モジュール1802とを有する。
 文字列解釈ブロック1701は、受け付けたイベントメッセージや制御メッセージのJSON形式の文字列を内部表現に変換し、宛先決定モジュール1802に出力する。宛先決定モジュール1802は、内部表現に基づいて、受け付けたイベントメッセージや制御メッセージの宛先を判別し、自装置の仮想オブジェクトブロック1702、または他装置の仮想オブジェクトブロック1702に送信する。次に、図19の説明に移行する。
 図19に示すように、仮想オブジェクトブロック1702は、ステートテーブル1921のリスト1920と、プラグインリポジトリテーブル1930とを有する。ステートテーブル1921は、図4に示したステートテーブル410と同様である。プラグインリポジトリテーブル1930は、図5に示したプラグインリポジトリテーブル500と同様である。
 仮想オブジェクトブロック1702は、メッセージ判別部1911と、制御メッセージ処理部1912と、イベントメッセージ処理部1913と、チェックポイント管理部1914と、プラグインリポジトリ再生成部1915とを有する。
 メッセージ判別部1911は、イベントメッセージ1901、プラグインを追加または削除する制御メッセージ1902のいずれかのメッセージの入力を受け付ける。メッセージ判別部1911は、入力されたメッセージの種別を判別し、制御メッセージ処理部1912またはイベントメッセージ処理部1913に引き渡す。
 制御メッセージ処理部1912は、プラグインを追加または削除する制御メッセージ1902を解釈する。制御メッセージ処理部1912は、例えば、プラグインを追加する制御メッセージ1902から、IDと、対象ステート名と、追加するプラグインのプラグインデータとを抽出する。制御メッセージ処理部1912は、抽出した情報に基づいて、ステートテーブル1921のリスト1920と、プラグインリポジトリテーブル1930とを更新する。
 制御メッセージ処理部1912は、例えば、プラグインを削除する制御メッセージ1902から、IDと、対象ステート名と、削除するプラグインのプラグインデータとを抽出する。制御メッセージ処理部1912は、抽出した情報に基づいて、ステートテーブル1921のリスト1920と、プラグインリポジトリテーブル1930とを更新する。
 イベントメッセージ処理部1913は、イベントメッセージ1901を解釈し、IDと、1以上のkey-valueペアを抽出する。イベントメッセージ処理部1913は、抽出したIDに対応するステートテーブル1921を特定する。イベントメッセージ処理部1913は、特定したステートテーブル1921を、受け付けたkey-valueペアで更新する。イベントメッセージ処理部1913は、いずれかのステート内容が変更された場合、ステートが変化したと判定する。イベントメッセージ処理部1913は、ステートが変化すると、プラグインデータに基づいて、プラグインを実行する。
 チェックポイント管理部1914は、一定時間ごとに、チェックポイント番号をインクリメントする。チェックポイント管理部1914は、ステートテーブル1921のリスト1920と、プラグインリポジトリテーブル1930のスナップショットとを、チェックポイント番号と、自装置の識別子と対応付けて、外部記憶装置205に保存する。
 プラグインリポジトリ再生成部1915は、外部記憶装置205に保存された、ステートテーブル1921のリスト1920と、プラグインリポジトリテーブル1930のスナップショットを取得する。プラグインリポジトリ再生成部1915は、取得した情報に基づいて、ステートテーブル1921のリスト1920と、プラグインリポジトリテーブル1930のスナップショットを再生成する。次に、図20の説明に移行し、各種メッセージの具体例について説明する。
 図20は、各種メッセージの一例を示す説明図である。イベントメッセージ1901は、IDと、1以上のステートとのフィールドを有する。ステートは、key-valueペアである。IDのフィールドには、イベントの発生元の端末装置203を識別する情報としてIDが設定される。key-valueペアのフィールドには、key-valueペアが設定される。keyは、ステート名に対応し、イベントの種別を示す情報である。valueは、ステート内容に対応し、ステートの状態を示す特徴量である。ステートは、例えば、速度である。特徴量は、例えば、速度の値である。
 制御メッセージ1902は、IDと、対象ステート名と、操作種別と、プラグインデータとのフィールドを有する。IDのフィールドには、イベントの発生元の端末装置203を識別する情報としてIDが設定される。対象ステート名のフィールドには、プラグインの実行条件となるイベントの種別を示す情報として対象ステート名が設定される。操作種別のフィールドには、メッセージの種別として「プラグイン追加」または「プラグイン削除」が設定される。プラグインデータのフィールドには、プラグインの実行形式データであるプラグインデータが設定される。
(全体処理手順)
 次に、図21を用いて、分散ノード201が実行する、全体処理手順の一例について説明する。全体処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図21は、全体処理手順の一例を示すフローチャートである。図21において、分散ノード201は、メッセージの到着まで待機する(ステップS2101)。
 次に、分散ノード201は、受け付けたメッセージが制御メッセージであるか否かを判定する(ステップS2102)。ここで、制御メッセージではなく、イベントメッセージである場合(ステップS2102:No)、分散ノード201は、ステップS2103の処理に移行する。一方で、制御メッセージである場合(ステップS2102:Yes)、分散ノード201は、ステップS2104の処理に移行する。
 ステップS2103では、分散ノード201は、図22に後述するイベントメッセージ処理を実行する(ステップS2103)。そして、分散ノード201は、ステップS2101の処理に戻る。
 ステップS2104では、分散ノード201は、図25に後述する制御系イベント処理を実行する(ステップS2104)。そして、分散ノード201は、ステップS2101の処理に戻る。
(イベントメッセージ処理手順)
 次に、図22を用いて、分散ノード201が実行する、イベントメッセージ処理手順の一例について説明する。イベントメッセージ処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図22は、イベントメッセージ処理手順の一例を示すフローチャートである。図22において、分散ノード201は、ステートテーブル410のリスト400のうち、まだ選択していないステートテーブル410を選択する(ステップS2201)。
 次に、分散ノード201は、選択したステートテーブル410のIDが、受け付けたイベントメッセージのIDと一致するか否かを判定する(ステップS2202)。ここで、一致する場合(ステップS2202:Yes)、分散ノード201は、ステップS2206の処理に移行する。一方で、一致しない場合(ステップS2202:No)、分散ノード201は、ステップS2203の処理に移行する。
 ステップS2203では、分散ノード201は、ステートテーブル410のリスト400のうち、すべてのステートテーブル410を選択したか否かを判定する(ステップS2203)。ここで、未選択のステートテーブル410がある場合(ステップS2203:No)、分散ノード201は、ステップS2201の処理に戻る。一方で、すべてのステートテーブル410を選択している場合(ステップS2203:Yes)、分散ノード201は、ステップS2204の処理に移行する。
 ステップS2204では、分散ノード201は、新しいステートテーブル410を生成し、ステートテーブル410のリスト400に登録する(ステップS2204)。次に、分散ノード201は、登録したステートテーブル410のIDに、イベントメッセージのIDを設定する(ステップS2205)。そして、分散ノード201は、ステップS2206の処理に移行する。
 ステップS2206では、分散ノード201は、図23に後述するステート更新処理を実行する(ステップS2206)。そして、分散ノード201は、イベントメッセージ処理を終了する。
(ステート更新処理手順)
 次に、図23を用いて、分散ノード201が実行する、ステート更新処理手順の一例について説明する。ステート更新処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図23は、ステート更新処理手順の一例を示すフローチャートである。図23において、分散ノード201は、イベントメッセージのうち、まだ選択していないkey-valueペアを選択する(ステップS2301)。次に、分散ノード201は、ステートテーブル410のうち、まだ選択していないステート情報を選択する(ステップS2302)。
 そして、分散ノード201は、選択したkey-valueペアのkeyと、選択したステート情報のステート名とが一致するか否かを判定する(ステップS2303)。ここで、一致する場合(ステップS2303:Yes)、分散ノード201は、ステップS2306の処理に移行する。一方で、一致しない場合(ステップS2303:No)、分散ノード201は、ステップS2304の処理に移行する。
 ステップS2304では、分散ノード201は、ステートテーブル410のうち、すべてのステート情報を選択したか否かを判定する(ステップS2304)。ここで、未選択のステート情報がある場合(ステップS2304:No)、分散ノード201は、ステップS2302の処理に戻る。一方で、すべてのステート情報を選択している場合(ステップS2304:Yes)、分散ノード201は、ステップS2305の処理に移行する。
 ステップS2305では、分散ノード201は、ステートテーブル410に、選択したkey-valueペアのkeyを、ステート名として設定したステート情報を追加する(ステップS2305)。次に、分散ノード201は、選択したkey-valueペアのvalueを、ステート内容として、ステート情報に設定する(ステップS2306)。
 そして、分散ノード201は、ステート情報にプラグインIDが含まれるか否かを判定する(ステップS2307)。ここで、ステート情報にプラグインIDが含まれない場合(ステップS2307:No)、分散ノード201は、ステップS2309の処理に移行する。一方で、ステート情報にプラグインIDが含まれる場合(ステップS2307:Yes)、分散ノード201は、ステップS2308の処理に移行する。
 ステップS2308では、分散ノード201は、図24に後述するプラグイン処理を実行する(ステップS2308)。そして、分散ノード201は、ステップS2309の処理に移行する。
 ステップS2309では、分散ノード201は、イベントメッセージのうち、すべてのkey-valueペアを選択したか否かを判定する(ステップS2309)。ここで、未選択のkey-valueペアがある場合(ステップS2309:No)、分散ノード201は、ステップS2301の処理に戻る。一方で、すべてのkey-valueペアを選択している場合(ステップS2309:Yes)、分散ノード201は、ステート更新処理を終了する。
(プラグイン処理手順)
 次に、図24を用いて、分散ノード201が実行する、プラグイン処理手順の一例について説明する。プラグイン処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図24は、プラグイン処理手順の一例を示すフローチャートである。図24において、分散ノード201は、プラグインリポジトリテーブル500のうち、まだ選択していないプラグイン情報を選択する(ステップS2401)。
 次に、分散ノード201は、選択したプラグイン情報のプラグインIDが、実行対象のプラグインIDと一致するか否かを判定する(ステップS2402)。ここで、一致しない場合(ステップS2402:No)、分散ノード201は、ステップS2403の処理に移行する。一方で、一致する場合(ステップS2402:Yes)、分散ノード201は、ステップS2404の処理に移行する。
 ステップS2403では、分散ノード201は、プラグインリポジトリテーブル500のうち、すべてのプラグイン情報を選択したか否かを判定する(ステップS2403)。ここで、未選択のプラグイン情報がある場合(ステップS2403:No)、分散ノード201は、ステップS2401の処理に戻る。一方で、すべてのプラグイン情報を選択している場合(ステップS2403:Yes)、分散ノード201は、プラグイン処理を終了する。
 ステップS2404では、分散ノード201は、プラグイン情報のプラグインデータに基づいて、プラグインを実行する(ステップS2404)。そして、分散ノード201は、プラグイン処理を終了する。
(制御系イベント処理手順)
 次に、図25を用いて、分散ノード201が実行する、制御系イベント処理手順の一例について説明する。制御系イベント処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図25は、制御系イベント処理手順の一例を示すフローチャートである。図25において、分散ノード201は、制御メッセージがプラグイン追加を表すか否かを判定する(ステップS2501)。ここで、プラグイン追加を表す場合(ステップS2501:Yes)、分散ノード201は、ステップS2502の処理に移行する。一方で、プラグイン追加を表さない場合(ステップS2501:No)、分散ノード201は、ステップS2503の処理に移行する。
 ステップS2502では、分散ノード201は、図26および図27に後述するプラグイン追加処理を実行する(ステップS2502)。そして、分散ノード201は、制御系イベント処理を終了する。
 ステップS2503では、分散ノード201は、制御メッセージがプラグイン削除を表すか否かを判定する(ステップS2503)。ここで、プラグイン削除を表す場合(ステップS2503:Yes)、分散ノード201は、図28および図29に後述するプラグイン削除処理を実行する(ステップS2504)。そして、分散ノード201は、制御系イベント処理を終了する。一方で、プラグイン削除を表さない場合(ステップS2503:No)、分散ノード201は、制御系イベント処理を終了する。
(プラグイン追加処理手順)
 次に、図26および図27を用いて、分散ノード201が実行する、プラグイン追加処理手順の一例について説明する。プラグイン追加処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図26および図27は、プラグイン追加処理手順の一例を示すフローチャートである。図26において、分散ノード201は、ステートテーブル410のリスト400のうち、まだ選択していないステートテーブル410を選択する(ステップS2601)。
 次に、分散ノード201は、選択したステートテーブル410のIDが、受け付けた制御メッセージのIDと一致するか否かを判定する(ステップS2602)。ここで、一致する場合(ステップS2602:Yes)、分散ノード201は、ステップS2604の処理に移行する。一方で、一致しない場合(ステップS2602:No)、分散ノード201は、ステップS2603の処理に移行する。
 ステップS2603では、分散ノード201は、ステートテーブル410のリスト400のうち、すべてのステートテーブル410を選択したか否かを判定する(ステップS2603)。ここで、未選択のステートテーブル410がある場合(ステップS2603:No)、分散ノード201は、ステップS2601の処理に戻る。一方で、すべてのステートテーブル410を選択している場合(ステップS2603:Yes)、分散ノード201は、プラグイン追加処理を終了する。
 ステップS2604では、分散ノード201は、ステートテーブル410のうち、まだ選択していないステート情報を選択する(ステップS2604)。
 次に、分散ノード201は、選択したステート情報のステート名と、受け付けた制御メッセージのステート名とが一致するか否かを判定する(ステップS2605)。ここで、一致する場合(ステップS2605:Yes)、分散ノード201は、図27のステップS2701の処理に移行する。一方で、一致しない場合(ステップS2605:No)、分散ノード201は、ステップS2606の処理に移行する。
 ステップS2606では、分散ノード201は、ステートテーブル410のうち、すべてのステート情報を選択したか否かを判定する(ステップS2606)。ここで、未選択のステート情報がある場合(ステップS2606:No)、分散ノード201は、ステップS2604の処理に戻る。一方で、すべてのステート情報を選択している場合(ステップS2606:Yes)、分散ノード201は、プラグイン追加処理を終了する。ここで、図27の説明に移行する。
 図27において、分散ノード201は、制御メッセージから、追加するプラグインのプラグインデータを取得する(ステップS2701)。次に、分散ノード201は、プラグインIDとして、取得したプラグインデータのMD5ハッシュ値を算出する(ステップS2702)。そして、分散ノード201は、プラグインリポジトリテーブル500のうち、まだ選択していないプラグイン情報を選択する(ステップS2703)。
 次に、分散ノード201は、算出したプラグインIDと、選択したプラグイン情報のプラグインIDとが一致するか否かを判定する(ステップS2704)。ここで、一致する場合(ステップS2704:Yes)、分散ノード201は、ステップS2707の処理に移行する。一方で、一致しない場合(ステップS2704:No)、分散ノード201は、ステップS2705の処理に移行する。
 ステップS2705では、分散ノード201は、プラグインリポジトリテーブル500のうち、すべてのプラグイン情報を選択したか否かを判定する(ステップS2705)。ここで、未選択のプラグイン情報がある場合(ステップS2705:No)、分散ノード201は、ステップS2703の処理に戻る。一方で、すべてのプラグイン情報を選択している場合(ステップS2705:Yes)、分散ノード201は、ステップS2706の処理に移行する。
 ステップS2706では、分散ノード201は、プラグインリポジトリテーブル500に新たなプラグイン情報を追加し、新たなプラグイン情報に算出したプラグインIDと、取得したプラグインデータとを設定し、参照数を0に初期化する(ステップS2706)。
 ステップS2707では、分散ノード201は、ステートテーブル410のプラグインIDに、算出したプラグインIDを設定する(ステップS2707)。次に、分散ノード201は、プラグインリポジトリテーブル500のうち、追加するプラグインに対応する参照数をインクリメントする(ステップS2708)。そして、分散ノード201は、プラグイン追加処理を終了する。
(プラグイン削除処理手順)
 次に、図28および図29を用いて、分散ノード201が実行する、プラグイン削除処理手順の一例について説明する。プラグイン削除処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図28および図29は、プラグイン削除処理手順の一例を示すフローチャートである。図28において、分散ノード201は、ステートテーブル410のリスト400のうち、まだ選択していないステートテーブル410を選択する(ステップS2801)。
 次に、分散ノード201は、選択したステートテーブル410のIDが、受け付けた制御メッセージのIDと一致するか否かを判定する(ステップS2802)。ここで、一致する場合(ステップS2802:Yes)、分散ノード201は、ステップS2804の処理に移行する。一方で、一致しない場合(ステップS2802:No)、分散ノード201は、ステップS2803の処理に移行する。
 ステップS2803では、分散ノード201は、ステートテーブル410のリスト400のうち、すべてのステートテーブル410を選択したか否かを判定する(ステップS2803)。ここで、未選択のステートテーブル410がある場合(ステップS2803:No)、分散ノード201は、ステップS2801の処理に戻る。一方で、すべてのステートテーブル410を選択している場合(ステップS2803:Yes)、分散ノード201は、プラグイン削除処理を終了する。
 ステップS2804では、分散ノード201は、ステートテーブル410のうち、まだ選択していないステート情報を選択する(ステップS2804)。
 次に、分散ノード201は、選択したステート情報のステート名と、受け付けた制御メッセージのステート名とが一致するか否かを判定する(ステップS2805)。ここで、一致する場合(ステップS2805:Yes)、分散ノード201は、図29のステップS2901の処理に移行する。一方で、一致しない場合(ステップS2805:No)、分散ノード201は、ステップS2806の処理に移行する。
 ステップS2806では、分散ノード201は、ステートテーブル410のうち、すべてのステート情報を選択したか否かを判定する(ステップS2806)。ここで、未選択のステート情報がある場合(ステップS2806:No)、分散ノード201は、ステップS2804の処理に戻る。一方で、すべてのステート情報を選択している場合(ステップS2806:Yes)、分散ノード201は、プラグイン削除処理を終了する。ここで、図29の説明に移行する。
 図29において、分散ノード201は、制御メッセージから、削除するプラグインのプラグインデータを取得する(ステップS2901)。次に、分散ノード201は、プラグインIDとして、取得したプラグインデータのMD5ハッシュ値を算出する(ステップS2902)。そして、分散ノード201は、プラグインリポジトリテーブル500のうち、まだ選択していないプラグイン情報を選択する(ステップS2903)。
 次に、分散ノード201は、算出したプラグインIDと、選択したプラグイン情報のプラグインIDとが一致するか否かを判定する(ステップS2904)。ここで、一致する場合(ステップS2904:Yes)、分散ノード201は、ステップS2906の処理に移行する。一方で、一致しない場合(ステップS2904:No)、分散ノード201は、ステップS2905の処理に移行する。
 ステップS2905では、分散ノード201は、プラグインリポジトリテーブル500のうち、すべてのプラグイン情報を選択したか否かを判定する(ステップS2905)。ここで、未選択のプラグイン情報がある場合(ステップS2905:No)、分散ノード201は、ステップS2903の処理に戻る。一方で、すべてのプラグイン情報を選択している場合(ステップS2905:Yes)、分散ノード201は、プラグイン削除処理を終了する。
 ステップS2906では、分散ノード201は、ステートテーブル410のプラグインIDを空に設定する(ステップS2906)。次に、分散ノード201は、プラグインリポジトリテーブル500のうち、削除するプラグインに対応する参照数をデクリメントする(ステップS2907)。
 そして、分散ノード201は、プラグインリポジトリテーブル500の参照数が0であるか否かを判定する(ステップS2908)。ここで、参照数が0ではない場合(ステップS2908:No)、分散ノード201は、プラグイン削除処理を終了する。一方で、参照数が0である場合(ステップS2908:Yes)、分散ノード201は、ステップS2909の処理に移行する。
 ステップS2909では、分散ノード201は、プラグインリポジトリテーブル500から、参照数が0であるプラグイン情報を削除する(ステップS2909)。そして、分散ノード201は、プラグイン削除処理を終了する。
(チェックポイント処理手順)
 次に、図30を用いて、分散ノード201が実行する、チェックポイント処理手順の一例について説明する。チェックポイント処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図30は、チェックポイント処理手順の一例を示すフローチャートである。図30において、分散ノード201は、チェックポイント番号を0に初期化する(ステップS3001)。次に、分散ノード201は、図31に後述するチェックポイント保存処理を実行する(ステップS3002)。
 そして、分散ノード201は、チェックポイント番号をインクリメントする(ステップS3003)。その後、分散ノード201は、一定時間待機し(ステップS3004)、ステップS3002の処理に戻る。
(チェックポイント保存処理手順)
 次に、図31を用いて、分散ノード201が実行する、チェックポイント保存処理手順の一例について説明する。チェックポイント保存処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図31は、チェックポイント保存処理手順の一例を示すフローチャートである。図31において、分散ノード201は、ステートテーブル410のリスト400から、まだ選択していないステートテーブル410を選択する(ステップS3101)。
 次に、分散ノード201は、選択したステートテーブル410を、チェックポイント番号と、自ノードの識別子と、選択したステートテーブル410のIDとに対応付けて、外部記憶装置205に保存する(ステップS3102)。
 そして、分散ノード201は、ステートテーブル410のリスト400のうち、すべてのステートテーブル410を選択したか否かを判定する(ステップS3103)。ここで、未選択のステートテーブル410がある場合(ステップS3103:No)、分散ノード201は、ステップS3101の処理に戻る。一方で、すべてのステートテーブル410を選択している場合(ステップS3103:Yes)、分散ノード201は、ステップS3104の処理に移行する。
 ステップS3104では、分散ノード201は、プラグインリポジトリテーブル500のスナップショットを、チェックポイント番号と、自ノードの識別子とに対応付けて、外部記憶装置205に保存する(ステップS3104)。そして、分散ノード201は、チェックポイント保存処理を終了する。
(回復処理手順)
 次に、図32を用いて、分散ノード201が実行する、回復処理手順の一例について説明する。回復処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図32は、回復処理手順の一例を示すフローチャートである。図32において、分散ノード201は、外部記憶装置205に保存された、直近のチェックポイント番号と、自ノードの識別子と、自ノードに割り当てられたIDとの組み合わせに対応する、ステート情報を取得する(ステップS3201)。次に、分散ノード201は、取得したステート情報に基づいて、ステートテーブル410を更新する(ステップS3202)。
 そして、分散ノード201は、他ノードから引き継ぐステート情報が存在するか否かを判定する(ステップS3203)。ここで、存在しない場合(ステップS3203:No)、分散ノード201は、回復処理を終了する。一方で、存在する場合(ステップS3203:Yes)、分散ノード201は、ステップS3204の処理に移行する。
 ステップS3204では、分散ノード201は、引き継ぐステート情報を、外部記憶装置205から取得する(ステップS3204)。次に、分散ノード201は、取得したステート情報に基づいて、ステートテーブル410を更新する(ステップS3205)。そして、分散ノード201は、図33~図35に後述する再生成処理を実行する(ステップS3206)。その後、分散ノード201は、回復処理を終了する。
(再生成処理手順)
 次に、図33~図35を用いて、分散ノード201が実行する、再生成処理手順の一例について説明する。再生成処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
 図33~図35は、再生成処理手順の一例を示すフローチャートである。図33において、分散ノード201は、プラグインリポジトリテーブル500の参照数を0に初期化する(ステップS3301)。
 次に、分散ノード201は、ステートテーブル410のリスト400のうち、まだ選択していないステートテーブル410を選択する(ステップS3302)。そして、分散ノード201は、選択したステートテーブル410のうち、まだ選択していないステート情報を選択する(ステップS3303)。
 次に、分散ノード201は、選択したステート情報にプラグインIDが含まれるか否かを判定する(ステップS3304)。ここで、プラグインIDが含まれる場合(ステップS3304:Yes)、分散ノード201は、図34のステップS3401の処理に移行する。一方で、プラグインIDが含まれない場合(ステップS3304:No)、分散ノード201は、ステップS3305の処理に移行する。
 ステップS3305では、分散ノード201は、選択したステートテーブル410のうち、すべてのステート情報を選択したか否かを判定する(ステップS3305)。ここで、未選択のステート情報がある場合(ステップS3305:No)、分散ノード201は、ステップS3303の処理に戻る。一方で、すべてのステート情報を選択している場合(ステップS3305:Yes)、分散ノード201は、ステップS3306の処理に移行する。
 ステップS3306では、分散ノード201は、ステートテーブル410のリスト400のうち、すべてのステートテーブル410を選択したか否かを判定する(ステップS3306)。ここで、未選択のステートテーブル410がある場合(ステップS3306:No)、分散ノード201は、ステップS3302の処理に戻る。一方で、すべてのステートテーブル410を選択している場合(ステップS3306:Yes)、分散ノード201は、図35のステップS3501の処理に移行する。まず、図34の説明に移行する。
 図34において、分散ノード201は、プラグインリポジトリテーブル500のうち、まだ選択していないプラグイン情報を選択する(ステップS3401)。
 次に、分散ノード201は、選択したステート情報のプラグインIDと、選択したプラグイン情報のプラグインIDとが一致するか否かを判定する(ステップS3402)。ここで、一致する場合(ステップS3402:Yes)、分散ノード201は、ステップS3405の処理に移行する。一方で、一致しない場合(ステップS3402:No)、分散ノード201は、ステップS3403の処理に移行する。
 ステップS3403では、分散ノード201は、すべてのプラグイン情報を選択したか否かを判定する(ステップS3403)。ここで、未選択のプラグイン情報がある場合(ステップS3403:No)、分散ノード201は、ステップS3401の処理に戻る。一方で、すべてのプラグイン情報を選択している場合(ステップS3403:Yes)、分散ノード201は、ステップS3404の処理に移行する。
 ステップS3404では、分散ノード201は、プラグインリポジトリテーブル500に、選択したステート情報のプラグインIDが設定された新しいプラグイン情報を追加し、参照数を0に初期化する(ステップS3404)。そして、分散ノード201は、ステップS3405の処理に移行する。
 ステップS3405では、分散ノード201は、プラグイン情報の参照数をインクリメントする(ステップS3405)。そして、分散ノード201は、図33のステップS3305の処理に戻る。次に、図35の説明に移行する。
 図35において、分散ノード201は、外部記憶装置205から、直近のチェックポイント番号と対応付けられたリポジトリテーブルのスナップショットを取得する(ステップS3501)。次に、分散ノード201は、取得したスナップショットに基づいて、プラグインIDとプラグインデータとを対応付けた一覧情報を生成する(ステップS3502)。そして、分散ノード201は、プラグインリポジトリテーブル500のうち、まだ選択していないプラグイン情報を選択する(ステップS3503)。
 次に、分散ノード201は、選択したプラグイン情報のプラグインデータが空であるか否かを判定する(ステップS3504)。ここで、空ではない場合(ステップS3504:No)、分散ノード201は、ステップS3506の処理に移行する。一方で、空である場合(ステップS3504:Yes)、分散ノード201は、ステップS3505の処理に移行する。
 ステップS3505では、分散ノード201は、空であるプラグインデータを、一覧情報から探索し、選択したプラグイン情報に設定する(ステップS3505)。そして、分散ノード201は、ステップS3506の処理に移行する。
 ステップS3506では、分散ノード201は、すべてのプラグイン情報を選択したか否かを判定する(ステップS3506)。ここで、未選択のプラグイン情報がある場合(ステップS3506:No)、分散ノード201は、ステップS3503の処理に戻る。一方で、すべてのプラグイン情報を選択している場合(ステップS3506:Yes)、分散ノード201は、再生成処理を終了する。
 以上説明したように、情報処理装置110によれば、自装置とは異なる他の情報処理装置110が所定の端末装置に提供していた所定の機能を引き継ぐことの要求を受け付けることができる。情報処理装置110によれば、要求を受け付けた場合、外部記憶装置130から、他の情報処理装置110によって格納されたバックアップデータを取得することができる。情報処理装置110によれば、取得したバックアップデータを解釈し、他の情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードのうち、所定の機能を実現するプラグインのコードを抽出することができる。情報処理装置110によれば、抽出したコードに基づいて、所定の機能を所定の端末装置に提供することができる。これにより、情報処理装置110は、他の情報処理装置110が提供していた機能を実現するプラグインのコードを取得することができ、他の情報処理装置110が提供していた機能を引き継ぐことができる。
 情報処理装置110によれば、外部記憶装置130から、他の情報処理装置110によって格納された、第1の対応情報を集約したバックアップデータ、および、第2の対応情報を取得することができる。情報処理装置110によれば、取得したバックアップデータを解釈し、取得した第2の対応情報を参照し、要求に含まれる所定の端末装置の識別子に基づいて、第1の対応情報のうち、所定の機能を実現するプラグインのコードを抽出することができる。これにより、情報処理装置110は、所定の端末装置の識別子に基づいて、他の情報処理装置110が提供していた機能を実現するプラグインのコードを特定しやすくすることができる。
 情報処理装置110によれば、外部記憶装置130から、自装置によって格納されたバックアップデータを取得することができる。情報処理装置110によれば、取得したバックアップデータを解釈し、自装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを抽出することができる。これにより、情報処理装置110は、自装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを、バックアップ時の状態に戻すことができる。
 情報処理装置110によれば、外部記憶装置130から、それぞれの情報処理装置110によって格納されたバックアップデータを取得することができる。情報処理装置110によれば、取得したバックアップデータを解釈し、それぞれの情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを、重複するプラグインのコードを統合して纏めることができる。情報処理装置110によれば、所定の機能を実現するプラグインのコードを抽出することができる。これにより、情報処理装置110は、引き継ぐ機能を提供していた情報処理装置110を特定しなくても、引き継ぐ機能を実現するプラグインのコードを抽出することができる。
 情報処理装置110によれば、管理装置から、プラグインのコードを受信して記憶することができる。これにより、情報処理装置110は、プラグインのコードを記憶することができる。また、情報処理装置110は、管理装置がプラグインのコードを送信した後、破棄していても、外部記憶装置130に基づいて、プラグインのコードを抽出することができる。
 情報処理装置110によれば、いずれかの情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを、所定のデータ形式に沿って区切って集約するバックアップデータを取得することができる。そして、情報処理装置110によれば、バックアップデータを解釈し、プラグイン単位でプラグインのコードを取得することができる。これにより、情報処理装置110は、外部記憶装置130がバックアップデータを解釈する機能を有していなくても、正常に動作することができる。
 情報処理装置110によれば、いずれかの情報処理装置110が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを、暗号化して集約するバックアップデータを取得することができる。そして、情報処理装置110によれば、バックアップデータを解釈し、プラグイン単位でプラグインのコードを取得することができる。これにより、情報処理装置110は、外部記憶装置130がバックアップデータを解釈し、復号する機能を有していなくても、正常に動作することができる。また、情報処理装置110は、バックアップデータを暗号化してセキュリティの向上を図ることができる。
 なお、本実施の形態で説明した引継方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した引継プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した引継プログラムは、インターネット等のネットワークを介して配布してもよい。
 100,200 並列分散処理システム
 110 情報処理装置
 120 コンピュータ
 130,205 外部記憶装置
 201 分散ノード
 202 管理ノード
 203 端末装置
 204 開発ノード
 210 ネットワーク
 300 バス
 301 CPU
 302 メモリ
 303 ネットワークI/F
 304 記録媒体I/F
 305 記録媒体
 400,1920 リスト
 410,1921 ステートテーブル
 420 図形
 500,1930 プラグインリポジトリテーブル
 600 記憶部
 601 取得部
 602 更新部
 603 抽出部
 604 実行部
 605 出力部
 1101~1103 スナップショット
 1601~1603 計算機
 1610 クラスタ間通信ネットワーク
 1701 文字列解釈ブロック
 1702 仮想オブジェクトブロック
 1801 文字列解釈モジュール
 1802 宛先決定モジュール
 1901 イベントメッセージ
 1902 制御メッセージ
 1911 メッセージ判別部
 1912 制御メッセージ処理部
 1913 イベントメッセージ処理部
 1914 チェックポイント管理部
 1915 プラグインリポジトリ再生成部

Claims (10)

  1.  端末装置に機能を提供する複数の情報処理装置のうち第1の情報処理装置に、
     前記複数の情報処理装置のうち前記第1の情報処理装置とは異なる第2の情報処理装置が所定の端末装置に提供していた所定の機能を引き継ぐことの要求を受け付け、
     前記要求を受け付けた場合、前記複数の情報処理装置のそれぞれの情報処理装置によって、前記情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを集約したバックアップデータが格納される外部記憶装置から、前記第2の情報処理装置によって格納されたバックアップデータを取得し、
     取得した前記バックアップデータを解釈し、前記第2の情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードのうち、前記所定の機能を実現するプラグインのコードを抽出し、
     抽出した前記コードに基づいて、前記所定の機能を前記所定の端末装置に提供する、
     処理を実行させることを特徴とする引継プログラム。
  2.  前記要求は、前記所定の端末装置の識別子を含み、
     前記バックアップデータは、前記情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインの識別子とコードとを対応付けた対応情報を集約し、
     前記外部記憶装置は、さらに、前記情報処理装置が提供していた1以上の機能のそれぞれの機能について、前記機能を実現するプラグインの識別子と、前記機能が提供される端末装置の識別子とを対応付けた対応情報が格納され、
     前記取得する処理は、
     前記外部記憶装置から、前記第2の情報処理装置によって格納された、前記第2の情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインの識別子とコードとを対応付けた第1の対応情報を集約したバックアップデータ、および、前記第2の情報処理装置が提供していた1以上の機能のそれぞれの機能について、前記機能を実現するプラグインの識別子と、前記機能を提供する端末装置の識別子とを対応付けた第2の対応情報を取得し、
     前記抽出する処理は、
     取得した前記バックアップデータを解釈し、取得した前記第2の対応情報を参照し、前記要求に含まれる前記所定の端末装置の識別子に基づいて、前記第1の対応情報のうち、前記所定の機能を実現するプラグインのコードを抽出する、ことを特徴とする請求項1に記載の引継プログラム。
  3.  前記取得する処理は、
     前記外部記憶装置から、さらに、前記第1の情報処理装置によって格納されたバックアップデータを取得し、
     前記抽出する処理は、
     取得した前記第1の情報処理装置によって格納されたバックアップデータを解釈し、前記第1の情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを抽出する、ことを特徴とする請求項1または2に記載の引継プログラム。
  4.  前記取得する処理は、
     前記外部記憶装置から、前記それぞれの情報処理装置によって格納されたバックアップデータを取得し、
     前記抽出する処理は、
     取得した前記それぞれの情報処理装置によって格納されたバックアップデータを解釈し、前記それぞれの情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを、重複するプラグインのコードを統合して纏め、前記所定の機能を実現するプラグインのコードを抽出する、ことを特徴とする請求項1~3のいずれか一つに記載の引継プログラム。
  5.  前記情報処理装置は、前記情報処理装置にプラグインのコードを送信した後で前記プラグインのコードを破棄する管理装置から、前記プラグインのコードを受信して記憶する、ことを特徴とする請求項1~4のいずれか一つに記載の引継プログラム。
  6.  前記バックアップデータは、前記情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを、所定のデータ形式に沿って区切って集約する、ことを特徴とする請求項1~5のいずれか一つに記載の引継プログラム。
  7.  前記バックアップデータは、前記情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを、暗号化して集約する、ことを特徴とする請求項1~6のいずれか一つに記載の引継プログラム。
  8.  端末装置に機能を提供する複数の情報処理装置のうち第1の情報処理装置が、
     前記複数の情報処理装置のうち前記第1の情報処理装置とは異なる第2の情報処理装置が所定の端末装置に提供していた所定の機能を引き継ぐことの要求を受け付け、
     前記要求を受け付けた場合、前記複数の情報処理装置のそれぞれの情報処理装置によって、前記情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを集約したバックアップデータが格納される外部記憶装置から、前記第2の情報処理装置によって格納されたバックアップデータを取得し、
     取得した前記バックアップデータを解釈し、前記第2の情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードのうち、前記所定の機能を実現するプラグインのコードを抽出し、
     抽出した前記コードに基づいて、前記所定の機能を前記所定の端末装置に提供する、
     処理を実行することを特徴とする引継方法。
  9.  端末装置に機能を提供する複数の情報処理装置のいずれかの情報処理装置であって、
     前記複数の情報処理装置のうち、自装置とは異なる他の情報処理装置が所定の端末装置に提供していた所定の機能を引き継ぐことの要求を受け付け、
     前記要求を受け付けた場合、前記複数の情報処理装置のそれぞれの情報処理装置によって、当該情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを集約したバックアップデータが格納される外部記憶装置から、前記他の情報処理装置によって格納されたバックアップデータを取得し、
     取得した前記バックアップデータを解釈し、前記他の情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードのうち、前記所定の機能を実現するプラグインのコードを抽出し、
     抽出した前記コードに基づいて、前記所定の機能を前記所定の端末装置に提供する、
     制御部を有することを特徴とする情報処理装置。
  10.  端末装置に機能を提供する複数の情報処理装置を含む並列分散処理システムであって、
     前記複数の情報処理装置のそれぞれの情報処理装置は、
     前記複数の情報処理装置のうち、自装置とは異なる他の情報処理装置が所定の端末装置に提供していた所定の機能を引き継ぐことの要求を受け付け、
     前記要求を受け付けた場合、前記複数の情報処理装置のそれぞれの情報処理装置によって、当該情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードを集約したバックアップデータが格納される外部記憶装置から、前記他の情報処理装置によって格納されたバックアップデータを取得し、
     取得した前記バックアップデータを解釈し、前記他の情報処理装置が提供していた1以上の機能のそれぞれの機能を実現するプラグインのコードのうち、前記所定の機能を実現するプラグインのコードを抽出し、
     抽出した前記コードに基づいて、前記所定の機能を前記所定の端末装置に提供する、
     ことを特徴とする並列分散処理システム。
PCT/JP2019/000977 2019-01-15 2019-01-15 引継プログラム、引継方法、情報処理装置、および並列分散処理システム Ceased WO2020148815A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/000977 WO2020148815A1 (ja) 2019-01-15 2019-01-15 引継プログラム、引継方法、情報処理装置、および並列分散処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/000977 WO2020148815A1 (ja) 2019-01-15 2019-01-15 引継プログラム、引継方法、情報処理装置、および並列分散処理システム

Publications (1)

Publication Number Publication Date
WO2020148815A1 true WO2020148815A1 (ja) 2020-07-23

Family

ID=71614076

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/000977 Ceased WO2020148815A1 (ja) 2019-01-15 2019-01-15 引継プログラム、引継方法、情報処理装置、および並列分散処理システム

Country Status (1)

Country Link
WO (1) WO2020148815A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007310807A (ja) * 2006-05-22 2007-11-29 Ricoh Co Ltd プラグインバージョン管理システム
JP2011076128A (ja) * 2009-09-29 2011-04-14 Hitachi Ltd クラスタを考慮してレプリケーションを管理する管理方法及びシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007310807A (ja) * 2006-05-22 2007-11-29 Ricoh Co Ltd プラグインバージョン管理システム
JP2011076128A (ja) * 2009-09-29 2011-04-14 Hitachi Ltd クラスタを考慮してレプリケーションを管理する管理方法及びシステム

Similar Documents

Publication Publication Date Title
JP5315460B1 (ja) ファイル管理システム及びファイル管理方法
US20170206353A1 (en) Method and system for preventing malicious alteration of data in computer system
WO2014045316A1 (en) Distributed backup system for determining access destination based on multiple performance indexes
CN101826993A (zh) 一种安全事件监测方法、系统及装置
CN109753381B (zh) 一种基于对象存储的持续数据保护方法
US20130275541A1 (en) Reparse point replication
CN103473277A (zh) 文件系统的快照方法和装置
JP2016513306A (ja) データ格納方法、データストレージ装置、及びストレージデバイス
CN112804348A (zh) 云监测中心对边缘计算节点上报数据的重复性判定方法
CN115421969B (zh) 备份数据恢复方法及计算设备
JP5422657B2 (ja) ストレージシステム及びストレージシステムの処理効率向上方法
CN110413691A (zh) 基于区块链的数据库备份方法、恢复方法及装置
US20210397599A1 (en) Techniques for generating a consistent view of an eventually consistent database
CN115458106A (zh) 传染病风险流调信息同步与数据脱敏的管理方法及其应用
WO2020148815A1 (ja) 引継プログラム、引継方法、情報処理装置、および並列分散処理システム
CN114880319A (zh) 一种备份索引的方法及装置
Long et al. Regeneration protocols for replicated objects
CN113704358A (zh) 分布式任务协同处理方法、装置和计算机设备
CN112732495A (zh) 一种信息交互方法、装置及存储介质
US20210248108A1 (en) Asynchronous data synchronization and reconciliation
CN118585568A (zh) 自动驾驶平台数据共享方法、系统、装置及电子设备
CN117707724A (zh) 一种基于分布式计算的MongoDB静态脱敏方法
CN109558205B (zh) 磁盘访问方法及装置
CN115098300B (zh) 一种数据库的备份方法、容灾方法、装置及设备
CN117785556A (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: 19909882

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19909882

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP