WO2012042607A1 - 分散コンピューティングシステム - Google Patents
分散コンピューティングシステム Download PDFInfo
- Publication number
- WO2012042607A1 WO2012042607A1 PCT/JP2010/066906 JP2010066906W WO2012042607A1 WO 2012042607 A1 WO2012042607 A1 WO 2012042607A1 JP 2010066906 W JP2010066906 W JP 2010066906W WO 2012042607 A1 WO2012042607 A1 WO 2012042607A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- master
- stored
- client
- response
- computing system
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1443—Transmit or communication errors
Definitions
- the present invention relates to a distributed computing system including a cell and a client including a plurality of replicas that are synchronized with each other, and more particularly to a session management technique between the cell and the client.
- the following replication technology is known for a distributed computing system including a cell including a plurality of replicas and a client.
- the virtual IP address of the load balancer serves as a connection window with the client (see Patent Documents 1 and 2), and requests from the client are transmitted to the replica via the load balancer.
- the response from the replica is sent to the client via the load balancer.
- the production system (primary system) and standby system (standby system) replicas are provided (see Patent Documents 3 and 4), and the production system replica that provided services to the client fails.
- the standby replica in the hot standby state takes over the processing of the production replica and continues to provide the service.
- RAID devices provide a virtualized interface for disks, and store data multiplexed and redundant by mirroring or pooling.
- the replica group can be seen as one virtual system from the client by the virtualization technology, and the distributed cooperative method between replicas is made into a black box.
- the client loses the access method to the replica inside the black box. Even if the service is provided, the service provision by the cell stops.
- the present invention has been made in view of the above circumstances, and an object of the present invention is to provide a distributed computing system that can prevent service stoppage due to the occurrence of a failure at a connection window with a cell client. .
- the invention according to claim 1 includes a cell including a plurality of replicas synchronized with each other and a client, and manages a session between the cell and the client in the client.
- First connection means for storing connection information for the client to connect to each replica and a client ID for identifying the client as session information for the connection to any one of the plurality of replicas
- Processing request means for performing a predetermined processing request and notification of the client ID based on the information, and receiving a processing request from the processing request means to each of the replicas, and indicating that there has been a processing request and the client ID
- Process request notifying means for notifying other replicas, and receiving a process request from the process request means,
- a processing execution unit that receives a notification from the processing request notification unit of the replica that has received the processing request and establishes the session with the client based on the client ID and performs the predetermined processing And a distributed computing system.
- the invention according to claim 2 is the distributed computing system according to claim 1, wherein the predetermined process is an update process.
- the invention according to claim 3 is the distributed computing system according to claim 1, wherein the predetermined processing request is a session opening request for causing each replica to open the session.
- the first storage means selects one of the plurality of replicas as a master. , Storing a master ID for specifying which replica is the master, and the processing requesting unit performs the predetermined processing on the replica specified by the master ID stored in the first storage unit. And a notification of the client ID.
- the invention according to claim 5 is the distributed computing system according to claim 4, wherein the first storage means is selected when one of the plurality of replicas is selected as a reference to be used for reference processing.
- a reference ID for identifying whether the replica of the first reference is a reference is stored, and the processing requesting unit requests a reference processing for the replica specified by the reference ID stored in the first storage unit. It is characterized by that.
- a response generation unit that generates a response to the request for the predetermined process, and the master ID in the first storage Second storage means for storing the response generated independently of the means and storing the response generated by the response generation means; and a response transmission means capable of transmitting the response stored in the second storage means to the client And when the response transmission means determines that its replica is the master based on the master ID stored in the second storage means, the response stored in the second storage means It transmits to the said client, It is characterized by the above-mentioned.
- a response generation means for generating a response to the request for the predetermined processing in each replica, and the master ID in the first storage Second storage means for storing the response generated independently of the means and storing the response generated by the response generation means; and a response transmission means capable of transmitting the response stored in the second storage means to the client And when the response transmission means determines that its replica is the master based on the master ID stored in the second storage means, the response stored in the second storage means It transmits to the said client, It is characterized by the above-mentioned.
- the invention according to claim 8 is the distributed computing system according to claim 6, wherein the response transmission means determines that its replica is not a master based on the master ID stored in the second storage means. Sometimes, information on the master ID is transmitted to the client instead of the response stored in the second storage means.
- the invention according to claim 9 is the distributed computing system according to claim 7, wherein the response transmission unit determines that its replica is not a master based on a master ID stored in the second storage unit. Sometimes, information on the master ID is transmitted to the client instead of the response stored in the second storage means.
- the distributed computing system when there is a master change among the plurality of replicas in each of the replicas, information on the master ID of the new master is sent to the client.
- a master change notification means for notifying is provided.
- the distributed computing system when there is a master change among the plurality of replicas in each of the replicas, information on a master ID of a new master is transmitted to the client.
- a master change notification means for notifying is provided.
- the invention according to claim 12 is the distributed computing system according to claim 6, wherein when each master has a master change among the plurality of replicas, information on a master ID of a new master is sent to the client.
- a master change notification means for notifying is provided.
- the distributed computing system when there is a master change among the plurality of replicas in each of the replicas, information on a master ID of a new master is transmitted to the client.
- a master change notification means for notifying is provided.
- the invention according to claim 14 is the distributed computing system according to claim 8, wherein when each master has a master change among the plurality of replicas, information on a master ID of a new master is sent to the client.
- a master change notification means for notifying is provided.
- the distributed computing system when there is a master change among the plurality of replicas in each of the replicas, information on a master ID of a new master is transmitted to the client.
- a master change notification means for notifying is provided.
- the invention according to claim 16 is the distributed computing system according to claim 8, wherein the first storage means stores a master table that stores a master ID before the change when the master ID is changed. If the master ID is the same as the master ID stored in the master table when receiving information on the master ID from the response transmission means to the client, the master ID stored in the first storage means If the master ID is not the same as the master ID stored in the master table, the master ID changing unit replaces the master ID stored in the first storage unit with the master ID. Is provided.
- the invention according to claim 17 is the distributed computing system according to claim 9, wherein the first storage means stores a master table that stores a master ID before the change when the master ID is changed. If the master ID is the same as the master ID stored in the master table when receiving information on the master ID from the response transmission means to the client, the master ID stored in the first storage means If the master ID is not the same as the master ID stored in the master table, the master ID changing unit replaces the master ID stored in the first storage unit with the master ID. Is provided.
- the invention according to claim 18 is the distributed computing system according to claim 10, wherein the first storage means stores a master table that stores a master ID before the change when the master ID is changed. If the master ID is the same as the master ID stored in the master table when the client receives information on the master ID from the master change notification means, the master stored in the first storage means Change the master ID without replacing the master ID stored in the first storage means with the master ID if the master ID is not the same as the master ID stored in the master table. Means are provided.
- the invention according to claim 19 is the distributed computing system according to claim 11, wherein the first storage means stores a master table that stores a master ID before the change when the master ID is changed. If the master ID is the same as the master ID stored in the master table when the client receives information on the master ID from the master change notification means, the master stored in the first storage means Change the master ID without replacing the master ID stored in the first storage means with the master ID if the master ID is not the same as the master ID stored in the master table. Means are provided.
- the invention according to claim 20 is the distributed computing system according to claim 12, wherein the first storage means stores a master table that stores a master ID before the change when the master ID is changed. If the master ID is the same as the master ID stored in the master table when the client receives information on the master ID from the master change notification means, the master stored in the first storage means Change the master ID without replacing the master ID stored in the first storage means with the master ID if the master ID is not the same as the master ID stored in the master table. Means are provided.
- the invention according to claim 21 is the distributed computing system according to claim 13, wherein the first storage means stores a master table that stores a master ID before the change when the master ID is changed. If the master ID is the same as the master ID stored in the master table when the client receives information on the master ID from the master change notification means, the master stored in the first storage means Change the master ID without replacing the master ID stored in the first storage means with the master ID if the master ID is not the same as the master ID stored in the master table. Means are provided.
- the invention according to claim 22 is the distributed computing system according to claim 14, wherein the first storage means stores a master table for storing a master ID before change when the master ID is changed. If the master ID is the same as the master ID stored in the master table when receiving information on the master ID from the response transmission means or the master change notification means to the client, the first storage means If the master ID is not the same as the master ID stored in the master table, the master ID stored in the first storage means is used as the master ID. A master ID changing means for replacement is provided.
- the invention according to claim 23 is the distributed computing system according to claim 15, wherein the first storage means stores a master table that stores a master ID before the change when the master ID is changed. If the master ID is the same as the master ID stored in the master table when receiving information on the master ID from the response transmission means or the master change notification means to the client, the first storage means If the master ID is not the same as the master ID stored in the master table, the master ID stored in the first storage means is used as the master ID. A master ID changing means for replacement is provided.
- the invention according to claim 24 is the distributed computing system according to claim 16, wherein when the master ID changing unit receives information on the master ID from the response transmitting unit, the master ID is a replica of the transmission source Or the master ID stored in the first storage means is replaced when the master ID is the same as the master ID stored in the first storage means. It is characterized by not.
- the invention according to claim 25 is the distributed computing system according to claim 17, wherein when the master ID changing unit receives information on the master ID from the response transmitting unit, the master ID is a replica of the transmission source. Or the master ID stored in the first storage means is replaced when the master ID is the same as the master ID stored in the first storage means. It is characterized by not.
- the invention according to claim 26 is the distributed computing system according to claim 18, wherein when the master ID changing means receives information on the master ID from the response sending means, the master ID is a replica of the sending source. Or the master ID stored in the first storage means is replaced when the master ID is the same as the master ID stored in the first storage means. It is characterized by not.
- the master ID changing unit when the master ID changing unit receives information on the master ID from the response transmitting unit, the master ID is a replica of the transmission source Or the master ID stored in the first storage means is replaced when the master ID is the same as the master ID stored in the first storage means. It is characterized by not.
- the invention according to claim 28 is the distributed computing system according to claim 20, wherein when the master ID changing means receives information on the master ID from the response transmitting means, the master ID is a replica of the transmission source. Or the master ID stored in the first storage means is replaced when the master ID is the same as the master ID stored in the first storage means. It is characterized by not.
- the invention according to claim 29 is the distributed computing system according to claim 21, wherein when the master ID changing unit receives information on the master ID from the response transmitting unit, the master ID is a replica of the transmission source. Or the master ID stored in the first storage means is replaced when the master ID is the same as the master ID stored in the first storage means. It is characterized by not.
- the invention according to claim 30 is the distributed computing system according to claim 22, wherein the master ID changing means receives the master ID information from the response sending means or the master change notifying means. If the ID is the same as the ID of the replica of the transmission source, or if the master ID is the same as the master ID stored in the first storage means, the ID is stored in the first storage means. The master ID is not replaced.
- the invention according to claim 31 is the distributed computing system according to claim 23, wherein when the master ID changing means receives information on the master ID from the response sending means or the master change notifying means, the master ID changing means If the ID is the same as the ID of the replica of the transmission source, or if the master ID is the same as the master ID stored in the first storage means, the ID is stored in the first storage means. The master ID is not replaced.
- a processing request notification means for receiving a processing request from a client at each replica constituting the cell and notifying other replicas of a processing request and a client ID for identifying the client, and the client
- the processing request is received from the client, or the processing request notification means of the replica that has received the processing request is notified that the processing request has been received, and a predetermined process is performed by establishing a session with the client based on the client ID Since the processing execution means is provided, each replica establishes the same session with the client based on the client ID and performs processing, so that there are a plurality of connection windows with the cell client, and the connection is established. It is possible to prevent the service provision from being stopped due to the occurrence of a failure at the window.
- 2 is a flowchart showing processing in a client in the distributed computing system of FIG. 2 is a flowchart showing threads when a request packet is received at a server in the distributed computing system of FIG. 1.
- 2 is a flowchart showing threads when an update processing execution notification in a server is received in the distributed computing system of FIG. 1.
- 2 is a flowchart showing threads when transmitting a response packet in a server in the distributed computing system of FIG. 1.
- FIG. 8 is a flowchart showing a file writing process as an example of the updating process of FIG. 7.
- FIG. It is a flowchart which shows an event acquisition start process as an example of the update process of FIG. It is a flowchart which shows the process at the time of event generation after event management start. It is a flowchart which shows an event acquisition request process as an example of the update process of FIG. It is a flowchart which shows an event acquisition completion process as an example of the update process of FIG. It is explanatory drawing which shows the example of a master selection arrangement
- FIG. 1 shows a distributed computing system according to this embodiment.
- the distributed computing system 1 includes a cell 2 and a client 3, and the cell 2 includes a plurality of replicas that are synchronized with each other.
- a replica three servers 4 that form an agreement by Paxos and synchronize (in the case of distinguishing each server 4 and in the drawings, each server is represented by reference numerals 4a, 4b, and 4c, respectively) are exemplified.
- replicas are not limited to this.
- the servers 4a, 4b, and 4c are connected to each other via a dedicated line or an Internet line, and are connected to the client 3 via an Internet line.
- a request for task processing (application processing) or the like is received from the application of the client 3, the processing is performed as described later, and when a response is generated, the master described below transmits the response to the client 3.
- the request from such an application includes an update request for updating the data stored in the server 4 and changing its state, and a reference request for referring to the data stored in the server 4 and not changing its state. Yes, the server 4 performs an update process or a reference process in response to each request.
- One of the servers 4a, 4b, and 4c serves as a master mainly responsible for communication with the client 3 at the time of an update request, and one of the servers 4a, 4b, and 4c serves as a reference from the client 3 at the time of a reference request (hereinafter referred to as "reference"). It is said.) Since the servers 4a, 4b, and 4c form an agreement by Paxos, the Paxos leader may be the master. The Paxos leader may be determined by any known method, or by a method in which the oldest server (the server with the longest startup time and the longest continuous operation time in the cell 2) is used as the leader. Further, since the servers 4a, 4b, and 4c generally have different loads, in this embodiment, a load value is calculated and a value having a small value is used as a reference.
- the client 3 and the server 4 are general-purpose computers, respectively, and reference numerals 5 and 6 are assigned to control units such as CPUs, and reference numerals 7 and 8 are assigned to storage devices such as memories (each control part 6 and each server 4).
- each control unit is represented by reference numerals 6a, 6b, and 6c, and each storage device is represented by reference numerals 8a, 8b, and 8c, respectively.
- an area (session structure) for storing various session information related to the session between the cell 2 and the client 3 is secured, and this is referred to as a client session 9.
- an area (session structure) for storing various session information is created and secured in the storage device 8 of the server 4 and is referred to as a server session 10 (when each server session 10 is distinguished or in the drawings).
- the client session 9 stores connection information, client ID, transaction sequence number, master ID, reference ID, master selection array as a master table, update transaction sequence number, and the like.
- connection information is connection information with the server 4, specifically, each IP address of the servers 4 a, 4 b, 4 c and each connection state between the client 3 and the servers 4 a, 4 b, 4 c (whether or not there is a connection) ).
- Client ID is a unique ID that identifies a session, and includes a client 3 IP address, a process ID assigned to each process by the client 3, and a tag ID assigned to each tag.
- Transaction serial number is a serial number in a session attached to a transaction issued by the client 3.
- Master ID is the ID of the server 4 that the client 3 recognizes as the master.
- Reference ID is the ID of the server 4 that the client 3 recognizes as a reference.
- the “master selection array” is used to avoid circulation when the master is changed, and details will be described later.
- Update transaction sequence number is a number that is replaced with a transaction sequence number when the request from the client 3 is an update request and this is properly processed in the server 4.
- a request packet is transmitted from the client 3 to the server 4.
- the request packet includes a client ID, a transaction sequence number, an update transaction sequence number, as shown in FIG. It includes a command indicating request contents and data (request data) necessary for processing the command.
- the server session 10 stores a client ID, a session state, a request start transaction sequence number, a request end transaction sequence number, a response transaction sequence number, a hold response flag, a hold response list, an event wait flag, a hold event list, and the like.
- 8 stores a master ID and a reference ID separately from the server session 10.
- Master ID is the ID of the server 4 that the server 4 recognizes as the master, and is independent of the master ID stored in the client session 9.
- Reference ID is an ID of the server 4 that the server 4 recognizes as a reference.
- the servers 4a, 4b, and 4c calculate their own load values by a predetermined method, and exchange the information with each other to recognize the server 4 having the minimum load value as a reference, and store the ID as a reference ID. Store in the devices 8a, 8b, 8c.
- This reference ID is transmitted from the server 4 to the client 3 by a response packet or a master notification packet described later.
- the reference ID in the client session 9 is replaced with the reference ID transmitted from the server 4 when it becomes “unknown” indicating that the reference is unknown.
- the reference ID is set to “unknown” as an initial value, and is also set to “unknown” when the operation of the corresponding server 4 cannot be confirmed.
- “Client ID” is the client ID in the client session 9 conveyed by the request packet.
- the server session 10 is managed using a hash or the like so that it can be identified by the client ID.
- Session state indicates the state of the server session 10, and is opened when a session establishment request is sent from the client 3 to the server 4, and closed when a session closure request is made.
- the “request start transaction sequence number” is a number that is replaced with the transaction sequence number in the request packet when the server 4 starts the update process or the reference process.
- the “request end transaction sequence number” is a number that is replaced with the transaction sequence number or the request start transaction sequence number in the request packet when the server 4 finishes the update process or the reference process.
- the “response transaction sequence number” is a number that is replaced with the transaction sequence number in the request packet or the request start transaction sequence number when the server 4 generates the response packet described below.
- the response packet includes an ID (replica ID) of the server 4 that transmits the packet, Reference ID, packet type (response type) indicating that the packet is a response packet, client ID for identifying the client 3 and session to which the packet is transmitted, response transaction sequence number, and data indicating response content (response data) including.
- the server 4 may transmit a master notification packet that notifies the master instead of a response packet.
- This master notification packet is a server that transmits the packet as shown in FIG. 4 ID (replica ID), reference ID, packet type (master type) indicating that the packet is a master notification packet, and master ID.
- the “pending response flag” is a flag indicating whether or not the server 4 may transmit a response packet to the client 3 or whether transmission should be held as a hold response. If this flag is “true”, the server 4 regards it as a hold instruction, holds the generated response packet as a pending response, and if this flag is “false”, regards it as a release instruction, and transmits the generated response packet.
- the “pending response list” is one or a plurality of response packets stored as a pending response.
- the “event waiting flag” is a flag indicating whether or not the generated event may be transmitted to the client 3 when the server 4 manages the event, or whether transmission should be suspended as a suspended event.
- an event can be managed by the server session 10, and the server 4 that is instructed to manage the event by the client 3 sets the event waiting flag to “true” if an event acquisition request is received from the client 3.
- the generated event is transmitted to the client 3.
- the event waiting flag is set to “false”, and the generated event is not immediately transmitted to the client 3 but is held as a hold event.
- Any event can be used. For example, when adding or deleting a file to a directory path (changing a directory under the addition or deletion of a file) is used as an event, the directory path is used as an event resource. . Events and event resources are defined by the application.
- the “pending event list” is one or a plurality of events stored as a holding event.
- [Distributed computing method] 5 to 15 show a distributed computing method by the distributed computing system 1, that is, a procedure in which an application of the client 3 transmits a reference request or an update request to the cell 2, and the reference process or the update process is performed in the cell 2. (See FIG. 2).
- step 101 when there is a request from an application (step 101 (denoted as “S.101” in the drawing, the same applies hereinafter)), the control unit 5 of the client 3 increments the transaction serial number (step 102). It is determined whether or not it is an update request (step 103). If it is an update request, the master ID of the client session 9 is referred to (step 104). If it is not an update request, the reference ID is referred to as a reference request (step 105), and the server 4 specified by the referenced ID is sent. The request packet is transmitted to the control unit 6 (step 106).
- the client 3 performs synchronous transaction communication with the server 4 by sending a request packet and waiting for a response packet. Therefore, the order of the packets is guaranteed by the client 3.
- the control unit 5 of the client 3 that has transmitted the request packet waits for a response packet or a master notification packet to arrive from the control unit 6 of the server 4, and if there is no response after a certain time, refers to the master ID or reference ID again.
- the request packet is transmitted (steps 107 to 109).
- the control unit 6 of the server 4 that has received the request packet acquires the server session 10 from a hash or the like based on the client ID included in the request packet (corresponding to the client ID). If there is no server session 10 to be created, it is newly created: step 202).
- control unit 6 determines whether or not it is an update request based on a command included in the request packet (step 203).
- the control unit 6 checks whether or not its own server 4 is a master (step 204), and if it is a master, the contents of the request packet are sent to all the servers 4 (including the master itself). Notification is made (step 205), and an agreement is consulted by Paxos on whether or not the update processing can be performed (step 206). Further, the control unit 6 determines that the master recognized by the client 3 and the server 4 is different if it is not the master in step 204 (for example, if there is a master change but it has not been transmitted to the client 3). In such a case, it is determined that the control unit 6 is not a master.), A master notification packet is transmitted to the control unit 5 of the client 3 (step 207). Upon receiving the master notification packet, the control unit 5 replaces the client ID of the client session 9 with the master ID in the master notification packet, and transmits the request packet again (see steps 109 and 110 in FIG. 5).
- step 206 if the consent of the majority of servers 4 is obtained and an agreement is formed by Paxos, the master control unit 6 that has received the request packet controls the control units 6 of all the servers 4 (including the master itself). In response to this, an update processing execution notification is transmitted (step 208). As a result, all servers 4 respond to the update request. If no agreement is formed by Paxos in Step 206, the control unit 6 proceeds to Step 201 and enters a standby state for the next request packet.
- the server 4 that has received the request packet responds to the reference request.
- the control unit 6 of the server 4 that has received the update processing execution notification acquires the server session 10 from the hash or the like based on the client ID in the request packet (the client ID). If there is no server session 10 corresponding to, a new one is created: Step 302).
- control unit 6 confirms whether or not the session state of the server session 10 acquired in step 302 is open (step 303), and if not open, transmits an error response to the control unit 5 of the client 3 ( Step 304), the process proceeds to Step 301 to enter a standby state for notification of execution of the next update process.
- the control unit 6 determines whether the transaction sequence number in the request packet is the same as the response transaction sequence number stored in the server session 10 (described as “response sequence number” in the drawing). It is determined whether or not (step 305). In the case of one request and one response, if the transaction sequence number is the same as the response transaction sequence number, the response packet stored as a pending response including the response transaction sequence number is generated corresponding to the request packet including the transaction sequence number.
- the control unit 6 confirms that the pending response flag is “false” (step 306) and that its own server 4 is also the master at that time. (Step 307) The response packet held as a hold response is transmitted to the control unit 5 of the client 3 without generating a response packet again (step 308). If the pending response flag is “true” in step 306 or if its own server 4 is not the master in step 307, the control unit 6 proceeds to step 301 and enters a standby state for notification of execution of the next update process. enter.
- the control unit 6 If the transaction sequence number and the response transaction sequence number are not the same in step 305, the control unit 6 describes the transaction sequence number in the request packet and the request start transaction sequence number stored in the server session 10 (described as “request start sequence number” in the drawing). )) Is the same (step 309). If the transaction sequence number and the request start transaction sequence number are the same, the server 4 is considered to be processing the same request as this time, so the control unit 6 ignores the current request to avoid duplicate processing. .
- step 309 if the transaction sequence number and the request start transaction sequence number are not the same, the control unit 6 replaces the request start transaction sequence number with the transaction sequence number (step 310). Then, an update process is performed based on the command and request data in the request packet (step 311). When this update process is completed, the request end transaction sequence number (described as “request end sequence number” in the drawing) is used as the transaction sequence number. Replace (step 312).
- update processing There are many examples of update processing.
- a request for opening a server session transmitted from the client 3 to the server 4 or a request for closing an opened server session is an update request.
- the process is an update process.
- the file writing process is also an update process.
- a server session establishment process as shown in FIG. 9 is performed as an update process in step 311 (at this time, the control unit 6 performs step 303). (Omitted, the process proceeds from step 302 to step 305).
- control unit 6 opens the session state of the server session 10 acquired in step 302 (step 501), initializes values of each transaction serial number and the like (step 502), and when these processes are completed, Is sent to the control unit 5 of the client 3 (step 503), and step 401 of FIG. 8 is called to perform transmission processing of the response packet (step 504).
- control unit 6 determines whether or not it is necessary to transmit a response packet for the current update process (step 401). If not necessary, the control unit 6 proceeds to step 312 (the lock or the like as described later). If so, the control unit 6 may not generate a response packet. In such a case, although one request is one response, the response is delayed until the lock is released.
- the control unit 6 checks the hold response flag (step 402). If the flag is “true”, the response packet generated in step 503 is added to the hold response list to hold the response packet. The response list is updated (step 403). On the other hand, if the flag is “false”, the pending response list is updated by replacing the pending response list with the response packet generated in step 503 (step 404).
- control unit 6 replaces the response transaction sequence number with the transaction sequence number (step 405), and confirms whether or not its own server 4 is a master (step 406). If it is a master, the control part 6 transmits the response packet of a pending
- the command included in the request packet is a server session closing command
- a server session closing process as shown in FIG.
- the control unit 6 cancels the open state of the server session 10 opened in step 501 (closes the session state) (step 511), and when this processing is completed, a response packet for notifying the client 3 of that fact is sent. 8 is generated (step 512), and step 401 is called to perform the response packet transmission processing of FIG. 8 (step 513).
- the request data in the request packet includes the file path name, offset, data to be written, and the length of the data to be written.
- a file writing process as shown in FIG. 11 is performed.
- the control unit 6 opens the file (step 521), writes data from the offset (step 522), and closes the file (step 523). Then, a response packet including the written length is generated (step 524), and step 401 is called to perform response packet transmission processing in FIG. 8 (step 525).
- the control unit 6 determines whether or not the request end transaction sequence number is equal to or greater than the update transaction sequence number in the request packet (step 209), and the request end transaction sequence number is updated. If the transaction sequence number is greater than or equal to the transaction number, the server 4 confirms that the session state has been opened and proceeds to the reference process (step 210), assuming that the update is not delayed and can be used for reference. If the session state is not open, the control unit 6 transmits an error response to the control unit 5 of the client 3 (step 211).
- the control unit 6 replaces the request start transaction sequence number with the transaction sequence number in the request packet (step 212), and performs reference processing based on the command and request data in the request packet. (Step 213) When this reference process is completed, the request end transaction sequence number is replaced with the transaction sequence number (step 214). Also in the reference process of step 213, the control unit 6 transmits a response packet including the reference contents to the control unit 5 of the client 3, but the method is the same as the response packet transmission process of FIG. And go to step 214).
- step 209 if the request end transaction sequence number is less than the update transaction sequence number, the control unit 6 interrupts the process and enters a standby state. Then, if the update delay is resolved and the request end transaction sequence number is equal to or greater than the update transaction sequence number in the request packet, the wake-up and interrupted processing is continued.
- Step 109 the control unit 5 of the client 3 receives the response packet from the server 4, the control unit 5 exits from the standby state of Step 109 (see FIG. 5). If the reference ID is unknown, the reference ID stored in the client session 9 is included in the response packet. (Steps 111 and 112). Subsequently, the control unit 5 determines whether or not the response transaction sequence number in the response packet is the same as an expected value (step 113). This expected value is the same as the transaction sequence number. If the response transaction sequence number is the same as the expected value, it means that an appropriate response to the request has been received. When receiving a response to the update request, the control unit 5 replaces the update transaction sequence number with the transaction sequence number (step 114), and proceeds to step 101 for the next request or is controlled by the application. Return.
- control unit 5 discards the received response packet (step 115) and returns to step 107. Wait for an appropriate response.
- the control unit 6 of the server 4 When a plurality of response packets are derived from a single request, for example, in the case of multiple SQL statements in the database, the control unit 6 of the server 4 accumulates the response packets using a hold response flag, and holds a plurality (predetermined number) of hold packets. At this point, the master control unit 6 may transmit the response as a single response. That is, since the control unit 6 can know that a plurality (predetermined number) of response packets are created by analyzing the command of the request packet, the pending response flag is kept until the plurality (predetermined number) of response packets are created. Is set to “true”, the generated response packet is held so as not to be transmitted immediately, and sequentially stored in the pending response.
- the master control unit 6 adds a plurality of (predetermined number) of response packets with a header to the batch. Send.
- the server 4 can manage events by the server session 10.
- an event acquisition start request is transmitted. After the event acquisition start request is transmitted, the client 3 transmits an event acquisition request to request the server 4 to acquire the event. In addition, when the client 3 requests the server 4 to end the event management, an event acquisition end request is transmitted. Since these requests related to event management are update requests, specifically, the following processing may be performed in step 311.
- the control unit 6 of the server 4 associates the event resource with the server session 10 and stores it in the storage device 8 (step 601).
- This association is performed by setting a joint between the event resource and the server session 10.
- the joint includes an event link that links the joint and the event resource, a session link that links the joint and the server session 10, And a post-processing function when the joint is discarded.
- the event resource to be associated is specified by the request packet of the event acquisition start request, and the server session 10 to be associated is specified at step 302 (or step 202).
- control unit 6 When the association is completed, the control unit 6 generates a response packet to that effect (step 602) and transmits it to the control unit 5 of the client 3 (step 603).
- the method is the same as the response packet transmission process of FIG. It is.
- the processing of the server 4 differs depending on whether an event acquisition request is received from the client 3 or not.
- the control unit 6 of the server 4 checks the event waiting flag (as described above, and will be described in detail later). As described above, if an event acquisition request is received from the client 3, the event wait flag is “true”, and if no event acquisition request is received from the client 3, the event wait flag is “false”: Step 612). If the event waiting flag is “true”, a response packet is generated to transmit the generated event to the client 3 (step 613), and is transmitted to the control unit 5 of the client 3 in the same manner as in FIG. In step 614), the event waiting flag is set to "false” (step 615).
- the control unit 6 adds the generated event to the hold event and registers it (step 616), and enters a standby state such as an event acquisition request or the next event occurrence. .
- the control unit 6 checks whether there is a pending event in the pending event list (step 622).
- the wait flag is set to “true” (step 623) so that an event generated until the next event acquisition request is held in the hold event list.
- control unit 6 cuts all the pending events registered in the pending event list in a lump and generates a response packet including these (step 624), and sends the response packet to the control unit 5 of the client 3 Transmission is performed in the same manner as in FIG. 8 (step 625).
- control unit 6 of the server 4 upon receiving the event acquisition end request, releases the association between the event resource and the server session 10 (step 631), and generates a response packet to that effect (step 631). 632), and transmits to the control unit 5 of the client 3 by the same method as in FIG. 8 (step 633).
- the servers 4a, 4b, and 4c are not necessarily always in operation (in order to form an agreement by Paxos, it is only necessary that two of the three are in operation), and the master itself may fail. A master change may occur due to a communication failure between the master and another server.
- the server 4 recognizes the master change, if the server 4 is connected to the client 3, a master notification packet as shown in FIG. 4 can be transmitted to notify the client 3 of the master change.
- a master selection array for avoiding circulation as shown in FIG. 16 is prepared.
- the master selection array every time the master ID of the client session 9 is changed, the array element of the server 4 corresponding to the old master ID is marked with “1” (the array element not marked is “0”). .) Therefore, if the client 3 newly receives the master notification packet and the array element of the server 4 corresponding to the master ID in the master notification packet is marked, the master notification packet has notified the old master. Since there is a fear, the control unit 5 of the client 3 considers that the above-mentioned circulation has occurred, and waits for the next master notification packet without replacing the master ID of the client session 9 with the master ID notified by the master notification packet.
- the server 4 that has transmitted the master notification packet recognizes itself as the master, and no circulation occurs. Then, the control unit 5 of the client 3 sets the replica ID as the master ID of the client session 9 and clears all marks in the master selection array.
- the master 3 and the server 4 have the same master recognition. do nothing.
- the control unit 5 marks “1” in the array element of the server 4 corresponding to the master ID in the master notification packet. It is judged whether it is attached. If it is marked, it is determined that the above-described circulation has occurred and that the master is being selected (Jeopard), and the master ID of the client session 9 is unknown, and the next master notification packet is awaited. If not marked, the array element of the server 4 corresponding to the master ID previously stored in the client session 9 is marked, and the master ID of the client session 9 is replaced with the master ID in the master notification packet. .
- the control unit 5 When the controller 5 detects the disconnection of any of the servers 4a, 4b, and 4c based on the connection information so that the old master whose connection has been disconnected is not recognized as the master, the control unit 5 If the master ID of the client session 9 matches, the array element of the server 4 corresponding to the master ID of the client session 9 is marked.
- control unit 5 clears all the marks of the master selection array and sequentially sends request packets to the servers 4a, 4b, 4c. And wait for the master notification packet to be sent.
- each server 4 configuring the cell 2 receives a processing request from the client 3, and notifies that the processing request has been made and the client ID that identifies the client 3 to the other server 4.
- a processing request notification means for notifying the server 4 and a processing request from the client 3 or a notification to the effect that a processing request has been received from another server 4 that has received the processing request. Since the control unit 6 is provided that functions as a process execution means for establishing a session between them and performing a predetermined process, each server 4 establishes the same session with the client 3 based on the client ID for processing. By doing this, there are multiple connection windows with the cell client, which is caused by a failure at the connection window. It is possible to prevent the stopping of the service provider.
- the servers that make up the cell may synchronize without relying on Paxos, and the Paxos leader may not be the master.
- the configuration of the request packet, response packet, master notification packet, and client ID may be different from those described above.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】 セルのクライアントとの接続窓口における障害発生に起因するサービス提供の停止を防止することができる分散コンピューティングシステムを提供する。 【解決手段】 本発明に係る分散コンピューティングシステム1では、セル2を構成するサーバー4の制御部6が、クライアント3の制御部5から処理要求を受け、処理要求があった旨及びそのクライアント3を特定するクライアントIDを他のサーバー4に通知するとともに、クライアント3の制御部5から処理要求を受け、又は、処理要求を受けた他のサーバー4の制御部6から処理要求があった旨の通知を受け、クライアントIDに基づいてクライアント3との間でセッションを開設してその処理を行う。
Description
本発明は、互いに同期が取られる複数のレプリカを含むセルとクライアントとを備える分散コンピューティングシステムに関し、特に、セルとクライアントとの間のセッション管理技術に関する。
複数のレプリカを含むセルとクライアントとを備える分散コンピューティングシステムについて、例えば以下のようなレプリケーション技術が知られている。
ロードバランサー(負荷分散装置)が用いられたクラスタシステムでは、ロードバランサーの仮想化されたIPアドレスがクライアントとの接続窓口となり(特許文献1及び2参照)、クライアントからの要求はロードバランサーを介してレプリカに伝達され、レプリカからの応答がロードバランサーを経てクライアントに送信される。
また、高可用性のクラスタシステムでは、本番系(主系)と待機系(予備系)のレプリカが設けられ(特許文献3及び4参照)、クライアントにサービスを提供していた本番系のレプリカが障害によりダウンすると、例えばホット・スタンバイの状態にある待機系のレプリカが本番系のレプリカの処理を引き継いでサービス提供を継続する。
仮想マシンでは、ハードウェアレベルの仮想化、つまり、物理的に一つのハードウェアの中に複数の仮想ハードウェアを構築し、それら一つ一つをレプリカとして機能させることにより(特許文献5参照)、上記高可用性のクラスタシステムと同様な可用性を実現している。
RAID装置では、ディスクを仮想化したインターフェースを提供し、ミラー化やプール化によりデータを多重化・冗長化して保存する。
上記各レプリケーション技術では、仮想化技術により、レプリカ群がクライアントから一つの仮想システムとしてみえるだけで、レプリカ間の分散協調方式はブラックボックス化されている。すなわち、クライアントとレプリカ群との接続窓口が一つであり、この接続窓口となる箇所に障害が生じると、クライアントはブラックボックス内部のレプリカへのアクセス方法を失うので、たとえレプリケーションにより高可用性が図られていても、セルによるサービス提供が停止する。
本発明は、上記の事情に鑑みてなされたもので、セルのクライアントとの接続窓口における障害発生に起因するサービス提供の停止を防止することができる分散コンピューティングシステムを提供することを課題としている。
上記課題を解決するために、請求項1に係る発明は、互いに同期が取られる複数のレプリカを含むセルとクライアントとを備え、前記クライアントに、前記セルと前記クライアントとの間のセッションを管理するためのセッション情報として、前記クライアントが各レプリカと接続するための接続情報及び前記クライアントを特定するためのクライアントIDを記憶する第一の記憶手段と、前記複数のレプリカのいずれかに対し、前記接続情報に基づき所定の処理の要求及び前記クライアントIDの通知を行う処理要求手段とが設けられ、前記各レプリカに、前記処理要求手段からの処理要求を受け、処理要求があった旨及び前記クライアントIDを他のレプリカに通知する処理要求通知手段と、前記処理要求手段から処理要求を受け、又は、処理要求を受けたレプリカの処理要求通知手段から処理要求があった旨の通知を受け、前記クライアントIDに基づき前記クライアントとの間で前記セッションを開設して前記所定の処理を行う処理実行手段とが設けられている分散コンピューティングシステムを特徴とする。
請求項2に係る発明は、請求項1に記載の分散コンピューティングシステムにおいて、前記所定の処理が、更新処理であることを特徴とする。
請求項3に係る発明は、請求項1に記載の分散コンピューティングシステムにおいて、前記所定の処理の要求が、前記各レプリカに前記セッションを開設させるためのセッション開設要求であることを特徴とする。
請求項4に係る発明は、請求項1乃至請求項3のいずれか1項に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記複数のレプリカの一つがマスターとして選ばれる場合に、いずれのレプリカがマスターであるかを特定するためのマスターIDを記憶し、前記処理要求手段が、前記第一の記憶手段に記憶されたマスターIDにより特定されるレプリカに対し、前記所定の処理の要求及び前記クライアントIDの通知を行うことを特徴とする。
請求項5に係る発明は、請求項4に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記複数のレプリカの一つが参照処理時の参照に供するリファレンスとして選ばれる場合に、いずれのレプリカがリファレンスであるかを特定するためのリファレンスIDを記憶し、前記処理要求手段が、前記第一の記憶手段に記憶されたリファレンスIDにより特定されるレプリカに対し、参照処理の要求を行うことを特徴とする。
請求項6に係る発明は、請求項4に記載の分散コンピューティングシステムにおいて、前記各レプリカに、前記所定の処理の要求に対する応答を生成する応答生成手段と、前記マスターIDを前記第一の記憶手段とは独立して記憶するとともに前記応答生成手段により生成された応答を記憶する第二の記憶手段と、前記第二の記憶手段に記憶された応答を前記クライアントに送信可能な応答送信手段とが設けられ、前記応答送信手段が、前記第二の記憶手段に記憶されたマスターIDに基づいて自身のレプリカがマスターであると判断したときに、前記第二の記憶手段に記憶された応答を前記クライアントに送信することを特徴とする。
請求項7に係る発明は、請求項5に記載の分散コンピューティングシステムにおいて、前記各レプリカに、前記所定の処理の要求に対する応答を生成する応答生成手段と、前記マスターIDを前記第一の記憶手段とは独立して記憶するとともに前記応答生成手段により生成された応答を記憶する第二の記憶手段と、前記第二の記憶手段に記憶された応答を前記クライアントに送信可能な応答送信手段とが設けられ、前記応答送信手段が、前記第二の記憶手段に記憶されたマスターIDに基づいて自身のレプリカがマスターであると判断したときに、前記第二の記憶手段に記憶された応答を前記クライアントに送信することを特徴とする。
請求項8に係る発明は、請求項6に記載の分散コンピューティングシステムにおいて、前記応答送信手段が、前記第二の記憶手段に記憶されたマスターIDに基づいて自身のレプリカがマスターでないと判断したときに、そのマスターIDに関する情報を前記第二の記憶手段に記憶された応答の代わりに前記クライアントに送信することを特徴とする。
請求項9に係る発明は、請求項7に記載の分散コンピューティングシステムにおいて、前記応答送信手段が、前記第二の記憶手段に記憶されたマスターIDに基づいて自身のレプリカがマスターでないと判断したときに、そのマスターIDに関する情報を前記第二の記憶手段に記憶された応答の代わりに前記クライアントに送信することを特徴とする。
請求項10に係る発明は、請求項4に記載の分散コンピューティングシステムにおいて、前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする。
請求項11に係る発明は、請求項5に記載の分散コンピューティングシステムにおいて、前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする。
請求項12に係る発明は、請求項6に記載の分散コンピューティングシステムにおいて、前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする。
請求項13に係る発明は、請求項7に記載の分散コンピューティングシステムにおいて、前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする。
請求項14に係る発明は、請求項8に記載の分散コンピューティングシステムにおいて、前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする。
請求項15に係る発明は、請求項9に記載の分散コンピューティングシステムにおいて、前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする。
請求項16に係る発明は、請求項8に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、前記クライアントに、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする。
請求項17に係る発明は、請求項9に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、前記クライアントに、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする。
請求項18に係る発明は、請求項10に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、前記クライアントに、前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする。
請求項19に係る発明は、請求項11に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、前記クライアントに、前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする。
請求項20に係る発明は、請求項12に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、前記クライアントに、前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする。
請求項21に係る発明は、請求項13に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、前記クライアントに、前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする。
請求項22に係る発明は、請求項14に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、前記クライアントに、前記応答送信手段又は前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする。
請求項23に係る発明は、請求項15に記載の分散コンピューティングシステムにおいて、前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、前記クライアントに、前記応答送信手段又は前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする。
請求項24に係る発明は、請求項16に記載の分散コンピューティングシステムにおいて、前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする。
請求項25に係る発明は、請求項17に記載の分散コンピューティングシステムにおいて、前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする。
請求項26に係る発明は、請求項18に記載の分散コンピューティングシステムにおいて、前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする。
請求項27に係る発明は、請求項19に記載の分散コンピューティングシステムにおいて、前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする。
請求項28に係る発明は、請求項20に記載の分散コンピューティングシステムにおいて、前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする。
請求項29に係る発明は、請求項21に記載の分散コンピューティングシステムにおいて、前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする。
請求項30に係る発明は、請求項22に記載の分散コンピューティングシステムにおいて、前記マスターID変更手段が、前記応答送信手段又は前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする。
請求項31に係る発明は、請求項23に記載の分散コンピューティングシステムにおいて、前記マスターID変更手段が、前記応答送信手段又は前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする。
本発明によれば、セルを構成する各レプリカに、クライアントからの処理要求を受け、処理要求があった旨及びそのクライアントを特定するクライアントIDを他のレプリカに通知する処理要求通知手段と、クライアントから処理要求を受け、又は、処理要求を受けたレプリカの処理要求通知手段から処理要求があった旨の通知を受け、クライアントIDに基づきクライアントとの間でセッションを開設して所定の処理を行う処理実行手段とが設けられているので、各レプリカがクライアントとの間にクライアントIDに基づき同一のセッションを開設して処理を行うことにより、セルのクライアントとの接続窓口が複数になって、接続窓口における障害発生に起因するサービス提供の停止を防止することができる。
本発明によれば、セルのクライアントとの接続窓口における障害発生に起因するサービス提供の停止を防止することができるという効果を奏する。
本発明を実施するための形態について、図面を用いて説明する。
〔分散コンピューティングシステムの構成〕
図1は、本形態に係る分散コンピューティングシステムを示す。この分散コンピューティングシステム1は、セル2とクライアント3とを備え、セル2は互いに同期が取られる複数のレプリカにより構成されている。ここでは、レプリカとして、Paxosにより合意を形成して同期を取る3つのサーバー4(各サーバー4を区別する場合や図面においては、各サーバーをそれぞれ符号4a,4b,4cで表す。)を例示するが、レプリカはこれに限られるものではない。
〔分散コンピューティングシステムの構成〕
図1は、本形態に係る分散コンピューティングシステムを示す。この分散コンピューティングシステム1は、セル2とクライアント3とを備え、セル2は互いに同期が取られる複数のレプリカにより構成されている。ここでは、レプリカとして、Paxosにより合意を形成して同期を取る3つのサーバー4(各サーバー4を区別する場合や図面においては、各サーバーをそれぞれ符号4a,4b,4cで表す。)を例示するが、レプリカはこれに限られるものではない。
サーバー4a,4b,4cは、専用回線又はインターネット回線を介して互いに接続されるとともに、インターネット回線を介してクライアント3に接続されている。そして、クライアント3のアプリケーションからタスク処理(アプリケーション処理)等の要求を受けると、後述のように当該処理を行い、応答を生成した場合にはこれを次述のマスターがクライアント3に送信する。このようなアプリケーションからの要求には、サーバー4に記憶されたデータを更新してその状態を変更する更新要求と、サーバー4に記憶されたデータを参照してその状態を変更しない参照要求とがあり、サーバー4は各要求に応じて更新処理又は参照処理を行う。
また、サーバー4a,4b,4cは、そのいずれかが更新要求時にクライアント3との通信等を主として担うマスターになり、そのいずれかが参照要求時にクライアント3からの参照に供するサーバー(以下「リファレンス」という。)になる。サーバー4a,4b,4cはPaxosにより合意を形成するので、Paxosのリーダーをマスターとすればよい。Paxosのリーダーの決定は、公知のいずれの方法によっても、あるいは、最長老のサーバー(セル2において起動時刻が最先で連続稼働時間が最長のサーバー)をリーダーとする方法によってもかまわない。また、サーバー4a,4b,4cは一般に負荷が異なるので、本形態では負荷値を算出してその値が小さいものをリファレンスとする。
クライアント3及びサーバー4は、ここでは、それぞれ汎用のコンピューターであり、それらのCPU等の制御部に符号5及び6を、メモリ等の記憶装置に符号7及び8を付す(各制御部6や各記憶装置8を区別する場合や図面においては、各制御部をそれぞれ符号6a,6b,6cで表し、各記憶装置をそれぞれ符号8a,8b,8cで表す。)。
クライアント3の記憶装置7には、セル2とクライアント3との間のセッションに関する各種のセッション情報を記憶する領域(セッション構造体)が確保され、これをクライアントセッション9と称する。同様に、サーバー4の記憶装置8には、各種のセッション情報を記憶する領域(セッション構造体)が作成・確保され、これらをサーバーセッション10と称する(各サーバーセッション10を区別する場合や図面においては、各サーバーセッションをそれぞれ符号10a,10b,10cで表す。)。
クライアントセッション9には、接続情報、クライアントID、トランザクション通番、マスターID、リファレンスID、マスターテーブルとしてのマスター選択配列及び更新トランザクション通番等が格納される。
「接続情報」とは、サーバー4との接続情報であって、具体的にはサーバー4a,4b,4cの各IPアドレス及びクライアント3とサーバー4a,4b,4cとの各接続状態(接続の有無)に関する情報である。
「クライアントID」とは、クライアント3のIPアドレス、クライアント3によるプロセスごとに付されるプロセスID及びタグごとに付されるタグIDからなり、セッションを特定するユニークなIDである。
「トランザクション通番」とは、クライアント3が発行するトランザクションに付されるセッション内での通し番号である。
「マスターID」とは、クライアント3がマスターとして認識しているサーバー4のIDである。
「リファレンスID」とは、クライアント3がリファレンスとして認識しているサーバー4のIDである。
「マスター選択配列」とは、マスター交替時の循環の回避に用いられ、詳細については後述する。
「更新トランザクション通番」とは、クライアント3からの要求が更新要求であって、これがサーバー4において適切に処理されたときに、トランザクション通番で置換される番号である。
クライアント3がサーバー4に所定の処理を要求する場合、クライアント3からサーバー4に要求パケットが送信されるが、この要求パケットは、図2に示すように、クライアントID、トランザクション通番、更新トランザクション通番、要求内容を示すコマンド及びコマンドの処理に必要なデータ(要求データ)を含む。
一方、サーバーセッション10には、クライアントID、セッション状態、要求開始トランザクション通番、要求終了トランザクション通番、応答トランザクション通番、保留応答フラグ、保留応答リスト、イベント待ちフラグ及び保留イベントリスト等が格納され、記憶装置8には、サーバーセッション10とは別に、マスターID及びリファレンスIDが記憶されている。
「マスターID」は、サーバー4がマスターとして認識しているサーバー4のIDであり、クライアントセッション9に記憶されているマスターIDとは独立している。
「リファレンスID」は、サーバー4がリファレンスとして認識しているサーバー4のIDである。サーバー4a,4b,4cは、自身の負荷値を所定の方法で算出し、その情報を互いに交換することにより、最小の負荷値を有するサーバー4をリファレンスと認識し、そのIDをリファレンスIDとして記憶装置8a,8b,8cに記憶する。このリファレンスIDは、後述の応答パケット又はマスター通知パケットにより、サーバー4からクライアント3に伝えられる。クライアントセッション9におけるリファレンスIDは、リファレンスが不明であることを示す「不明」となったときに、このサーバー4から伝えられるリファレンスIDで置換される。リファレンスIDは、初期値で「不明」と設定されるほか、それに対応するサーバー4の稼働を確認することができない場合等に「不明」と設定される。
「クライアントID」は、クライアントセッション9におけるクライアントIDが要求パケットにより伝えられたものである。サーバー4においては、クライアントIDにより同定することができるように、サーバーセッション10はハッシュ等を用いて管理される。
「セッション状態」は、サーバーセッション10の状態を示し、クライアント3からサーバー4にセッション開設要求があればオープンとなり、セッション閉鎖要求があればクローズとなる。
「要求開始トランザクション通番」とは、サーバー4が更新処理又は参照処理を開始する段階で要求パケット中のトランザクション通番で置換される番号である。
「要求終了トランザクション通番」とは、サーバー4が更新処理又は参照処理を終了した段階で要求パケット中のトランザクション通番又は要求開始トランザクション通番で置換される番号である。
「応答トランザクション通番」とは、サーバー4が次述の応答パケットを生成した段階で要求パケット中のトランザクション通番又は要求開始トランザクション通番で置換される番号である。
サーバー4がクライアント3に応答する場合、サーバー4からクライアント3に応答パケットが送信されるが、この応答パケットは、図3に示すように、そのパケットを送信するサーバー4のID(レプリカID)、リファレンスID、そのパケットが応答パケットであることを示すパケット種別(応答タイプ)、そのパケットの送信先のクライアント3及びセッションを特定するクライアントID、応答トランザクション通番並びに応答の内容を示すデータ(応答データ)を含む。サーバー4は、自身がマスターでない場合には、応答パケットではなくマスターを通知するマスター通知パケットを送信することがあるが、このマスター通知パケットは、図4に示すように、そのパケットを送信するサーバー4のID(レプリカID)、リファレンスID、そのパケットがマスター通知パケットであることを示すパケット種別(マスタータイプ)及びマスターIDを含む。
「保留応答フラグ」とは、サーバー4が応答パケットを生成したときに、それをクライアント3に送信してよいか、あるいは、保留応答として送信を保留すべきかを示すフラグである。サーバー4は、このフラグが「真」ならばホールド指示と捉え、生成した応答パケットを保留応答として留め、このフラグが「偽」ならばリリース指示と捉え、生成した応答パケットを送信する。
「保留応答リスト」とは、保留応答として保存された一又は複数の応答パケットである。
「イベント待ちフラグ」とは、サーバー4がイベントを管理するときに、発生したイベントをクライアント3に送信してよいか、あるいは、保留イベントとして送信を保留すべきかを示すフラグである。分散コンピューティングシステム1では、サーバーセッション10によりイベントを管理することができ、クライアント3からイベント管理を指示されたサーバー4は、クライアント3からイベント取得の要求があれば、イベント待ちフラグを「真」として、発生したイベントをクライアント3に送信する。また、クライアント3からイベント取得の要求がない状態では、イベント待ちフラグを「偽」として、発生したイベントをクライアント3に直ちに送信せず、保留イベントとして保留する。なお、イベントはどのようなものであってもよく、例えばディレクトリパスに対するファイルの追加や削除(ファイルの追加や削除によるディレクトリ配下の変更)をイベントとする場合には、ディレクトリパスをイベント資源とする。イベント及びイベント資源は、アプリケーションにより定義される。
「保留イベントリスト」とは、保留イベントとして保存された一又は複数のイベントである。
〔分散コンピューティング方法〕
図5乃至15は、分散コンピューティングシステム1による分散コンピューティング方法、すなわち、クライアント3のアプリケーションがセル2に対して参照要求又は更新要求を送信し、セル2において参照処理又は更新処理が行われる手順を示す(図2参照)。
〔分散コンピューティング方法〕
図5乃至15は、分散コンピューティングシステム1による分散コンピューティング方法、すなわち、クライアント3のアプリケーションがセル2に対して参照要求又は更新要求を送信し、セル2において参照処理又は更新処理が行われる手順を示す(図2参照)。
〔要求パケットの送信〕
クライアント3の制御部5は、図5に示すように、アプリケーションからの要求があると(ステップ101(図面において「S.101」と記載。以下同様。))、トランザクション通番をインクリメントし(ステップ102)、それが更新要求であるか否かを判断する(ステップ103)。そして、更新要求であればクライアントセッション9のマスターIDを参照し(ステップ104)、更新要求でなければ参照要求であるとしてリファレンスIDを参照し(ステップ105)、参照したIDにより特定されるサーバー4の制御部6に要求パケットを送信する(ステップ106)。ここで、クライアント3は、サーバー4との間で、要求パケットを送り応答パケットを待つ同期型のトランザクション通信を行う。したがって、パケットの順序はクライアント3により保証されている。
クライアント3の制御部5は、図5に示すように、アプリケーションからの要求があると(ステップ101(図面において「S.101」と記載。以下同様。))、トランザクション通番をインクリメントし(ステップ102)、それが更新要求であるか否かを判断する(ステップ103)。そして、更新要求であればクライアントセッション9のマスターIDを参照し(ステップ104)、更新要求でなければ参照要求であるとしてリファレンスIDを参照し(ステップ105)、参照したIDにより特定されるサーバー4の制御部6に要求パケットを送信する(ステップ106)。ここで、クライアント3は、サーバー4との間で、要求パケットを送り応答パケットを待つ同期型のトランザクション通信を行う。したがって、パケットの順序はクライアント3により保証されている。
要求パケットを送信したクライアント3の制御部5は、サーバー4の制御部6から応答パケット又はマスター通知パケットが届くのを待ち、一定時間経っても応答がなければ、再度マスターID又はリファレンスIDを参照して要求パケットを送信する(ステップ107乃至109)。
〔要求パケットの受信〕
図6に示すように、要求パケットを受信したサーバー4の制御部6は(ステップ201)、要求パケットに含まれるクライアントIDに基づいて、サーバーセッション10をハッシュ等から取得する(そのクライアントIDに対応するサーバーセッション10がなければ、それを新規に作成する:ステップ202)。
図6に示すように、要求パケットを受信したサーバー4の制御部6は(ステップ201)、要求パケットに含まれるクライアントIDに基づいて、サーバーセッション10をハッシュ等から取得する(そのクライアントIDに対応するサーバーセッション10がなければ、それを新規に作成する:ステップ202)。
次いで、制御部6は、要求パケットに含まれるコマンドに基づいて、更新要求であるか否かを判断する(ステップ203)。
更新要求であれば、制御部6は、自身のサーバー4がマスターであるかどうかを確認し(ステップ204)、マスターであれば要求パケットの内容を全てのサーバー4(マスター自身も含む。)に通知して(ステップ205)、その更新処理を行ってよいかどうかにつきPaxosにより合意を諮る(ステップ206)。また、制御部6は、ステップ204においてマスターでなければ(例えばマスター交替があったにもかかわらずそれがクライアント3に未伝達であると、クライアント3とサーバー4で認識しているマスターが異なることになり、このような場合に制御部6はマスターでないと判断する。)、クライアント3の制御部5にマスター通知パケットを送信する(ステップ207)。マスター通知パケットを受信した制御部5は、そのマスター通知パケット中のマスターIDでクライアントセッション9のクライアントIDを置換し、要求パケットを改めて送信する(図5のステップ109,110参照)。
ステップ206において、過半数のサーバー4の同意が得られてPaxosにより合意が形成されれば、要求パケットを受信したマスターの制御部6は、全てのサーバー4(マスター自身も含む。)の制御部6に対し、更新処理の実行通知を送信する(ステップ208)。これにより、全てのサーバー4で更新要求への対応がとられる。ステップ206においてPaxosにより合意が形成されなければ、制御部6はステップ201に移行して次の要求パケットの待機状態に入る。
これに対し、ステップ203において更新要求でなければ、要求パケットを受信したサーバー4で参照要求への対応がとられる。
〔更新要求への対応〕
図7に示すように、更新処理の実行通知を受信したサーバー4の制御部6は(ステップ301)、要求パケット中のクライアントIDに基づいて、サーバーセッション10をハッシュ等から取得する(そのクライアントIDに対応するサーバーセッション10がなければ、それを新規に作成する。:ステップ302)。
図7に示すように、更新処理の実行通知を受信したサーバー4の制御部6は(ステップ301)、要求パケット中のクライアントIDに基づいて、サーバーセッション10をハッシュ等から取得する(そのクライアントIDに対応するサーバーセッション10がなければ、それを新規に作成する。:ステップ302)。
続いて、制御部6は、ステップ302で取得したサーバーセッション10のセッション状態がオープンであるかどうかを確認し(ステップ303)、オープンでなければクライアント3の制御部5にエラー応答を送信し(ステップ304)、ステップ301に移行して次の更新処理の実行通知の待機状態に入る。
ステップ303においてセッション状態がオープンであれば、制御部6は要求パケット中のトランザクション通番と、サーバーセッション10に記憶された応答トランザクション通番(図面において「応答通番」と記載。)が、同一であるか否かを判断する(ステップ305)。一要求一応答の場合であれば、トランザクション通番と応答トランザクション通番が同一ならば、その応答トランザクション通番を含み保留応答として保存されている応答パケットは、そのトランザクション通番を含む要求パケットに対応して生成されたものと考えられる(つまり、サーバー4は今回と同様の要求に対して既に対応済みであり、今回の要求は重複要求と考えられる。)。したがって、ステップ305においてトランザクション通番と応答トランザクション通番が同一であれば、制御部6は保留応答フラグが「偽」で(ステップ306)、その時点においても自身のサーバー4がマスターであることを確認すると(ステップ307)、あらためて応答パケットを生成することなく、保留応答として保留されている応答パケットをクライアント3の制御部5に送信する(ステップ308)。ステップ306において保留応答フラグが「真」であるか、あるいは、ステップ307において自身のサーバー4がマスターでなければ、制御部6はステップ301に移行して次の更新処理の実行通知の待機状態に入る。
ステップ305において、トランザクション通番と応答トランザクション通番が同一でなければ、制御部6は、要求パケット中のトランザクション通番と、サーバーセッション10に記憶された要求開始トランザクション通番(図面において「要求開始通番」と記載。)が、同一であるか否かを判断する(ステップ309)。トランザクション通番と要求開始トランザクション通番が同一であれば、サーバー4は今回と同様の要求を処理している最中であると考えられるので、制御部6は重複処理を避けるべく今回の要求を無視する。
ステップ309において、トランザクション通番と要求開始トランザクション通番が同一でなければ、制御部6は、要求開始トランザクション通番をそのトランザクション通番で置換する(ステップ310)。そして、要求パケット中のコマンドや要求データに基づいて更新処理を行い(ステップ311)、この更新処理が終了すると、要求終了トランザクション通番(図面において「要求終了通番」と記載。)を上記トランザクション通番で置換する(ステップ312)。
ところで、更新処理の例は数多考えられるが、例えばクライアント3からサーバー4に送信されるサーバーセッションの開設要求や、開設したサーバーセッションの閉鎖要求は更新要求であり、サーバーセッションの開設処理や閉鎖処理は更新処理である。また、ファイルの書出処理等も更新処理である。
すなわち、要求パケットに含まれるコマンドがサーバーセッションの開設コマンドであれば、ステップ311の更新処理として図9に示すようなサーバーセッションの開設処理が行われる(このとき、制御部6は、ステップ303を省略し、ステップ302からステップ305に移行する。)。
制御部6は、まずステップ302で取得したサーバーセッション10のセッション状態をオープンにするとともに(ステップ501)、各トランザクション通番等の値を初期化し(ステップ502)、これらの処理が完了すると、その旨をクライアント3の制御部5に通知する応答パケットを生成し(ステップ503)、この応答パケットの送信処理を行うべく図8のステップ401を呼び出す(ステップ504)。
同図において、制御部6は、今回の更新処理について応答パケットを送信する必要があるか否かを判断し(ステップ401)、必要がなければステップ312に移行する(後述のようにロック等があると制御部6は応答パケットを生成しないことがあり、このような場合には一要求一応答ではあるものの、応答がロックの解除等があるまで遅延する。)。
応答パケットを送信する必要があれば、制御部6は保留応答フラグを確認し(ステップ402)、フラグが「真」であればステップ503で生成した応答パケットを保留応答リストに加えることによって、保留応答リストを更新する(ステップ403)。一方、フラグが「偽」であればステップ503で生成した応答パケットで保留応答リストを置換することによって、保留応答リストを更新する(ステップ404)。
次に、制御部6は、応答トランザクション通番を上記トランザクション通番で置換し(ステップ405)、自身のサーバー4がマスターであるかどうかを確認する(ステップ406)。制御部6は、マスターであれば保留応答リストの応答パケットを送信して(ステップ407)、マスターでなければ応答パケットを送信することなく、ステップ312に移行する。
そして、このようなサーバーセッションの開設処理が全てのサーバー4で行われることにより、クライアント3と全てのサーバー4との間で同一のセッションが張られることになる。
要求パケットに含まれるコマンドがサーバーセッションの閉鎖コマンドであれば、ステップ311の更新処理として図10に示すようなサーバーセッションの閉鎖処理が行われる。
制御部6は、ステップ501でオープンにしたサーバーセッション10のオープン状態を解除(セッション状態をクローズ)し(ステップ511)、この処理が完了すると、その旨をクライアント3に通知するための応答パケットを生成し(ステップ512)、ステップ401を呼び出して図8の応答パケットの送信処理を行う(ステップ513)。
また、要求パケットに含まれるコマンドがファイル書出コマンドである場合、要求パケットの要求データには、書出対象のファイルのファイルパス名、オフセット、書き出すデータ及び書き出すデータの長さが含まれており、ステップ309の更新処理として図11に示すようなファイル書出処理が行われる。
制御部6は、ファイルをオープンして(ステップ521)、オフセットからデータを書き出し(ステップ522)、ファイルをクローズする(ステップ523)。そして、書き出した長さを含む応答パケットを生成し(ステップ524)、ステップ401を呼び出して図8の応答パケットの送信処理を行う(ステップ525)。
〔参照要求への対応〕
サーバー4がPaxosにより合意を形成して処理を進めていく場合には、Paxos合意の際に過半数から漏れたサーバー4では直近の更新処理がなされていないこともあり、クライアント3がそのようなサーバー4を参照する事態を回避する必要がある。
サーバー4がPaxosにより合意を形成して処理を進めていく場合には、Paxos合意の際に過半数から漏れたサーバー4では直近の更新処理がなされていないこともあり、クライアント3がそのようなサーバー4を参照する事態を回避する必要がある。
そこで、参照処理に際しては、図6に示すように、制御部6は要求終了トランザクション通番が要求パケット中の更新トランザクション通番以上であるか否かを判断し(ステップ209)、要求終了トランザクション通番が更新トランザクション通番以上であれば、そのサーバー4は更新が遅れておらず参照に供し得るとして、セッション状態のオープンを確認して参照処理に進む(ステップ210)。セッション状態がオープンでなければ、制御部6は、クライアント3の制御部5にエラー応答を送信する(ステップ211)。
制御部6は、ステップ210においてセッション状態がオープンであると、要求開始トランザクション通番を要求パケット中のトランザクション通番で置換し(ステップ212)、要求パケット中のコマンドや要求データに基づいて参照処理を行い(ステップ213)、この参照処理が終了すると、要求終了トランザクション通番を上記トランザクション通番で置換する(ステップ214)。ステップ213の参照処理においても、制御部6は参照内容等を含む応答パケットをクライアント3の制御部5に送信するが、その方法は図8の応答パケットの送信処理と同様(ただし、ステップ312ではなくステップ214に移行する。)である。
ステップ209において、要求終了トランザクション通番が更新トランザクション通番未満であれば、制御部6は処理を中断して待機状態に入る。そして、更新の遅滞が解消して要求終了トランザクション通番が要求パケット中の更新トランザクション通番以上になれば、ウェイクアップして中断していた処理を続行する。
〔応答パケットの受信〕
クライアント3の制御部5は、サーバー4から応答パケットを受信するとステップ109(図5参照)の待機状態から脱し、リファレンスIDが不明であれば、クライアントセッション9に記憶されたリファレンスIDを応答パケット中のリファレンスIDで置換する(ステップ111,112)。
続いて、制御部5は、応答パケット中の応答トランザクション通番が期待する値と同一であるか否かを判断する(ステップ113)。この期待値は、トランザクション通番と同一であり、応答トランザクション通番が期待値と同一であれば、要求に対する適切な応答を受信したことになる。制御部5は、更新要求に対する応答を受信した場合には、更新トランザクション通番を上記トランザクション通番で置換し(ステップ114)、次の要求のためにステップ101に移行するか、又は、アプリケーションによる制御に戻る。
クライアント3の制御部5は、サーバー4から応答パケットを受信するとステップ109(図5参照)の待機状態から脱し、リファレンスIDが不明であれば、クライアントセッション9に記憶されたリファレンスIDを応答パケット中のリファレンスIDで置換する(ステップ111,112)。
続いて、制御部5は、応答パケット中の応答トランザクション通番が期待する値と同一であるか否かを判断する(ステップ113)。この期待値は、トランザクション通番と同一であり、応答トランザクション通番が期待値と同一であれば、要求に対する適切な応答を受信したことになる。制御部5は、更新要求に対する応答を受信した場合には、更新トランザクション通番を上記トランザクション通番で置換し(ステップ114)、次の要求のためにステップ101に移行するか、又は、アプリケーションによる制御に戻る。
ステップ112において応答トランザクション通番が期待値と同一でなければ、要求に対する不適切な応答を受信したことになるので、制御部5は受信した応答パケットを破棄し(ステップ115)、ステップ107に戻って適切な応答を待つ。
なお、例えばデータベースのSQL複数文のように、一つの要求から複数の応答パケットが派生する場合には、サーバー4の制御部6は保留応答フラグにより応答パケットを蓄積し、複数(所定数)保留されたところでマスターの制御部6が一つの応答として一括送信すればよい。すなわち、制御部6は要求パケットのコマンドを解析して複数(所定数)の応答パケットが作成されることを知り得るので、その複数(所定数)の応答パケットが作成されるまでは保留応答フラグを「真」とし、生成された応答パケットを直ちに送信しないようにホールドして保留応答に逐次蓄積する。そして、複数(所定数)の応答パケットが全て生成されたときに保留応答フラグを「偽」とし、マスターの制御部6が蓄積された複数(所定数)の応答パケットをヘッダを付して一括送信する。
〔イベント管理〕
前述のように、サーバー4は、サーバーセッション10によりイベントを管理することができる。
前述のように、サーバー4は、サーバーセッション10によりイベントを管理することができる。
クライアント3がサーバー4にイベント管理の開始を要求するには、イベント取得開始要求を送信する。イベント取得開始要求を送信後、クライアント3がサーバー4に対してイベントの取得を要求するには、イベント取得要求を送信する。また、クライアント3がサーバー4にイベント管理の終了を要求するには、イベント取得終了要求を送信する。これらのイベント管理に関する要求は更新要求であるから、具体的にはステップ311において以下のような処理を行えばよい。
つまり、図12に示すように、サーバー4の制御部6はイベント取得開始要求を受けると、イベント資源とサーバーセッション10との関連付けを行い、これを記憶装置8に記憶する(ステップ601)。この関連付けは、イベント資源とサーバーセッション10との間にジョイントを設定することにより行い、ここでは、ジョイントには、当該ジョイントとイベント資源を結び付けるイベントリンク、当該ジョイントとサーバーセッション10を結び付けるセッションリンク、及び、ジョイントを破棄したときの後処理関数が含まれる。なお、関連付けの対象となるイベント資源は、イベント取得開始要求の要求パケットで特定され、関連付けの対象となるサーバーセッション10は、ステップ302(又はステップ202)で特定される。
関連付けが完了すると、制御部6はその旨の応答パケットを生成し(ステップ602)、クライアント3の制御部5に送信するが(ステップ603)、その方法は図8の応答パケットの送信処理と同様である。
イベント取得開始要求を受けた後、イベントが発生すると、クライアント3からイベント取得要求を受けているか否かによって、サーバー4の処理が異なる。
詳しくは、図13に示すように、サーバー4の制御部6は、イベント資源におけるイベントの発生を知ると(ステップ611)、イベント待ちフラグを確認し(既述のように、また、後に詳述するように、クライアント3からイベント取得要求を受けていればイベント待ちフラグが「真」であり、クライアント3からイベント取得要求を受けていなければイベント待ちフラグが「偽」である。:ステップ612)、イベント待ちフラグが「真」であれば、発生したイベントをクライアント3に送信すべく応答パケットを生成し(ステップ613)、クライアント3の制御部5に図8と同様の方法で送信して(ステップ614)、イベント待ちフラグを「偽」とする(ステップ615)。
これに対し、イベント待ちフラグが「偽」であれば、制御部6は発生したイベントを保留イベントに追加して登録し(ステップ616)、イベント取得要求又は次のイベント発生等の待機状態に入る。
図14に示すように、クライアント3からイベント取得要求があると(ステップ621)、制御部6は保留イベントリストで保留イベントがあるか否かを確認し(ステップ622)、保留イベントがなければイベント待ちフラグを「真」として(ステップ623)、次のイベント取得要求時までに発生したイベントが保留イベントリストに保留されるようにする。
ステップ622において保留イベントがあれば、制御部6は保留イベントリストに登録された全ての保留イベントを一括して刈り取ってこれらを含む応答パケットを生成し(ステップ624)、クライアント3の制御部5に図8と同様の方法で送信する(ステップ625)。
図15に示すように、サーバー4の制御部6はイベント取得終了要求を受けると、イベント資源とサーバーセッション10との関連付けを解除して(ステップ631)、その旨の応答パケットを生成し(ステップ632)、クライアント3の制御部5に図8と同様の方法で送信する(ステップ633)。
〔マスター選択配列〕
サーバー4a,4b,4cは必ずしも常時稼働しているわけではなく(Paxosにより合意を形成するためには、3台のうち2台が稼働していればよい。)、マスター自体に障害が生じたり、マスターと他のサーバーとの間で通信障害が生じたりすることにより、マスター交替が生じ得る。サーバー4がマスター交替を認識したときには、そのサーバー4がクライアント3と接続中であれば、図4に示すようなマスター通知パケットを送信してクライアント3にマスターの変更を通知することができる。
サーバー4a,4b,4cは必ずしも常時稼働しているわけではなく(Paxosにより合意を形成するためには、3台のうち2台が稼働していればよい。)、マスター自体に障害が生じたり、マスターと他のサーバーとの間で通信障害が生じたりすることにより、マスター交替が生じ得る。サーバー4がマスター交替を認識したときには、そのサーバー4がクライアント3と接続中であれば、図4に示すようなマスター通知パケットを送信してクライアント3にマスターの変更を通知することができる。
ところが、マスター交替時には、サーバー4a,4b,4cの全てが新しいマスターを認識するのに一定の時間を要するので、セル2全体としては新旧のマスターが併存しているかのような状態になる。このとき、旧マスターが新マスターをマスターとして認識し、新マスターが旧マスターを未だマスターとして認識しているとすると、クライアント3が旧マスターに要求を出すと新マスターを通知するマスター通知パケットが返ってきて、新マスターに要求を出すと旧マスターを通知するマスター通知パケットが返ってくるという循環が発生する。この循環は、時間が経てばサーバー4a,4b,4cの認識が一つのマスターに収束するので、いずれ自然に解消するが、この間、パケットが連続的に流れてしまってネットワーク負荷を引き起こす。
そこで、本形態では、クライアントセッション9において、例えば図16に示すような循環回避用のマスター選択配列を用意する。マスター選択配列では、クライアントセッション9のマスターIDが替わる度に、旧いマスターIDに対応するサーバー4の配列要素に「1」の印が付される(印が付されない配列要素は「0」である。)。よって、クライアント3が新たにマスター通知パケットを受信し、このマスター通知パケット中のマスターIDに対応するサーバー4の配列要素に印が付されていれば、このマスター通知パケットは旧マスターを通知してきたおそれがあるから、クライアント3の制御部5は上記循環が生じているとみなし、クライアントセッション9のマスターIDをマスター通知パケットで通知されたマスターIDに置換することなく次のマスター通知パケットを待つ。
具体的には、マスター通知パケット中のレプリカIDとマスターIDが一致していれば、このマスター通知パケットの送信元のサーバー4は自身をマスターと認識していることになり循環は発生していないから、クライアント3の制御部5は、そのレプリカIDをクライアントセッション9のマスターIDとし、マスター選択配列の印を全部クリアする。
また、マスター通知パケット中のマスターIDとクライアントセッション9のマスターIDが一致していれば、クライアント3とサーバー4でマスターの認識が一致しているから、制御部5はマスター選択配列に対して特に何もしない。
一方、マスター通知パケット中のマスターIDとクライアントセッション9のマスターIDが一致していなければ、制御部5は、マスター通知パケット中のマスターIDに対応するサーバー4の配列要素に「1」の印が付されているか否かを判断する。そして、印が付されていれば、上記循環が生じていてマスター選択中(Jeopard)であると判断し、クライアントセッション9のマスターIDを不明として次のマスター通知パケットを待つ。印が付されていなければ、それまでクライアントセッション9に記憶されていたマスターIDに対応するサーバー4の配列要素に印を付け、クライアントセッション9のマスターIDをマスター通知パケット中のマスターIDで置換する。
なお、制御部5は、接続が切断された旧マスターをマスターと認識することがないように、接続情報によりサーバー4a,4b,4cのいずれかについて接続の切断を検知したときは、そのIDとクライアントセッション9のマスターIDが一致していれば、クライアントセッション9のマスターIDに対応するサーバー4の配列要素に印を付ける。
また、マスター選択中に一定時間経ってもマスター通知パケットが送られてこない場合には、制御部5はマスター選択配列の印を全てクリアした上でサーバー4a,4b,4cに順次要求パケットを送信し、マスター通知パケットが送られてくるのを待つ。
本形態に係る分散コンピューティングシステム1によれば、セル2を構成する各サーバー4に、クライアント3からの処理要求を受け、処理要求があった旨及びそのクライアント3を特定するクライアントIDを他のサーバー4に通知する処理要求通知手段と、クライアント3から処理要求を受け、又は、処理要求を受けた他のサーバー4から処理要求があった旨の通知を受け、クライアントIDに基づきクライアント3との間でセッションを開設して所定の処理を行う処理実行手段として機能する制御部6が設けられているので、各サーバー4がクライアント3との間にクライアントIDに基づき同一のセッションを開設して処理を行うことにより、セルのクライアントとの接続窓口が複数になって、接続窓口における障害発生に起因するサービス提供の停止を防止することができる。
以上、本発明を実施するための形態について例示したが、本発明の実施形態は上述したものに限られず、本発明の趣旨を逸脱しない範囲で適宜変更等してもよい。
例えばセルを構成するサーバーはPaxosによらずに同期を取ってもよいし、Paxosのリーダーをマスターとしなくてもよい。また、要求パケット、応答パケット、マスター通知パケットやクライアントIDの構成も、上述したものと異なってもかまわない。
1 分散コンピューティングシステム
2 セル
3 クライアント
4a,4b,4c サーバー(レプリカ)
5 制御部(処理要求手段、要求送信手段、マスターID変更手段)
6a,6b,6c 制御部(処理要求通知手段、セッション開設手段、応答生成手段、応答送信手段、マスター変更通知手段)
7 記憶装置(第一の記憶手段)
8a,8b,8c 記憶装置(第二の記憶手段)
9 クライアントセッション
10a,10b,10c サーバーセッション
2 セル
3 クライアント
4a,4b,4c サーバー(レプリカ)
5 制御部(処理要求手段、要求送信手段、マスターID変更手段)
6a,6b,6c 制御部(処理要求通知手段、セッション開設手段、応答生成手段、応答送信手段、マスター変更通知手段)
7 記憶装置(第一の記憶手段)
8a,8b,8c 記憶装置(第二の記憶手段)
9 クライアントセッション
10a,10b,10c サーバーセッション
Claims (31)
- 互いに同期が取られる複数のレプリカを含むセルとクライアントとを備え、
前記クライアントに、前記セルと前記クライアントとの間のセッションを管理するためのセッション情報として、前記クライアントが各レプリカと接続するための接続情報及び前記クライアントを特定するためのクライアントIDを記憶する第一の記憶手段と、前記複数のレプリカのいずれかに対し、前記接続情報に基づき所定の処理の要求及び前記クライアントIDの通知を行う処理要求手段とが設けられ、
前記各レプリカに、前記処理要求手段からの処理要求を受け、処理要求があった旨及び前記クライアントIDを他のレプリカに通知する処理要求通知手段と、前記処理要求手段から処理要求を受け、又は、処理要求を受けたレプリカの処理要求通知手段から処理要求があった旨の通知を受け、前記クライアントIDに基づき前記クライアントとの間で前記セッションを開設して前記所定の処理を行う処理実行手段とが設けられていることを特徴とする分散コンピューティングシステム。 - 前記所定の処理が、更新処理であることを特徴とする請求項1に記載の分散コンピューティングシステム。
- 前記所定の処理の要求が、前記各レプリカに前記セッションを開設させるためのセッション開設要求であることを特徴とする請求項1に記載の分散コンピューティングシステム。
- 前記第一の記憶手段が、前記複数のレプリカの一つがマスターとして選ばれる場合に、いずれのレプリカがマスターであるかを特定するためのマスターIDを記憶し、
前記処理要求手段が、前記第一の記憶手段に記憶されたマスターIDにより特定されるレプリカに対し、前記所定の処理の要求及び前記クライアントIDの通知を行うことを特徴とする請求項1乃至請求項3のいずれか1項に記載の分散コンピューティングシステム。 - 前記第一の記憶手段が、前記複数のレプリカの一つが参照処理時の参照に供するリファレンスとして選ばれる場合に、いずれのレプリカがリファレンスであるかを特定するためのリファレンスIDを記憶し、
前記処理要求手段が、前記第一の記憶手段に記憶されたリファレンスIDにより特定されるレプリカに対し、参照処理の要求を行うことを特徴とする請求項4に記載の分散コンピューティングシステム。 - 前記各レプリカに、前記所定の処理の要求に対する応答を生成する応答生成手段と、前記マスターIDを前記第一の記憶手段とは独立して記憶するとともに前記応答生成手段により生成された応答を記憶する第二の記憶手段と、前記第二の記憶手段に記憶された応答を前記クライアントに送信可能な応答送信手段とが設けられ、
前記応答送信手段が、前記第二の記憶手段に記憶されたマスターIDに基づいて自身のレプリカがマスターであると判断したときに、前記第二の記憶手段に記憶された応答を前記クライアントに送信することを特徴とする請求項4に記載の分散コンピューティングシステム。 - 前記各レプリカに、前記所定の処理の要求に対する応答を生成する応答生成手段と、前記マスターIDを前記第一の記憶手段とは独立して記憶するとともに前記応答生成手段により生成された応答を記憶する第二の記憶手段と、前記第二の記憶手段に記憶された応答を前記クライアントに送信可能な応答送信手段とが設けられ、
前記応答送信手段が、前記第二の記憶手段に記憶されたマスターIDに基づいて自身のレプリカがマスターであると判断したときに、前記第二の記憶手段に記憶された応答を前記クライアントに送信することを特徴とする請求項5に記載の分散コンピューティングシステム。 - 前記応答送信手段が、前記第二の記憶手段に記憶されたマスターIDに基づいて自身のレプリカがマスターでないと判断したときに、そのマスターIDに関する情報を前記第二の記憶手段に記憶された応答の代わりに前記クライアントに送信することを特徴とする請求項6に記載の分散コンピューティングシステム。
- 前記応答送信手段が、前記第二の記憶手段に記憶されたマスターIDに基づいて自身のレプリカがマスターでないと判断したときに、そのマスターIDに関する情報を前記第二の記憶手段に記憶された応答の代わりに前記クライアントに送信することを特徴とする請求項7に記載の分散コンピューティングシステム。
- 前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする請求項4に記載の分散コンピューティングシステム。
- 前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする請求項5に記載の分散コンピューティングシステム。
- 前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする請求項6に記載の分散コンピューティングシステム。
- 前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする請求項7に記載の分散コンピューティングシステム。
- 前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする請求項8に記載の分散コンピューティングシステム。
- 前記各レプリカに、前記複数のレプリカ間でマスターの変更があったときに、新しいマスターのマスターIDに関する情報を前記クライアントに通知するマスター変更通知手段が設けられていることを特徴とする請求項9に記載の分散コンピューティングシステム。
- 前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、
前記クライアントに、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする請求項8に記載の分散コンピューティングシステム。 - 前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、
前記クライアントに、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする請求項9に記載の分散コンピューティングシステム。 - 前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、
前記クライアントに、前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする請求項10に記載の分散コンピューティングシステム。 - 前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、
前記クライアントに、前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする請求項11に記載の分散コンピューティングシステム。 - 前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、
前記クライアントに、前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする請求項12に記載の分散コンピューティングシステム。 - 前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、
前記クライアントに、前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする請求項13に記載の分散コンピューティングシステム。 - 前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、
前記クライアントに、前記応答送信手段又は前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする請求項14に記載の分散コンピューティングシステム。 - 前記第一の記憶手段が、前記マスターIDが変更されたときに変更前のマスターIDを記憶するマスターテーブルを記憶し、
前記クライアントに、前記応答送信手段又は前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一であれば前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換せず、そのマスターIDが前記マスターテーブルに記憶されたマスターIDと同一でなければ前記第一の記憶手段に記憶されたマスターIDをそのマスターIDに置換するマスターID変更手段が設けられていることを特徴とする請求項15に記載の分散コンピューティングシステム。 - 前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする請求項16に記載の分散コンピューティングシステム。
- 前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする請求項17に記載の分散コンピューティングシステム。
- 前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする請求項18に記載の分散コンピューティングシステム。
- 前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする請求項19に記載の分散コンピューティングシステム。
- 前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする請求項20に記載の分散コンピューティングシステム。
- 前記マスターID変更手段が、前記応答送信手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする請求項21に記載の分散コンピューティングシステム。
- 前記マスターID変更手段が、前記応答送信手段又は前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする請求項22に記載の分散コンピューティングシステム。
- 前記マスターID変更手段が、前記応答送信手段又は前記マスター変更通知手段からマスターIDに関する情報を受信したときに、そのマスターIDが送信元のレプリカのIDと同一である場合、又は、そのマスターIDが前記第一の記憶手段に記憶されたマスターIDと同一である場合には、前記第一の記憶手段に記憶されたマスターIDの置換を行わないことを特徴とする請求項23に記載の分散コンピューティングシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/066906 WO2012042607A1 (ja) | 2010-09-29 | 2010-09-29 | 分散コンピューティングシステム |
JP2010538664A JPWO2012042607A1 (ja) | 2010-09-29 | 2010-09-29 | 分散コンピューティングシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/066906 WO2012042607A1 (ja) | 2010-09-29 | 2010-09-29 | 分散コンピューティングシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2012042607A1 true WO2012042607A1 (ja) | 2012-04-05 |
Family
ID=45892111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2010/066906 WO2012042607A1 (ja) | 2010-09-29 | 2010-09-29 | 分散コンピューティングシステム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2012042607A1 (ja) |
WO (1) | WO2012042607A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015057696A (ja) * | 2013-09-16 | 2015-03-26 | アクシス アーベー | 分散制御システムにおけるアプリケーションデータの管理 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008004569A1 (fr) * | 2006-07-06 | 2008-01-10 | Nec Corporation | Système à configuration en grappe, grappe pour serveur, élément de grappe, procédé permettant de rendre un élément de grappe redondant, et procédé de distribution de la charge |
JP2009217765A (ja) * | 2008-03-13 | 2009-09-24 | Hitachi Ltd | 複数宛先への同期送信方法、その実施システム及び処理プログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3847364B2 (ja) * | 1996-02-14 | 2006-11-22 | 富士通株式会社 | ロードシェアシステム |
JPH10105424A (ja) * | 1996-09-26 | 1998-04-24 | Okinawa Nippon Denki Software Kk | 二重化サーバのipアドレス割り当て方法 |
JP4703682B2 (ja) * | 2008-04-21 | 2011-06-15 | 株式会社東芝 | クラスタシステム及びプログラム |
JP5446157B2 (ja) * | 2008-07-28 | 2014-03-19 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
JP2010086145A (ja) * | 2008-09-30 | 2010-04-15 | Hitachi East Japan Solutions Ltd | 分散処理システム |
-
2010
- 2010-09-29 WO PCT/JP2010/066906 patent/WO2012042607A1/ja active Application Filing
- 2010-09-29 JP JP2010538664A patent/JPWO2012042607A1/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008004569A1 (fr) * | 2006-07-06 | 2008-01-10 | Nec Corporation | Système à configuration en grappe, grappe pour serveur, élément de grappe, procédé permettant de rendre un élément de grappe redondant, et procédé de distribution de la charge |
JP2009217765A (ja) * | 2008-03-13 | 2009-09-24 | Hitachi Ltd | 複数宛先への同期送信方法、その実施システム及び処理プログラム |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015057696A (ja) * | 2013-09-16 | 2015-03-26 | アクシス アーベー | 分散制御システムにおけるアプリケーションデータの管理 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2012042607A1 (ja) | 2014-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110224871B (zh) | 一种Redis集群的高可用方法及装置 | |
TW497071B (en) | Method and apparatus for managing clustered computer systems | |
US9021459B1 (en) | High availability in-service software upgrade using virtual machine instances in dual control units of a network device | |
US9934242B2 (en) | Replication of data between mirrored data sites | |
US20190205315A1 (en) | System and method for synchronizing data between communication devices in a networked environment without a central server | |
US20160077857A1 (en) | Techniques for Remapping Sessions for a Multi-Threaded Application | |
CN108234307A (zh) | 网络方法、网络装置和非暂时性计算机可读存储介质 | |
WO2016070375A1 (zh) | 一种分布式存储复制系统和方法 | |
EP4083786A1 (en) | Cloud operating system management method and apparatus, server, management system, and medium | |
CN108234302A (zh) | 保持网络装置用的分布式操作系统中的一致性 | |
WO2019061720A1 (zh) | 一种数据同步的方法和系统 | |
CN108234306A (zh) | 网络装置、网络方法和计算机可读存储介质 | |
CN105262820A (zh) | 一种基于Linux操作系统的集群多机互备的方法 | |
JP2005316993A (ja) | ネットワーク上においてコンピュータ間でオブジェクトを共有するためのシステムおよび方法 | |
US20140059315A1 (en) | Computer system, data management method and data management program | |
WO2012145963A1 (zh) | 数据管理系统及方法 | |
US20180077007A1 (en) | Redundant storage solution | |
WO2016078362A1 (zh) | 一种双主控隔离的逐板升级的方法及装置 | |
CN102012944A (zh) | 一种提供复制特性的分布式nosql数据库 | |
CN114553693B (zh) | 网关升级方法及装置 | |
JP7161008B2 (ja) | アプリケーション冗長化管理システムおよびアプリケーション冗長化管理方法 | |
US8627412B2 (en) | Transparent database connection reconnect | |
WO2015196692A1 (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
JP6740543B2 (ja) | 通信装置、システム、ロールバック方法及びプログラム | |
JP2010044553A (ja) | データ処理方法、クラスタシステム、及びデータ処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 2010538664 Country of ref document: JP |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 10857822 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: 10857822 Country of ref document: EP Kind code of ref document: A1 |