Computation system, processing method, process control system, and process control method
A distributed load balancing system for computational processing in continuous process control systems ensures reliable and flexible task execution, overcoming failures and maintenance challenges in existing technologies.
Patent Information
- Application Number
- JP2024210149
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-05-22
- Filing Date
- 2024-12-03
- Publication Date
- 2025-12-05
AI Technical Summary
Existing load balancing technologies for computational processing in distributed systems are not suitable for continuous process control systems like chemical plants, as they risk computational processing failures during maintenance or hardware updates, and do not allow flexible control of processing results and output destinations.
A distributed load balancing system where front-end computers request computational processing from multiple back-end computers with higher capacity, using load balancers to manage reservations and communications, ensuring reliable and flexible execution of tasks.
Enables reliable and flexible execution of computational processes, allowing continuous operation and maintenance without disrupting the system, and enabling real-time control of equipment.
Smart Images

Figure 2025178077000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to a computing system, a processing method, a process control system, and a process control method. [Background technology]
[0002] There are cases where it is necessary to distribute computational processing across multiple computers. For example, equipment that requires advanced computational processing to control the equipment requires computers with high computing power. However, installing a computer with high computing power for each piece of equipment is costly. Therefore, computers for performing advanced computational processing are shared among multiple pieces of equipment, with simple computational processing being performed on a computer installed in each piece of equipment (front-end computer), and advanced computational processing being performed on a shared computer (back-end computer). In such a computing system, in order for the shared back-end computer to evenly execute computation requests from the front-end computer, a function (load balancing function) that controls computation requests and their execution between the front-end computer and the back-end computer is important.
[0003] For example, Patent Document 1 discloses a system for real-time interaction in which a requesting terminal and multiple target terminals are connected via a network. The requesting terminal can broadcast a request and receive request responses from one or multiple target terminals. The target terminal can store the request from the requesting terminal and transmit the request responses. Furthermore, the requesting terminal can issue a deletion request instruction to all terminals by broadcast when the deadline for receiving response requests has expired, when a required number of valid response requests have been received, etc., and the target terminal can delete the request in response to the deletion request instruction.
[0004] Furthermore, Patent Document 2 discloses a technology for a network to which multiple servers and multiple clients are connected. A client broadcasts a query message that includes a process identifier for specifying the type of process it requests the server to perform, and a required load value, which is the load value required for the server to perform the process. The server determines whether the process can be performed based on the process identifier and required load value included in the received query message and its own current load value, and if the process can be performed, it replies with a process readiness message to the sender of the query message. The client then requests the process from the sender of the process readiness message it first received. This technology distributes the load between servers performing the same process without placing a heavy load on the network lines. [Prior art documents] [Patent documents]
[0005] [Patent Document 1] Special Publication No. 2015-511457 [Patent Document 2] Japanese Patent Application Publication No. 7-152698 Summary of the Invention [Problem to be solved by the invention]
[0006] However, in the technology described in Patent Document 1, the dialogue system functioning as a load balancer centrally manages real-time dialogue between a requesting terminal and multiple target terminals. Such a centralized load balancing function does not allow the load balancer to be stopped while the terminals are operating. Therefore, with the technology described in Patent Document 1, there is a risk that the computational processing requested by the requesting terminal cannot be executed, for example, during load balancer maintenance, software and hardware updates, or when a failure occurs. Therefore, for example, the technology described in Patent Document 1 is not suitable for a process control system for controlling equipment that operates continuously at all times, such as a chemical plant.
[0007] On the other hand, the technology described in Patent Document 2 does not use a centralized load balancing function, but instead determines the server that will execute the processing requested by the client through dialogue between the client and the server. However, the technology described in Patent Document 2 is intended for a system in which processing for print output by a printer (client) is executed by a print server (server) provided for each printer, and is not intended for distribution of client processing and print server processing. For this reason, the technology described in Patent Document 2 does not easily allow, for example, the client to use the results of print server processing or to control the output destination of a computational processing from the client side. Therefore, the technology described in Patent Document 2 may not be able to reliably and flexibly request and execute computational processing. For example, in a process control system that is desired to control continuously operating equipment such as a chemical plant in real time, it is necessary to input the state of the process and output a control signal based on the state of the process to the process in real time. Therefore, it is essential to allow the client to use the results of print server processing or to control the output destination of a computational processing from the client side. However, the technology described in Patent Document 2 does not easily achieve these.
[0008] Therefore, the present invention has been made in consideration of the above problems, and an object of the present invention is to realize a load balancing function that enables the request and execution of computational processing to be carried out reliably and flexibly. [Means for solving the problem]
[0009] According to one aspect of the present invention, there is provided a computing system in which a plurality of front-end computers are connected via a network to a plurality of back-end computers which transmit to the front-end computers the computational results obtained by executing computational processing requested by the front-end computers, the front-end computers request two or more of the plurality of back-end computers to execute the same computational processing, and each of the two or more back-end computers executes the computational processing requested by the front-end computers when it has available computing capacity.
[0010] The front-end computer may transmit a computation reservation to a back-end computer prior to a computation processing request, and the back-end computer may record information about the computation reservation when it receives the computation reservation, determine whether it has computation capacity available, and if so, transmit a reservation acceptance response to the front-end computer, and the front-end computer may transmit a request to execute the computation processing to at least one back-end computer that transmitted the reservation acceptance response, and upon receiving the request to execute the computation processing, the back-end computer may transmit an acceptance response to the front-end computer, then execute the computation processing and transmit the computation results to the front-end computer, and upon receiving the acceptance response, the front-end computer may transmit a reservation cancellation request to the back-end computer, and upon receiving the reservation cancellation request, the back-end computer may delete the recorded information about the computation reservation.
[0011] The front-end computer is a device that controls the equipment and is provided for each of a plurality of pieces of equipment, and the back-end computer may be a device that has a higher processing capacity than the front-end computer.
[0012] The back-end computer may have one or more processing units, and when it receives a calculation reservation from the front-end computer, if there is a processing unit with available calculation capacity, it may send a reservation acceptance response to the front-end computer.
[0013] If the back-end computer does not receive a request to execute a computation process or a request to cancel a reservation within a specified time after sending a reservation acceptance response to the front-end computer, it may delete the recorded computation reservation and restart the process from the time when the computation reservation for the computation process was received.
[0014] If the front-end computer does not receive an acceptance response from the back-end computer to which it sent a request to execute a computation process within a specified time, or if it does not receive the computation results within a specified time after receiving an acceptance response from the back-end computer, it may resend a computation reservation to the back-end computer.
[0015] When a back-end computer receives two different computation reservations from the same front-end computer, the back-end computer may overwrite the information of the earlier received computation reservation with the information of the later received computation reservation, except for information that can identify the reservation order of the computation reservations.
[0016] When the front-end computer receives a request to send calculation data to be used in the calculation process after receiving an acknowledgment from the back-end computer, the front-end computer may send the calculation data to the back-end computer.
[0017] Each back-end computer stores whether or not each type of computation process can be executed, and when it receives a computation reservation from the front-end computer, it determines whether or not the computation process can be executed based on the type of the requested computation process, and if the computation process can be executed, it may record information about the computation reservation.
[0018] The back-end computer may receive computation reservations from different front-end computers, and if it has the computational capacity to execute each of the requested computation processes, it may send a reservation acceptance response to the front-end computer that requested the computation reservation with the highest priority among the received computation reservations.
[0019] Each back-end computer stores a calculation formula to be executed for each type of calculation process, and when a front-end computer requesting a calculation process has n back-end computers execute the same calculation process, it may send n calculation reservations to the back-end computers, each specifying n different types associated with the same calculation process.
[0020] A front-end computer requesting a calculation process stores in advance request destination correspondence information that classifies back-end computers into n groups for one calculation formula used in the calculation process, and when the same calculation process is to be executed on n back-end computers, the front-end computer may specify the group of back-end computers for which a calculation reservation is being requested and the calculation formula to be used in the calculation process, and send a calculation reservation with a different reservation identification number assigned to each group.
[0021] Communication between multiple front-end computers and multiple back-end computers is carried out via multiple communication paths formed by a network, and when the front-end computer sends information to the back-end computer, it sends the information in parallel via the multiple communication paths, and when the back-end computer sends information to the front-end computer, it sends the information in parallel via the multiple communication paths, and the front-end computer adopts any one of the information sent in parallel from the back-end computer to the multiple communication paths and received, and the back-end computer may adopt any one of the information sent in parallel from the front-end computer to the multiple communication paths and received.
[0022] The front-end computer may adopt the first received information from the back-end computer that is transmitted in parallel to multiple communication paths, and the back-end computer may adopt the first received information from the front-end computer that is transmitted in parallel to multiple communication paths.
[0023] The front-end computer may discard information that is not adopted from among the information transmitted in parallel from the back-end computer to multiple communication paths, and the back-end computer may discard information that is not adopted from among the information transmitted in parallel from the front-end computer to multiple communication paths.
[0024] The front-end computer may assign the same identification information to each piece of information that is transmitted in parallel to multiple communication paths, the back-end computer may assign the same identification information to each piece of information that is transmitted in parallel to multiple communication paths, the front-end computer may decide which piece of information to adopt from the information transmitted in parallel to the multiple communication paths and received from the back-end computer based on the identification information assigned to the information transmitted from the back-end computer, and the back-end computer may decide which piece of information to adopt from the information transmitted in parallel to the multiple communication paths and received from the front-end computer based on the identification information assigned to the information transmitted from the front-end computer.
[0025] The plurality of communication paths may be communication paths established by different communication carriers.
[0026] According to another aspect of the present invention, there is provided a processing method for a computing system configured by connecting a plurality of front-end computers via a network with a plurality of back-end computers that transmit to the front-end computers computation results obtained by executing computational processing requested by the front-end computers, the processing method comprising the steps of: a front-end computer requesting two or more of the plurality of back-end computers to execute the same computational processing; and each of the two or more back-end computers, if it has available computing capacity, executing the computational processing requested by the front-end computer.
[0027] According to another aspect of the present invention, there is provided a process control system for controlling a plurality of pieces of equipment, in which a plurality of front-end computers each corresponding to a respective piece of equipment are connected via a network to a plurality of back-end computers each having a higher computing power than the front-end computers, and when the plurality of back-end computers have spare computing power, each executes the computational processing requested by the front-end computers and transmits the computation results to the front-end computers, and the front-end computers control the corresponding pieces of equipment based on the transmitted computation results.
[0028] According to another aspect of the present invention, there is provided a process control method in a process control system in which a plurality of front-end computers, each corresponding to a respective one of a plurality of pieces of equipment, and a plurality of back-end computers having higher computing processing capabilities than the front-end computers are connected via a network, the process control method comprising the steps of: when the plurality of back-end computers have available computing capacity, each executing a computational process requested by the front-end computer and transmitting the computation results to the front-end computer; and, based on the transmitted computation results, the front-end computer controlling the corresponding piece of equipment. [Effects of the Invention]
[0029] As described above, according to the present invention, it is possible to realize a load balancing function that enables requests for and execution of computational processes to be carried out reliably and flexibly. [Brief explanation of the drawings]
[0030] [Figure 1] 1 is an explanatory diagram illustrating an example of the configuration of a computing system according to a first embodiment of the present invention; [Figure 2] FIG. 10 is an explanatory diagram illustrating an example of the configuration of a computing system in which a centralized load balancing function is used. [Figure 3]This is a flowchart showing an example of a method for requesting the execution of a computation process from an FEP to a BEP in the computation system of the same embodiment, and is a flowchart showing the processing between the LB-FEP of a computer requesting the computation process and the LB-BEP of a computer executing the computation process. [Figure 4] 10 is a flowchart illustrating an example of a process for checking computational capacity of an LB-BEP. [Figure 5] FIG. 1 is a schematic diagram showing a BEP equipped with three small computers. [Figure 6] FIG. 10 is an explanatory diagram showing an example of a small computer status file. [Figure 7] 10 is a flowchart showing the processing performed when the LB-BEP transmits a response to a calculation reservation from the LB-FEP but does not receive a calculation request. [Figure 8] 10 is a flowchart showing the processing when the LB-BEP does not respond to a calculation reservation from the LB-FEP. [Figure 9] This is a flowchart showing an example of a method for requesting the execution of a computation process from an FEP to a BEP when a malfunction occurs in the computation system, and is a flowchart showing the processing between the LB-FEP of the computer requesting the computation process and the LB-BEP of the computer executing the computation process. [Figure 10] 10 is a flowchart showing the processing performed when the LB-BEP transmits a response to a calculation reservation from the LB-FEP but does not receive a calculation request. [Figure 11] 10 is a flowchart showing the processing when the LB-BEP does not respond to a calculation reservation from the LB-FEP. [Figure 12] 10 is a flowchart showing an example of reservation data overwrite processing by the LB-BEP. [Figure 13] FIG. 2 is an explanatory diagram illustrating an example of reservation data held in a reservation holding file. [Figure 14] 10 is a flowchart for overwriting information of the overwrite candidate reservation data with information of the latest reservation data when the FEP name and request type are the same between the latest reservation data and the overwrite candidate reservation data. [Figure 15]10 is a flowchart for overwriting information of the overwrite candidate reservation data with information of the latest reservation data when the FEP name, request type, and priority are the same between the latest reservation data and the overwrite candidate reservation data. [Figure 16] 10 is a flowchart illustrating an example of a process for post-transferring calculation data from an FEP to a BEP. [Figure 17] FIG. 10 is an explanatory diagram showing an example of a later delivery determination file. [Figure 18] 10 is a flowchart showing an example of a process for determining whether calculation is possible using LB-BEP. [Figure 19] 10A and 10B are explanatory diagrams showing an example of reservation data including a request type and a reservation holding file. [Figure 20] FIG. 10 is an explanatory diagram showing an example of a request type correspondence file that stores whether or not a BEP can be calculated for a calculation process. [Figure 21] FIG. 10 is an explanatory diagram showing an example of a calculation data request file. [Figure 22] 10 is a flowchart showing an example of a priority order determination process in the LB-BEP. [Figure 23] 10 is an explanatory diagram showing an example of reservation data and a reservation holding file including the priority of calculation processes. FIG. [Figure 24] FIG. 10 is an explanatory diagram showing a schematic diagram of the processing of the LB-FEP and the LB-BEP when the same calculation request is sent multiple times to all the LB-BEPs. [Figure 25] FIG. 10 is an explanatory diagram showing an example of a request type correspondence file of the LB-FEP and each LB-BEP. [Figure 26] 10 is a flowchart showing an example of processing when a LB-FEP transmits a "calculation end request" to a LB-BEP. [Figure 27] FIG. 10 is an explanatory diagram showing a schematic diagram of the processing of the LB-FEP and the LB-BEP when the LB-FEP specifies a BEP that executes the calculation processing and transmits the same calculation request. [Figure 28] 2 is a block diagram showing an example of a hardware configuration of an information processing device functioning as an FEP or BEP according to the embodiment. FIG. [Figure 29]FIG. 10 is an explanatory diagram illustrating an example of the configuration of a computing system according to a second embodiment of the present invention. [Figure 30] FIG. 10 is an explanatory diagram conceptually illustrating an example of FEP-side transmission information. [Figure 31] FIG. 10 is an explanatory diagram conceptually illustrating an example of BEP-side transmission information. [Figure 32] FIG. 10 is an explanatory diagram illustrating an example of a self (FEP) status management table. [Figure 33] FIG. 10 is an explanatory diagram illustrating an example of a remote device (FEP) status management table. [Figure 34] FIG. 10 is an explanatory diagram illustrating an example of a status management table of the own device (BEP). [Figure 35] FIG. 10 is an explanatory diagram illustrating an example of a partner device (BEP) status management table. [Figure 36] 10 is a flowchart showing an example of processing performed by a CM-FEP when transmitting FEP-side transmission information. [Figure 37] 10 is a flowchart showing an example of a process performed by the CM-BEP when receiving FEP-side transmission information. [Figure 38] 10 is a flowchart showing an example of a process performed by the CM-BEP when transmitting BEP-side transmission information. [Figure 39] 10 is a flowchart showing an example of processing performed by a CM-FEP when receiving BEP-side transmission information. DETAILED DESCRIPTION OF THE INVENTION
[0031] Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In this specification and drawings, components having substantially the same functional configurations are designated by the same reference numerals, and redundant explanations will be omitted.
[0032] (First embodiment) First, a first embodiment of the present invention will be described. [1. System Configuration] First, the configuration of a computing system 1 according to a first embodiment of the present invention will be described with reference to Fig. 1. Fig. 1 is an explanatory diagram showing an example of the configuration of a computing system 1 according to this embodiment.
[0033] 1, a computing system 1 according to this embodiment is a system in which a plurality of front-end computers (FEPs) 100 and a plurality of back-end computers (BEPs) 200 are connected via a network 5. The network 5 is, for example, a wired LAN using Ethernet, and enables signals and the like to be sent and received between the front-end computers 100 and the back-end computers 200 in accordance with a predetermined protocol such as TCP / IP.
[0034] The front-end computer 100 is a computer that executes calculation processes for managing and controlling the facilities 3, and one front-end computer 100 is installed in each facility 3. The front-end computer 100 can have the back-end computer 200 execute at least a part of the calculation processes that it executes, and receive the calculation results.
[0035] The back-end computer 200 is a computer that executes a calculation process requested by the front-end computer 100 and transmits the calculation results to the front-end computer 100. The back-end computer 200 has a higher processing power than the front-end computer 100 and is shared by a plurality of front-end computers 100. The processing power of a computer can be specified, for example, by the manufacturer and model of a central processing unit (CPU) or a graphics processing unit (GPU). Specifically, the processing power of a CPU can be specified by the number of cores, clock speed, number of threads, cache memory capacity, etc., while the processing power of a GPU can be specified by the number of cores, clock speed, VRAM (Video Random Access Memory) capacity, etc.
[0036] The back-end computer 200 performs advanced computational processing on behalf of the front-end computer 100, thereby reducing the computational load on the front-end computer 100. Furthermore, by sharing the back-end computer 200 among multiple front-end computers 100, each front-end computer 100 does not need to have high computational processing power, thereby reducing the installation costs of the computers. Because back-end computers 200 with high computational processing power are more expensive than front-end computers 100, reducing the number of back-end computers 200 also contributes to cost reduction. Thus, from the perspective of reducing costs, etc., it is preferable that the back-end computer 200 has higher computational processing power than the front-end computer 100. However, the back-end computer 200 does not need to have higher computational processing power than the front-end computer 100. For example, even if the back-end computer 200 has the same computing power as the front-end computer 100, by having the back-end computer 200 perform some of the calculations performed by the front-end computer 100, the calculations performed by the front-end computer 100 can be distributed between the front-end computer 100 and the back-end computer 200.
[0037] Here, due to the sharing of the back-end computer 200, the computing system 1 is required to have a load balancing function that appropriately distributes the computing processes requested by the front-end computer 100 to the back-end computer 200 and reliably and flexibly requests and executes the computing processes. The computing system 1 according to this embodiment employs a distributed load balancing function, and the front-end computer 100 and the back-end computer 200 that make up the computing system 1 are equipped with load balancers 110 and 210, respectively.
[0038] In contrast to the computing system 1 according to this embodiment shown in Fig. 1, Fig. 2 shows an example of the configuration of a computing system 10 having a centralized load balancing function. Similar to the computing system 1 shown in Fig. 1, the computing system 10 shown in Fig. 2 is a system in which a plurality of front-end computers (FEPs) 11 and a plurality of back-end computers (BEPs) 13 are connected via a network 5. In the computing system 10 shown in Fig. 2, the front-end computers 11 and the back-end computers 13 do not have a load balancing function, and the load balancing function is concentrated in a load balancing server 15 connected to the network 5.
[0039] In such a computing system 10, if the load balance server 15 is stopped, the load balancing function is lost, and therefore the load balance server 15 cannot be stopped while the facility 3 is in operation. In particular, if the facility 3 is a facility that operates continuously at all times, such as a chemical plant, it is not possible to perform maintenance or functional improvements on the load balance server 15. For this reason, the computing system 1 according to this embodiment employs a distributed load balancing function.
[0040] The computing system 1 of this embodiment performs the following processing using the load balancer (LB-FEP) 110 of the front-end computer 100 and the load balancer (LB-BEP) 210 of the back-end computer 200, thereby realizing a load balancing function that reliably and flexibly requests and executes computing processing.
[0041] The load balancer 110 of the front-end computing device 100 according to this embodiment requests two or more back-end computing devices among a plurality of back-end computing devices 200 to execute the same computing process. The load balancers 210 of the at least two back-end computing devices 200 each determine whether or not there is spare capacity to execute the requested computing process. When the load balancer 210 of the back-end computing device 200 determines that there is spare capacity to execute the requested computing process, the back-end computing device 200 executes the computing process requested by the front-end computing device 100. The load balancer 210 of the back-end computing device 200 transmits the computation results obtained by executing the computing process to the front-end computing device 100.
[0042] Such cooperation between the load balancer 110 of the front-end computer 100 and the load balancer 210 of the back-end computer 200 allows a portion of the computational processing that needs to be executed in the front-end computer 100 to be reliably executed in the back-end computer 200 and used in the front-end computer 100. This makes it possible, for example, for the front-end computer 100 to control the facility 3 in real time. Furthermore, since the front-end computer 100 and the back-end computer 200 are equipped with the load balancers 110 and 210, respectively, the load balancing function in the computing system 1 will not be stopped even if, for example, the back-end computer 200 is stopped during operation of the facility 3 to perform maintenance, program updates, computer replacement, or the like.
[0043] Furthermore, when configuring the computing system 1 as described above, in order to enable the load balancer 210 of the back-end computer 200 to more reliably process computational processing requests from the load balancer 110 of the front-end computer 100, it is preferable to have the load balancer (LB-FEP) 110 of the front-end computer 100 and the load balancer (LB-BEP) 210 of the back-end computer 200 execute the following processing to appropriately distribute the computational processing requested by the front-end computer 100 to the back-end computer 200, thereby realizing a load balancing function that more reliably and flexibly requests and executes computational processing.
[0044] First, prior to a request for a computation process, the front-end computing device 100 transmits a computation reservation to a communicable back-end computing device 200 via the load balancer 110. When the load balancer 210 of the back-end computing device 200 receives a computation reservation from the front-end computing device 100, it records the information about the computation reservation and determines whether or not the back-end computing device 200 has available computation capacity. If the back-end computing device 200 has available capacity to execute the requested computation process, it transmits a reservation acceptance response to the front-end computing device 100.
[0045] Next, the load balancer 110 of the front-end computing device 100 sends a request to execute a computation process to at least one back-end computing device 200 that sent the reservation acceptance response. When the load balancer 210 of the back-end computing device 200 receives the request to execute a computation process, it sends an acceptance response to the front-end computing device 100. Thereafter, the load balancer 210 of the back-end computing device 200 executes the computation process and sends the computation result to the front-end computing device 100.
[0046] On the other hand, when the load balancer 110 of the front-end computer 100 receives an acceptance response from the back-end computer 200, it sends a reservation cancellation request to the back-end computer 200 that is able to communicate with it. When the load balancer 210 of the back-end computer 200 receives the reservation cancellation request from the front-end computer 100, it deletes the recorded computing reservation.
[0047] Such cooperation between the load balancer 110 of the front-end computer 100 and the load balancer 210 of the back-end computer 200 ensures reliable and accurate communication between the front-end computer 100 and the back-end computer 200, ensuring that the back-end computer 200 is able to execute the calculation process requested by the front-end computer 100, while also reliably releasing other back-end computers 200 so that they can accept requests from other front-end computers 100.
[0048] The processing for realizing the load balancing function in the computing system 1 according to this embodiment will be described in detail below. Note that, hereinafter, the front-end computer will also be referred to as an "FEP," the back-end computer as a "BEP," the load balancer of the front-end computer as an "LB-FEP," and the load balancer of the back-end computer as an "LB-BEP."
[0049] [2. How to request calculation processing from FEP to BEP (basic processing)] 3 to 8, a method for requesting the execution of a computation process from the FEP 100 to the BEP 200 will be described as an example of the load balancing function in the computing system 1 according to this embodiment. FIG. 3 is a flowchart showing an example of a method for requesting the execution of a computation process from the FEP 100 to the BEP 200 in the computing system 1 according to this embodiment, illustrating the processing between the load balancer (LB-FEP 110) of the computer requesting the computation process and the load balancer (LB-BEP 210) of the computer executing the computation process. FIG. 4 is a flowchart showing an example of the processing for checking the computational capacity of the LB-BEP 210. FIG. 5 is a schematic diagram showing the BEP 200 having three small computers 231, 232, and 233. FIG. 6 is an explanatory diagram showing an example of a small computer status file. FIG. 7 is a flowchart showing the processing performed when the LB-BEP 210 sends a response to a computation reservation from the LB-FEP 110 but does not receive a computation request. FIG. 8 is a flowchart showing the processing performed when the LB-BEP 210 does not respond to a computation reservation from the LB-FEP 110.
[0050] [2-1. When LB-BEP receives a calculation request from LB-FEP and performs the calculation process] First, a case where the BEP200 executes a calculation process upon receiving a calculation request from the FEP100 will be described with reference to Fig. 3. For simplicity of explanation, Fig. 3 shows only the load balancers of two computers, the LB-FEP110 of the FEP100 that requests the calculation process and the LB-BEP210 of the BEP200 that receives the calculation request, but the network 5 to which these are connected has multiple FEP100s and multiple BEP200s connected to it, as shown in Fig. 1. Furthermore, the transmissions indicated by the bold lines in Fig. 3 indicate transmissions from the LB-FEP110 to all LB-BEP210s that can communicate.
[0051] (1) Calculation reservation 3, first, the LB-FEP110 of the FEP100 that wants to request a calculation process from the BEP200 starts operation in response to the calculation request from the FEP100, and sends a "calculation reservation" to the LB-BEP210 of all BEP200 that can communicate via the network 5 (S101). At this time, the LB-FEP110 sends the calculation process reservation data to the LB-BEP210 along with the "calculation reservation."
[0052] The reservation data includes, for example, the FEP name, FEP reservation number, transmission time, calculation data, etc. The FEP name is the name of the FEP 100 of the LB-FEP 110 that sent the "calculation reservation," and is a name unique to each FEP 100. The FEP reservation number is a unique identification number assigned by the LB-FEP 110 to each reservation data. The transmission time is the time when the LB-FEP 110 sent the "calculation reservation." The calculation data is data necessary to execute the requested calculation process. As will be described later, the calculation data does not necessarily have to be included in the reservation data, and may be sent, for example, after receiving a request from the LB-BEP 210.
[0053] When the LB-BEP 210 receives a "calculation reservation" (S201), it stores the reservation data for the calculation process in a reservation holding file in a storage unit (not shown) within the LB-BEP 210.
[0054] (2) Checking computational capacity Next, the LB-BEP 210 executes a computational capacity confirmation process to confirm whether there is capacity available to execute the computational processing requested by the LB-FEP 110 (S202). The computational capacity confirmation process is performed to confirm whether the LB-BEP 210 can reliably execute the requested computational processing. For example, when the computational system 1 according to this embodiment is applied to a process control system that controls equipment that operates continuously at all times, such as a chemical plant, the responsiveness of the computational processing is also important. Therefore, it is desirable to confirm that the requested computational processing can be reliably executed before responding to the LB-FEP 110.
[0055] Here, the BEP 200 has one or more subcomputers as a processing unit for executing computational processes. The subcomputers may be, for example, a GPU card, a virtual computer space, or the CPU core of the BEP 200 itself. Each subcomputer sequentially executes computational processes requested by at least one FEP 100. In the computational capacity confirmation process, if the BEP 200 has a subcomputer in a standby state that is not executing a computational process and is not reserved for a computational process, it is determined that the computational process can be executed reliably. Specifically, for example, if the subcomputer is a GPU card, it can be considered to have available capacity if the GPU card is not executing a computational process. Furthermore, if the subcomputer is a CPU, the presence or absence of computational capacity can be determined based on the CPU utilization rate. For example, the CPU utilization rate at which computational capacity is considered to exist can be set as a threshold, and if the CPU utilization rate when the computational capacity confirmation process is executed is equal to or less than the threshold, it can be considered to have available capacity. Then, the LB-BEP 210 reserves one of the standby subcomputers and sends a "response" to the LB-FEP 110. The calculation capacity confirmation process will be described in detail below with reference to FIG.
[0056] The calculation availability confirmation process is started, for example, when the reservation holding file is updated or when a calculation process by a small computer in the BEP 200 is completed. As shown in FIG. 4, the LB-BEP 210 first checks whether reservation data is stored in the reservation holding file (S2021). If there is no reservation data in the reservation holding file (S2021: NO), the calculation availability confirmation process ends. On the other hand, if there is reservation data in the reservation holding file (S2021: YES), the LB-BEP 210 acquires the status of the small computer in the BEP 200 (S2022). The status of the small computer can be acquired by referencing the small computer status file in the memory unit (not shown) in the BEP 200.
[0057] The small computer status file is a file that stores information about whether the small computers of the BEP 200 are currently running a calculation, waiting for a calculation, or reserved for another calculation. As an example, Fig. 6 shows a small computer status file for the BEP 200 having three small computers, small computer 1, small computer 2, and small computer 3, as shown in Fig. 5.
[0058] As shown in Fig. 6, the small computer status file records the status, BEP internal number, FEP reservation number, start time, and end time for each of small computers 1, 2, and 3. The small computer number is a unique number used to identify a small computer, and in Fig. 6, small computer number "1" represents small computer 1, small computer number "2" represents small computer 2, and small computer number "3" represents small computer 3.
[0059] The state indicates the state of the sub-computer, and one of the following states is recorded: "calculating," "waiting," or "allocated." The "calculating" state is recorded when a sub-computer in the "allocated" state starts a calculation process (i.e., the state transitions from "allocated" to "calculating"). The "waiting" state is recorded when a sub-computer in the "calculating" state finishes a calculation process (i.e., the state transitions from "calculating" to "waiting"). The "allocated" state is recorded when a sub-computer in the "waiting" state is determined to have spare computation capacity (i.e., the state transitions from "waiting" to "allocated").
[0060] The BEP internal number is a unique number assigned by the LB-BEP210 to the reservation data stored in the reservation holding file. The start time is the time when the computer most recently started a calculation process, and the end time is the time when the computer most recently finished a calculation process. When the status of a small computer is "calculating," as in small computer 3 shown in Figure 6, the start time when the calculation process started is recorded in the small computer status file, but the end time is not recorded.
[0061] The LB-BEP 210 acquires the status of the small computers from the small computer status file, for example, in the order of the small computer numbers.The LB-BEP 210 then determines whether the acquired status of the small computer is "waiting" (S2023).If the acquired status of the small computer is not "waiting" (S2023: NO), the process proceeds to step S2027.
[0062] On the other hand, if the acquired status of the small computer is "waiting" (S2023: YES), the LB-BEP 210 refers to the reservation holding file and acquires key information from the reservation data of the reservation that should be executed earliest (S2024). The key information is information that can identify the content of the reserved calculation process, such as the FEP reservation number or the BEP internal number. The LB-BEP 210 then changes the status of the small computer in the small computer status file from "waiting" to "allocated" and records the key information acquired in step S2024 (S2025). Thereafter, the LB-BEP 210 initiates a response sending process that sends a "response" to the LB-FEP 110 indicating that the calculation process can be executed (S2026). This initiates the process of sending a "response" from the LB-BEP 210 to the LB-FEP 110 (S203 in FIG. 3).
[0063] When the status check for the relevant subcomputer is completed, the LB-BEP 210 determines whether the status check for all subcomputers is completed (S2027). If there are unconfirmed subcomputers (S2027: NO), the LB-BEP 210 returns to step S2021 and repeats the processing of steps S2021 to S2026. Then, when the status check for all subcomputers is completed (S2027: YES), the LB-BEP 210 ends the computational capacity check process.
[0064] (3) Response transmission Returning to the explanation of Fig. 3, if it is determined in step S202 that there is available computational capacity, the LB-BEP 210 sends a "response" to the LB-FEP 110 that sent the computation reservation by starting the response sending process in step S2026 of Fig. 4 (S203). At this time, the LB-BEP 210 adds the key information, that is, the FEP name and FEP reservation number, to the "response" before sending it.
[0065] (4) Calculation processing execution When the LB-FEP110 receives a "response" from the LB-BEP210 (S103), it sends a "calculation request" to the LB-BEP210 that sent the "response," which is a formal request for calculation processing (S105). At this time, the LB-FEP110 assigns the FEP name and FEP reservation number to the "calculation request" before sending it. Note that if "responses" are received from multiple LB-BEP210, the LB-FEP110 sends the "calculation request" to the LB-BEP210 that sent the "response" that was received earliest.
[0066] When the LB-BEP 210 receives the "calculation request" (S204), it sends an "acknowledgment" to the LB-FEP 110 indicating that it has received the "calculation request" (S205). Then, the LB-BEP 210 causes the small computer of the BEP 200 to execute the calculation process based on the FEP name and FEP reservation number assigned to the "calculation request" (S206), and sends the calculation results to the LB-FEP 110 (S207). When the LB-FEP 110 receives the calculation results (S109), the FEP 100 uses the calculation results to execute its own calculation process.
[0067] (5) Cancellation of calculation reservation On the other hand, the LB-FEP110, which has received the "acceptance response" from the LB-BEP210, sends a "calculation reservation cancellation" to all LB-BEP210 with which it can communicate via the network 5 in order to delete the reservation data stored in the reservation holding file of the LB-BEP210 by the "calculation reservation" sent in step S101 (S107). At this time, the LB-FEP110 sends the "calculation reservation cancellation" together with the FEP name and FEP reservation number assigned to the "response" received in step S103.
[0068] When the LB-BEP210 receives a "calculation reservation cancellation" from the LB-FEP110, it deletes the reservation data from the reservation holding file based on the FEP name and FEP reservation number assigned to the "calculation reservation cancellation" (S208). Note that the LB-BEP210 that received the calculation request also deletes the reservation data from the reservation holding file upon receiving the "calculation reservation cancellation." However, the BEP200 from which the LB-BEP210 received the calculation request was already executing the calculation process in step S206. For this reason, the calculation process that has already started execution is not affected, and the calculation results of the calculation process executed by the BEP200 are reliably sent to the FEP100.
[0069] [2-2. Processing of LB-BEP that sent a response to a calculation reservation from LB-FEP but did not receive the calculation request] Next, the processing when the LB-BEP210 sends a response to a calculation reservation from the LB-FEP110 but does not receive a calculation request will be described with reference to Fig. 7. Fig. 7 shows the processing performed by the LB-BEP210 that sends a response to a calculation reservation from the LB-FEP110 but does not receive a calculation request, and the processing performed by the LB-FEP110 for that LB-BEP210. In the explanation of Fig. 7, the same processes as those in Fig. 3 are given the same reference numerals, and detailed explanations will be omitted. Note that Fig. 7 omits the illustration of the FEP100 and BEP200, and shows only the LB-FEP110 and LB-BEP210.
[0070] 7, of the multiple BEPs 200 connected to the network 5 of the computing system 1, the load balancer of the BEP 200 that receives a computation request from the LB-FEP 110 and executes the computation process is shown as LB-BEP 210A, and the load balancer of the BEP 200 that sent a response to the computation reservation from the LB-FEP 110 but did not receive the computation request is shown as LB-BEP 210B. LB-BEP 210A is the LB-BEP 210 in FIG. 3, but only a portion of the processing executed by LB-BEP 210A is shown.
[0071] (1) Calculation reservation As shown in Figure 7, first, the LB-FEP 110 of the FEP 100 that wants to request a calculation process from the BEP 200 sends a "calculation reservation" to all LB-BEPs 210 with which it can communicate via the network 5 (S101). At this time, the LB-FEP 110 sends the calculation process reservation data to the LB-BEP 210 along with the "calculation reservation." The processing of step S101 may be performed in the same manner as the processing of Figure 3. When the LB-BEP 210 receives the "calculation reservation" (S201), it stores the calculation process reservation data in a reservation holding file in a memory unit (not shown) within the LB-BEP 210.
[0072] (2) Checking computational capacity Next, the LB-BEP 210 executes a calculation capacity confirmation process (S202) to confirm whether there is a capacity available to execute the calculation process requested by the LB-FEP 110. The LB-BEP 210 executes the calculation capacity confirmation process in accordance with the flowchart shown in FIG. 4, similar to the process shown in FIG. 3.
[0073] (3) Response transmission If it is determined in step S202 that there is available computational capacity, the LB-BEP 210 sends a "response" to the LB-FEP 110 that sent the computation reservation (S203). At this time, the LB-BEP 210 adds key information, such as the FEP name and FEP reservation number, to the "response" before sending it. The processing of step S203 may be performed in the same way as the processing of FIG. 3. In FIG. 7, the LB-BEP 210A and LB-BEP 210B send "responses" to the LB-FEP 110.
[0074] When the LB-FEP110 receives the "response" (S103), it sends a "calculation request" that is a formal request for calculation processing to the LB-BEP210 (here, LB-BEP210A) that sent the previously received "response" (S105). When the LB-BEP210A receives the "calculation request" (S204), it sends an "acknowledgment" to the LB-FEP110 (S205). Thereafter, the LB-BEP210A causes the subcomputer of the BEP200 to execute the calculation processing (S206 in FIG. 3), and sends the "calculation result" to the LB-FEP110 (S207 in FIG. 3).
[0075] (4) Cancellation of calculation reservation On the other hand, the LB-FEP 110 that has received the "acceptance response" from the LB-BEP 210A sends a "calculation reservation cancellation" to all LB-BEPs 210 with which it can communicate via the network 5, as in Fig. 3 (S107). When the LB-BEP 210B receives the "calculation reservation cancellation" from the LB-FEP 110, it deletes the reservation data from the reservation holding file based on the FEP name and FEP reservation number assigned to the "calculation reservation cancellation" (S208). By receiving the "calculation reservation cancellation", the LB-FEP 110B learns that it has no "calculation requests" and ends the process without executing the calculation process.
[0076] [2-3. How to handle LB-BEPs that do not respond to calculation reservations from LB-FEPs] Next, the processing when the LB-BEP 210 does not respond to a calculation reservation from the LB-FEP 110 will be described with reference to Fig. 8. Fig. 8 shows the processing performed by the LB-BEP 210 that did not respond to a calculation reservation from the LB-FEP 110, and the processing performed by the LB-FEP 110 for that LB-BEP 210. In the explanation of Fig. 8, the same processing as the processing in Fig. 3 is given the same reference numerals, and detailed explanations will be omitted. Note that Fig. 8 omits the illustration of the FEP 100 and BEP 200, and shows only the LB-FEP 110 and LB-BEP 210.
[0077] 8, of the multiple BEPs 200 connected to the network 5 of the computing system 1, the load balancer of the BEP 200 that receives a computation request from the LB-FEP 110 and executes the computation process is shown as LB-BEP210A, and the load balancer of the BEP 200 that did not respond to the computation reservation from the LB-FEP 110 is shown as LB-BEP210C. LB-BEP210A is the LB-BEP 210 in FIG. 3, but only a portion of the processing executed by LB-BEP210A is shown.
[0078] (1) Calculation reservation As shown in Figure 8, first, the LB-FEP 110 that wants to request a calculation process from the LB-BEP 210 sends a "calculation reservation" to all LB-BEPs 210 that can communicate via the network 5 (S101). At this time, the LB-FEP 110 sends the calculation process reservation data to the LB-BEP 210 along with the "calculation reservation." The processing of step S101 may be performed in the same manner as the processing of Figure 3. When the LB-BEP 210 receives the "calculation reservation" (S201), it stores the calculation process reservation data in a reservation holding file in a memory unit (not shown) within the LB-BEP 210.
[0079] (2) Checking computational capacity Next, the LB-BEP 210 executes a calculation capacity confirmation process (S202) to confirm whether there is a capacity available to execute the calculation process requested by the LB-FEP 110. The LB-BEP 210 executes the calculation capacity confirmation process in accordance with the flowchart shown in FIG. 4, similar to the process shown in FIG. 3.
[0080] If the LB-BEP 210 determines in step S202 that it has available computational capacity, it sends a "response" to the LB-FEP 110 that sent the computation reservation (S203 in FIG. 3). However, the LB-BEP 210C in FIG. 8 does not send a "response" because it determines that it does not have available computational capacity.
[0081] (3) Cancellation of calculation reservation When the LB-BEP 210A that has received the calculation request sends an "acknowledgment" to the LB-FEP 110 (S205), the LB-FEP 110 that has received the "acknowledgment" sends a "calculation reservation cancellation" to all LB-BEPs 210 that can communicate via the network 5, as in Fig. 3 (S107). When the LB-BEP 210C receives the "calculation reservation cancellation" from the LB-FEP 110, it deletes the reservation data from the reservation holding file based on the FEP name and FEP reservation number assigned to the "calculation reservation cancellation" (S208), and ends the process.
[0082] The method for requesting the execution of a calculation process from the FEP 100 to the BEP 200 has been described above with reference to Figures 3, 7, and 8. According to this embodiment, when the FEP 100 requests the BEP 200 to perform a calculation process, the LB-FEP 110 sends a "calculation reservation" to all the LB-BEPs 210. In other words, by the LB-FEP 110 indicating to all the LB-BEPs 210 that it wishes for the calculation to be performed, all of the independently operating LB-BEPs 210 can obtain information from the LB-FEP 110 without omission.
[0083] Furthermore, each LB-BEP 210 that receives a "calculation reservation" checks whether it has the capacity to execute the calculation process on its own computer, and only if it determines that it can handle the request will it send a "response" to the LB-FEP 110. Each LB-BEP 210 has the right to decide whether or not to respond to the LB-FEP 110, which allows the independence of the BEP 200 to be maintained.
[0084] On the other hand, the LB-FEP110 can quickly request the LB-BEP210 of the BEP200 that can reliably perform the calculation by sending a "calculation request" to the LB-BEP210 of the BEP200 that responded first among the BEP200 that has the capacity to perform the calculation. Also, the LB-FEP110 requests the LB-BEP210 to perform the calculation each time it wants to request the calculation through a dialogue using "calculation reservation" and "response," so it is also possible to disconnect the BEP200 from the calculation system 1 at any time.
[0085] Furthermore, after sending a "calculation request" to a specific LB-BEP210, the LB-FEP110 receives an "acknowledgment" from that LB-BEP210 and then sends a "calculation reservation cancellation" to all LB-BEP210 to cancel the reservation for that calculation process. All LB-BEP210 that receive the "calculation reservation cancellation" delete the reservation data for that calculation process from the reservation holding file. In this way, by receiving an "acknowledgment" from the LB-BEP210, the LB-FEP110 can recognize the existence of a BEP200 that will reliably perform the calculation process, and can know the timing to send a "calculation reservation cancellation" to all LB-BEP210.
[0086] By having the LB-FEP110 send a "calculation reservation cancellation" to all LB-BEP210 at the appropriate time, all LB-BEP210 can quickly and reliably recognize that they no longer need to handle the calculation process corresponding to the reservation data, regardless of whether they themselves have sent a "response." LB-BEP210s that no longer need to handle the calculation process can quickly move on to the next calculation process. Furthermore, by removing unnecessary reservation data from the reservation storage file, unnecessary checks of available calculation capacity are no longer performed, and "responses" are no longer sent to the LB-FEP110 for unnecessary reservation data.
[0087] Here, the LB-FEP 110 sends "calculation reservation" and "calculation reservation cancellation" to all LB-BEPs 210 with which it can communicate, but the present invention is not limited to this example. The LB-FEP 110 only needs to send "calculation reservation" and "calculation reservation cancellation" to all LB-BEPs 210 with which it can communicate, and may send "calculation reservation" and "calculation reservation cancellation" to some of the LB-BEPs 210 with which it can communicate, for example.
[0088] [3. Modification 1 (System malfunction response)] The conversation between the LB-FEP 110 and the LB-BEP 210 may be interrupted midway due to, for example, a disconnection of the network 5 that connects the LB-FEP 110 and the LB-BEP 210 so that they can communicate with each other. When such a malfunction occurs in the computing system 1, the LB-FEP 110 and the LB-BEP 210 maintain consistency between the LB-FEP 110 and the LB-BEP 210 by rescheduling or deleting the computation reservation depending on the situation. This allows the equipment 3 managed and controlled by the FEP 100 to operate reliably without stopping.
[0089] 9 to 11, a method for requesting the execution of a computation process from the FEP 100 to the BEP 200 when a malfunction occurs in the computation system 1 will be described. FIG. 9 is a flowchart showing an example of a method for requesting the execution of a computation process from the FEP 100 to the BEP 200 when a malfunction occurs in the computation system 1 according to this embodiment, and shows the processing between the load balancer (LB-FEP 110) of the computer requesting the computation process and the load balancer (LB-BEP 210) of the computer executing the computation process. FIG. 10 is a flowchart showing the processing when the LB-BEP 210 sends a response to a computation reservation from the LB-FEP 110 but does not receive the computation request. FIG. 11 is a flowchart showing the processing when the LB-BEP 210 does not respond to a computation reservation from the LB-FEP 110. Note that detailed descriptions of the processing in FIGS. 9 to 11 that is the same as the basic processing shown in FIGS. 3, 7, and 8 will be omitted. 10 and 11, the FEP 100 and BEP 200 are omitted, and only the LB-FEP 110 and LB-BEP 210 are shown.
[0090] [3-1. When LB-BEP receives a calculation request from LB-FEP and performs the calculation process] First, a case where the LB-BEP210 executes a calculation process upon receiving a calculation request from the LB-FEP110 will be described with reference to Fig. 9. As with Fig. 3, for simplicity of explanation, Fig. 9 shows only two load balancers, the LB-FEP110 of the FEP100 that requests the calculation process and the LB-BEP210 of the BEP200 that receives the calculation request, but the network 5 to which these are connected has multiple FEP100s and multiple BEP200s connected to it, as shown in Fig. 1. Also, the transmissions indicated by the bold lines in Fig. 9 indicate transmissions from the LB-FEP110 to all LB-BEP210s that can communicate.
[0091] (1) Calculation reservation As shown in Figure 9, first, the LB-FEP110 of the FEP100 that wants to request a calculation process from a BEP200 sends a "calculation reservation" to the LB-BEP210 of all BEP200 that can communicate via the network 5 (S111). At this time, the LB-FEP110 sends the calculation process reservation data to the LB-BEP210 along with the "calculation reservation." The processing of step S111 may be performed in the same way as the processing of Figure 3. When the LB-BEP210 receives the "calculation reservation" (S211), it stores the calculation process reservation data in a reservation holding file in a memory unit (not shown) within the LB-BEP210.
[0092] (2) Checking computational capacity Next, the LB-BEP 210 executes a computational capacity confirmation process (S212) to confirm whether there is a capacity available to execute the computation process requested by the LB-FEP 110. The process of step S212 may be executed in accordance with the flow shown in FIG. 4, similar to the process of step S202 in FIG. 3.
[0093] (3) Response transmission If it is determined in step S212 that there is available computational capacity, the LB-BEP 210 sends a "response" to the LB-FEP 110 that sent the computation reservation (S213). At this time, the LB-BEP 210 adds key information, such as the FEP name and FEP reservation number, to the "response" and sends it. After that, the LB-BEP 210 proceeds to step S214, and starts timer processing (timer processing BT1) to determine whether or not a "computation reservation cancellation" has been received from the LB-FEP 110 within a predetermined waiting time after sending the "response."
[0094] (4) Calculation processing execution On the other hand, when the LB-FEP 110 receives a "response" from the LB-BEP 210 (S112), it sends a "calculation request" to the LB-BEP 210 that sent the "response," which is a formal request for calculation processing (S113). At this time, the LB-FEP 110 assigns the FEP name and FEP reservation number to the "calculation request" and sends it. If "responses" are received from multiple LB-BEPs 210, the LB-FEP 110 sends the "calculation request" to the LB-BEP 210 that sent the earliest received "response." The processes of steps S112 and S113 may be executed in the same manner as the processes of steps S103 and S105 in FIG. 3. After sending the "calculation request," the LB-FEP 110 starts timer processing (timer processing FT1) to determine whether or not an "acknowledgment" has been received from the LB-BEP 210 within a predetermined waiting time (S114).
[0095] When the LB-BEP 210 receives the "calculation request" sent by the LB-FEP 110 in step S113 (S215), it sends an "acknowledgment" to the LB-FEP 110 indicating that it has received the "calculation request" (S216). At this time, the LB-BEP 210 starts timer processing (timer processing BT2) to determine whether or not it has received a "calculation reservation cancellation" from the LB-FEP 110 within a predetermined waiting time after sending the "acknowledgment" (S214). The LB-BEP 210 also sends the "acknowledgment" together with key information, including the FEP name and FEP reservation number. The FEP name and FEP reservation number are the FEP name and FEP reservation number assigned to the "calculation request" in step S113 (the FEP name and FEP reservation number assigned to the "calculation request" received in step S215). Furthermore, when the LB-FEP 110 receives an "acknowledgment" from the LB-BEP 210, it starts timer processing (timer processing FT2) to determine whether or not a "calculation result" has been received from the LB-BEP 210 within a predetermined waiting time (S116).
[0096] Thereafter, the LB-BEP210 identifies the reservation data from the reservation save file based on the FEP name and FEP reservation number assigned to the "calculation request," and causes the reserved small computer of the BEP200 to execute the calculation process (S217). When the LB-BEP210 receives the "calculation result" from the small computer, it transmits the "calculation result" to the LB-FEP110 (S218). The processing of steps S217 and S218 may be executed in the same manner as the processing of steps S206 and S207 in FIG. 3. When the LB-FEP110 receives the "calculation result" from the LB-BEP210 (S117), the FEP100 executes its own calculation process using the received "calculation result."
[0097] (5) Cancellation of calculation reservation On the other hand, in the event that the conversation between LB-FEP110 and LB-BEP210 is interrupted due to a disconnection of network 5 or the like, LB-FEP110 and LB-BEP210 determine whether a response from the other party has been received within a specified waiting time.
[0098] First, after sending the "calculation request", LB-FEP110 starts two timer processes FT1 (S114: process for determining whether an "acceptance response" has been received from LB-BEP210 within a specified waiting time) and FT2 (S116: process for determining whether a "calculation result" has been received from LB-BEP210 within a specified waiting time).
[0099] In timer processing FT1 (S114), if the LB-FEP 110 receives an "acknowledgment" from the LB-BEP 210 within the waiting time (S114: YES), it sends a "calculation reservation cancellation" to all LB-BEPs 210 with which it can communicate via network 5 in order to delete the reservation data stored in the reservation holding file of the LB-BEP 210 by the "calculation reservation" sent in step S111 (S115a). At this time, the LB-FEP 110 sends the "calculation reservation cancellation" by assigning the FEP name and FEP reservation number assigned to the "response" received in step S103. The processing of step S115a may be executed in the same manner as the processing of step S107 in FIG. 3.
[0100] Furthermore, if an "acknowledgment of receipt" is not received from the LB-BEP 210 within the waiting time (S114: NO), the LB-FEP 110 sends a "cancel calculation reservation" to all LB-BEPs 210 with which it can communicate via the network 5 (S115b), and then performs the process again from step S111 for the same calculation process. As a result, the calculation process to be executed using the reservation data is restarted from the calculation reservation by the LB-FEP 110.
[0101] In timer processing FT2 (S116), if the LB-FEP 110 receives the "calculation result" from the LB-BEP 210 within the waiting time (S116: YES), the LB-FEP 110 ends the timer processing FT2. On the other hand, if the LB-FEP 110 does not receive the "calculation result" from the LB-BEP 210 within the waiting time (S116: NO), the LB-FEP 110 performs the processing from step S111 again for the same calculation processing.
[0102] Next, LB-BEP210 starts timer processing BT1 (S214: processing to determine whether or not a "calculation reservation cancellation" has been received from LB-FEP110 within a specified waiting time after sending a "response") and timer processing BT2 (S214: processing to determine whether or not a "calculation reservation cancellation" has been received from LB-FEP110 within a specified waiting time after sending an "acceptance response").
[0103] If a "calculation reservation cancellation" is received within the standby time in timer processing BT1 or BT2 (S214: YES), the LB-BEP 210 ends timer processing BT1 or BT2 and cancels the timer. The LB-BEP 210 also deletes the relevant reservation data from the reservation holding file based on the FEP name and FEP reservation number assigned to the "calculation reservation cancellation." On the other hand, if a "calculation reservation cancellation" is not received within at least one of the standby times in timer processing BT1 or BT2 (S214: NO), the LB-BEP 210 deletes the relevant reservation data from the reservation holding file based on the FEP name and FEP reservation number assigned to the "response" and "acknowledgment response" in steps S213 and S216 (S219). The processing in step S219 may be performed in the same manner as the processing in step S208 in FIG. 3. By deleting the reservation data from the reservation holding file, the LB-BEP210 is freed from the process of executing the calculation process for the reservation data, and can quickly move on to executing another process (for example, checking the calculation capacity for a new calculation reservation, etc.).
[0104] [3-2. Processing of LB-BEP that sent a response to a calculation reservation from LB-FEP but did not receive a calculation request] Next, the processing when the LB-BEP 210 sends a response to a calculation reservation from the LB-FEP 110 but does not receive a calculation request will be described with reference to Fig. 10. Fig. 10 shows the processing performed by the LB-BEP 210 that sends a response to a calculation reservation from the LB-FEP 110 but does not receive a calculation request, and the processing performed by the LB-FEP 110 for that LB-BEP 210. In the description of Fig. 10, processing similar to that in Fig. 9 is assigned the same reference numerals, and detailed description will be omitted.
[0105] 10, of the multiple BEPs 200 connected to the network 5 of the computing system 1, the load balancer of the BEP 200 that receives a computation request from the LB-FEP 110 and executes the computation process is shown as LB-BEP 210A, and the load balancer of the BEP 200 that sent a response to the computation reservation from the LB-FEP 110 but did not receive the computation request is shown as LB-BEP 210B. LB-BEP 210A is the LB-BEP 210 in FIG. 9, but only a portion of the processing executed by LB-BEP 210A is shown.
[0106] (1) Calculation reservation As shown in Figure 10, first, an LB-FEP 110 that wants to request a calculation process from a BEP 200 sends a "calculation reservation" to the LB-BEPs 210 of all BEPs 200 that can communicate via the network 5 (S111). At this time, the LB-FEP 110 sends the calculation process reservation data to the LB-BEP 210 along with the "calculation reservation." The processing of step S111 may be performed in the same way as the processing of Figure 9. When the LB-BEP 210 receives the "calculation reservation" (S211), it stores the calculation process reservation data in a reservation holding file in a memory unit (not shown) within the LB-BEP 210.
[0107] (2) Checking computational capacity Next, the LB-BEP 210 executes a calculation capacity confirmation process (S212) to confirm whether there is a capacity available to execute the calculation process requested by the LB-FEP 110. The LB-BEP 210 executes the calculation capacity confirmation process in accordance with the flowchart shown in FIG. 4, similar to the process shown in FIG. 9.
[0108] (3) Response transmission If it is determined in step S212 that there is available computational capacity, the LB-BEP 210 sends a "response" to the LB-FEP 110 that sent the computation reservation (S213). At this time, the LB-BEP 210 adds key information, such as the FEP name and FEP reservation number, to the "response" before sending it. In FIG. 10, the LB-BEP 210A and LB-BEP 210B send "responses" to the LB-FEP 110. After that, the LB-BEP 210B starts timer processing (timer processing BT1) to determine whether or not it has received a "computation reservation cancellation" from the LB-FEP 110 within a predetermined waiting time after sending the "response" (S214). Although not shown in FIG. 10, the LB-BEP 210A also starts timer processing BT1 in the same way as the LB-BEP 210B.
[0109] When the LB-FEP110 receives the "response" (S112), it sends a "calculation request" that is a formal request for calculation processing to the LB-BEP210 (here, LB-BEP210A) that sent the previously received "response" (S113). When the LB-BEP210A receives the "calculation request", it sends an "acknowledgment" to the LB-FEP110 (S216). Thereafter, the LB-BEP210A causes the small computer of the BEP200 to execute the calculation processing (S217 in FIG. 9), and sends the "calculation result" received from the small computer to the LB-FEP110 (S218 in FIG. 9).
[0110] (4) Cancellation of calculation reservation The LB-FEP 110 that sent the "calculation request" in step S113 starts timer processing FT1, which determines whether or not an "acknowledgment" has been received from the LB-BEP 210A within a predetermined waiting time (S114). If the LB-FEP 110 receives an "acknowledgment" from the LB-BEP 210A within the waiting time (S114: YES), the LB-FEP 110 sends a "calculation reservation cancellation" to all LB-BEPs 210 that can communicate via network 5 (S115a), in order to delete the reservation data stored in the reservation holding file of the LB-BEP 210 by the "calculation reservation" sent in step S111. At this time, the LB-FEP 110 sends the "calculation reservation cancellation" together with the FEP name and FEP reservation number that were assigned to the "response" received in step S112.
[0111] If an "acknowledgment" is not received from the LB-FEP 110A within the waiting time (S114: NO), the LB-FEP 110 sends a "cancel calculation reservation" to all LB-BEPs 210 with which it can communicate via the network 5 (S115b), and then performs the process from step S111 again for the same calculation process. As a result, the calculation process to be executed using the reservation data will be restarted from the calculation reservation by the LB-FEP 110.
[0112] The LB-BEP 210B, which has received the "cancel calculation reservation" from the LB-FEP 110, deletes the reservation data from the reservation holding file based on the FEP name and FEP reservation number assigned to the "cancel calculation reservation" (S218). The processing of step S218 may be executed in the same manner as the processing of step S218 in FIG. 9.
[0113] Alternatively, if the LB-BEP210B does not receive a "calculation request" within the waiting time (S214: NO), it also deletes the reservation data from the reservation holding file (S218). By deleting the reservation data from the reservation holding file, the LB-BEP210B is released from the process of executing the calculation process for the reservation data, and can quickly move on to the execution of another process.
[0114] [3-3. How to handle LB-BEPs that do not respond to calculation reservations from LB-FEPs] Next, the processing when the LB-BEP 210 does not respond to a calculation reservation from the LB-FEP 110 will be described with reference to Fig. 11. Fig. 11 shows the processing performed by the LB-BEP 210 that did not respond to a calculation reservation from the LB-FEP 110, and the processing performed by the LB-FEP 110 for that LB-BEP 210. In the description of Fig. 11, the same processes as those in Fig. 9 are assigned the same reference numerals, and detailed description thereof will be omitted.
[0115] 11, of the multiple BEPs 200 connected to the network 5 of the computing system 1, the load balancer of the BEP 200 that receives a computation request from the LB-FEP 110 and executes the computation process is shown as LB-BEP210A, and the load balancer of the BEP 200 that did not respond to the computation reservation from the LB-FEP 110 is shown as LB-BEP210C. LB-BEP210A is the LB-BEP 210 in FIG. 9, but only a portion of the processing executed by LB-BEP210A is shown.
[0116] (1) Calculation reservation As shown in Figure 11, first, the LB-FEP 110 that wants to request a calculation process from the BEP 200 sends a "calculation reservation" to all LB-BEPs 210 that can communicate via the network 5 (S111). At this time, the LB-FEP 110 sends the calculation process reservation data to the LB-BEP 210 along with the "calculation reservation." The processing of step S111 may be performed in the same manner as the processing of Figure 9. When the LB-BEP 210 receives the "calculation reservation" (S211), it stores the calculation process reservation data in a reservation holding file in a memory unit (not shown) within the LB-BEP 210.
[0117] (2) Checking computational capacity Next, the LB-BEP 210 executes a calculation capacity confirmation process (S212) to confirm whether there is a capacity available to execute the calculation process requested by the LB-FEP 110. The LB-BEP 210 executes the calculation capacity confirmation process in accordance with the flowchart shown in FIG. 4, similar to the process shown in FIG. 9.
[0118] (3) Response transmission If the LB-BEP 210 determines in step S212 that it has available computational capacity, it sends a "response" to the LB-FEP 110 that sent the computation reservation (S213 in FIG. 9). In FIG. 11, the LB-BEP 210A determines that it has available computational capacity and sends a "response" to the LB-FEP 110. However, the LB-BEP 210C in FIG. 11 does not send a "response" because it determines that it does not have available computational capacity.
[0119] When the LB-FEP110 receives a "response" from the LB-BEP210A that it has determined has spare computational capacity (S112), it sends a "computation request" to the LB-BEP210A (S113). When the LB-BEP210A receives the "computation request", it sends an "acknowledgment" to the LB-FEP110 (S216). Thereafter, the LB-BEP210A causes the subcomputer of the BEP200 to execute the computation process (S217 in FIG. 9), and sends the "computation result" received from the subcomputer to the LB-FEP110 (S218 in FIG. 9).
[0120] (4) Cancellation of calculation reservation The LB-FEP 110 that sent the "calculation request" in step S113 starts timer processing FT1, which determines whether or not an "acknowledgment" has been received from the LB-BEP 210A within a predetermined waiting time (S114). If the LB-FEP 110 receives an "acknowledgment" from the LB-BEP 210A within the waiting time (S114: YES), the LB-FEP 110 sends a "calculation reservation cancellation" to all LB-BEPs 210 that can communicate via network 5 (S115a), in order to delete the reservation data stored in the reservation holding file of the LB-BEP 210 by the "calculation reservation" sent in step S111. At this time, the LB-FEP 110 sends the "calculation reservation cancellation" together with the FEP name and FEP reservation number that were assigned to the "response" received in step S112.
[0121] If an "acknowledgment" is not received from the LB-BEP 210A within the waiting time (S114: NO), the LB-FEP 110 sends a "cancel calculation reservation" to all LB-BEPs 210 with which it can communicate via the network 5 (S115b), and then performs the process from step S111 again for the same calculation process. As a result, the calculation process to be executed using the reservation data will be restarted from the calculation reservation by the LB-FEP 110.
[0122] The LB-BEP 210C, which has received the "cancel calculation reservation" from the LB-FEP 110, deletes the reservation data from the reservation holding file based on the FEP name and FEP reservation number assigned to the "cancel calculation reservation" (S218). The processing of step S218 may be executed in the same manner as the processing of step S218 in FIG. 9.
[0123] 9 to 11, a method for requesting a computation from the FEP 100 to the BEP 200 when a malfunction occurs in the computation system 1 has been described. When a malfunction occurs in the computation system 1, the LB-FEP 110 that requested the computation restarts the computation from the computation reservation if it does not receive an "acknowledgment" from the LB-BEP 210 within a predetermined waiting time after sending the "computation request," or if it does not receive a "computation result" from the LB-BEP 210 within a predetermined waiting time after receiving the "acknowledgment" from the LB-BEP 210. Meanwhile, the LB-BEP 210 detects an abnormality in the FEP 100 when it receives no response from the FEP 100 to which it requested the computation, and resets the state of the LB-BEP 210. This allows the BEP 200's resources to be released.
[0124] For example, if there is spare computing capacity and a "response" or "acknowledgment" is sent to the LB-FEP 110 and then a "calculation reservation cancellation" is not received from the LB-FEP 110 within a predetermined waiting time, the reservation data for that calculation process can be deleted from the reservation holding file, allowing a response to other reservation data stored in the reservation holding file. In other words, even if communication is interrupted multiple times during the period from when the BEP 200 indicates its intention to execute a calculation request made by the FEP 100 to when the requested calculation is executed and the calculation results are delivered to the FEP 100, each computer can independently determine the abnormality, discard the abnormal calculation request, return to normal, and move on to another calculation process.
[0125] [4. Variation 2 (overwriting reservation data)] The computing system 1 has the necessary number of BEPs 200, taking into account the computing power of the BEPs 200, so that it can respond to computation requests from all FEPs 100. However, while the computing system 1 is in operation, the capacity of the BEPs 200 may be reduced due to a malfunction of a small computer or other reasons. When the capacity of the BEPs 200 is reduced, the BEPs 200 will continue to accept computation reservations from the FEPs 100 at the same pace as before the capacity reduction, but will not be able to smoothly execute the reserved computations, and reservation data will accumulate in the reservation holding file. This may result in the BEPs 200 not being able to complete the computations before the FEPs 100 need the results, which could cause the computing system 1 to collapse.
[0126] Therefore, in order to prevent malfunctions in the computing system 1 due to a decrease in the performance of the BEP 200, the BEP 200 is allowed to continue performing the computing process while thinning out the computational process reservations from the FEP 100 within the capacity of the BEP 200. Specifically, if the BEP 200 already holds another computation reservation from the FEP 100 that sent the new computation reservation, it overwrites the contents of the already held computation reservation with the contents of the newly received computation reservation. This allows the BEP 200 to finish the computation process before the FEP 100 needs the computation results, ensuring that the computing system 1 always operates normally.
[0127] The reservation data overwrite process by the LB-BEP 210 will be described below with reference to Fig. 12 and Fig. 13. Fig. 12 is a flowchart showing an example of reservation data overwrite process by the LB-BEP 210. Fig. 13 is an explanatory diagram showing an example of reservation data held in the reservation holding file.
[0128] The overwriting process of reservation data by the LB-BEP 210 is performed in step S201 of Fig. 3. As shown in Fig. 12, first, when the LB-BEP 210 receives a "calculation reservation" from the LB-FEP 110, it stores the reservation data of the calculation reservation in the reservation holding file as the latest reservation data (S301). As an example, as shown in the upper part of Fig. 13, it is assumed that a calculation reservation from FEP 100 with the FEP name "FEP1" is stored in the reservation holding file as the latest reservation data.
[0129] Next, the LB-BEP210 acquires the FEP name of the current latest reservation data from the reservation holding file (S302). In the reservation holding file at the top of Fig. 13, the FEP name of the current latest reservation data is "FEP1". The LB-BEP210 also sets the reservation data that is one step older than the current latest reservation data as overwrite candidate reservation data (S303), and acquires the FEP name of the overwrite candidate reservation data (S304). In the reservation holding file at the top of Fig. 13, the FEP name of the overwrite candidate reservation data is "FEP3".
[0130] The LB-BEP 210 then determines whether the FEP name of the current latest scheduled data acquired in step S302 is the same as the FEP name of the overwrite candidate scheduled data acquired in step S304 (S305). If the FEP names are not the same (S305: NO), the LB-BEP 210 determines whether the current overwrite candidate scheduled data is the oldest scheduled data stored in the schedule holding file (S306). If the current overwrite candidate scheduled data is not the oldest scheduled data stored in the schedule holding file (S306: NO), the LB-BEP 210 updates the overwrite candidate scheduled data to the next oldest scheduled data (S307). The LB-BEP 210 then returns to step S304, acquires the FEP name of the new overwrite candidate scheduled data (S304), and determines whether the FEP name is the same as the FEP name of the current latest scheduled data (S305).
[0131] The LB-BEP 210 repeats the processing of steps S304 to S307 until either the FEP name of the current latest scheduled data and the FEP name of the overwrite candidate scheduled data are the same (S305: YES) or the overwrite candidate scheduled data is the oldest scheduled data (S306: YES) is met.
[0132] If the FEP name of the current latest reservation data and the FEP name of the overwrite candidate reservation data are the same (S305: YES), the LB-BEP 210 overwrites the information of the latest reservation data with the information of the overwrite candidate reservation data (S308). However, information that can clearly identify the order in which the reservation data was stored in the reservation holding file, such as time information and FEP reservation number (hereinafter also referred to as "key information"), is not overwritten, and the status of the overwrite candidate reservation data is maintained. This prevents the order in which the FEP 100 that sent the new calculation reservation is to execute the calculation process from being moved back in the reservation holding file, allowing the BEP 200 to execute the calculation process fairly among the FEPs 100 in the computing system 1. After the overwrite, the latest reservation data is deleted from the reservation holding file (S309), and the process returns to step S302. Steps S302 to S307 are performed on the new latest reservation data to determine whether to overwrite the information of the latest reservation data with the information of the overwrite candidate reservation data.
[0133] Also, if the overwrite candidate reservation data is the oldest reservation data (S306: YES), the reservation data from the LB-FEP 110 that requested the calculation process for the latest reservation data does not exist in the reservation data already stored in the reservation holding file. In this case, the LB-BEP 210 ends the processing of Figure 12 while storing the latest reservation data in the reservation holding file.
[0134] For example, in the reservation holding file at the top of Fig. 13, among the reservation data that are candidates for overwriting, the reservation data one before the current latest reservation data (FEP name "FEP3") and the reservation data two before that (FEP name "FEP2") have different FEP names from the current latest reservation data. During this time, the processing of steps S304 to S307 in Fig. 12 is repeated.
[0135] Then, since the FEP name of the reservation data three days before the current latest reservation data is "FEP1," the same as the latest reservation data (S305: YES), the LB-BEP210 overwrites the information of the latest reservation data with the information of the reservation data three days before (S308), as shown in the lower part of Figure 13, and then deletes the latest reservation data from the reservation holding file (S309). Note that in the example of Figure 13, the "received time" is used as key information. Therefore, when overwriting in step S308, the LB-BEP210 does not overwrite the "received time" with the information of the latest reservation data. This ensures that the order of reservations for calculation processing for the FEP100 with the FEP name "FEP1" is maintained, and the BEP200 can perform calculation processing fairly for each FEP100 in the calculation system 1.
[0136] The reservation data overwrite process has been described above with reference to Fig. 12. By carrying out the process shown in Fig. 12 in this way, only one reservation data from the same FEP 100 exists in the reservation holding file, and the contents of the calculation process for that reservation data will be the most recently requested one. Furthermore, because the key information of the reservation data (e.g., the reception time) remains the oldest reservation data for each FEP 100, the order in which each FEP 100 reserved the calculations is maintained. This allows the BEP 200 to perform calculation processes fairly for each FEP 100.
[0137] In the schedule data overwrite process shown in FIG. 12, when the FEP name of the current latest schedule data and the FEP name of the overwrite candidate schedule data are the same, the information of the latest schedule data is overwritten with the information of the overwrite candidate schedule data, but the present invention is not limited to this example. For example, in addition to the FEP name, the request type and priority may be taken into consideration when deciding whether to overwrite the information of the latest schedule data with the information of the overwrite candidate schedule data. The request type is a type that represents the content of the calculation process. For example, the request type can represent which formula is used to execute the calculation process requested by the FEP 100. The priority represents the priority of execution of the calculation process requested by the FEP 100. The priority may be set in advance for each calculation process by the user, for example.
[0138] For example, Fig. 14 shows a flowchart for overwriting information in the latest reservation data onto information in the overwrite candidate reservation data when the FEP name and request type are the same between the latest reservation data and the overwrite candidate reservation data. In Fig. 14, the same processes as in Fig. 12 are assigned the same reference numerals, and detailed explanations will be omitted.
[0139] As shown in FIG. 14, first, when the LB-BEP 210 receives a "calculation reservation" from the LB-FEP 110, it stores the reservation data of that calculation reservation in the reservation holding file as the latest reservation data (S301). Next, the LB-BEP 210 acquires the FEP name and request type of the current latest reservation data from the reservation holding file (S302a). The request type, for example, specifies the calculation formula to be used in the calculation process, and information specifying the calculation formula, such as "control formula A" or "control formula B," is stored. The LB-BEP 210 selects the reservation data that is one step older than the current latest reservation data as overwrite candidate reservation data (S303), and acquires the FEP name and request type of the overwrite candidate reservation data (S304a).
[0140] The LB-BEP 210 then determines whether the FEP name of the current latest scheduled data acquired in step S302a is the same as the FEP name of the overwrite candidate scheduled data acquired in step S304a (S305). If the FEP names are not the same (S305: NO), the LB-BEP 210 proceeds to the processing of step S306, which will be described later. On the other hand, if the FEP names are the same (S305: YES), the LB-BEP 210 next determines whether the request type of the current latest scheduled data acquired in step S302a is the same as the request type of the overwrite candidate scheduled data acquired in step S304a (S305a).
[0141] If the request types are not the same (S305a: NO), the LB-BEP 210 determines whether the current overwrite candidate reservation data is the oldest reservation data stored in the reservation holding file (S306). If the current overwrite candidate reservation data is not the oldest reservation data stored in the reservation holding file (S306: NO), the LB-BEP 210 updates the overwrite candidate reservation data to the next oldest reservation data (S307). Then, the LB-BEP 210 returns to step S304a, acquires the FEP name and request type of the new overwrite candidate reservation data (S304a), and determines whether the FEP name and request type are the same as those of the current latest reservation data (S305) and whether the request type is the same (S305a).
[0142] The LB-BEP210 repeats the processing of steps S304a to S307 until either the current latest reservation data and the overwrite candidate reservation data have the same FEP name (S305: YES) and the same request type (S305a: YES), or the overwrite candidate reservation data is the oldest reservation data (S306: YES).
[0143] If the FEP name of the current latest reservation data and the overwrite candidate reservation data are the same (S305: YES) and the request type is the same (S305a: YES), the LB-BEP210 overwrites the information of the latest reservation data with the information of the overwrite candidate reservation data (S308). However, the key information is not overwritten, and the state of the overwrite candidate reservation data is maintained. After overwriting, the LB-BEP210 deletes the latest reservation data from the reservation holding file (S309), returns to the processing of step S302a, and performs the processing of steps S302a to S307 on the new latest reservation data, and determines whether to overwrite the information of the latest reservation data with the information of the overwrite candidate reservation data.
[0144] Also, if the overwrite candidate reservation data is the oldest reservation data (S306: YES), the LB-BEP 210 ends the processing of FIG. 14 while storing the latest reservation data in the reservation holding file.
[0145] 14, the reservation data file contains only one reservation data with the same request type for the same reservation data from the same FEP 100, and the content of the calculation process for that reservation data is the most recently requested one. Also, since the key information for that reservation data remains the same as the old reservation data, the order in which each FEP 100 made a calculation reservation is maintained.
[0146] Fig. 15 shows a flowchart for overwriting information in the latest reservation data onto information in the overwrite candidate reservation data when the FEP name, request type, and priority are the same between the latest reservation data and the overwrite candidate reservation data. In Fig. 15, the same processes as those in Fig. 12 or 14 are denoted by the same reference numerals, and detailed explanations will be omitted.
[0147] As shown in FIG. 15, first, when the LB-BEP 210 receives a "calculation reservation" from the LB-FEP 110, it stores the reservation data of the calculation reservation in the reservation holding file as the latest reservation data (S301). Next, the LB-BEP 210 obtains the FEP name, request type, and priority of the current latest reservation data from the reservation holding file (S302b). The priority indicates the priority of executing the calculation process. The LB-BEP 210 determines the reservation data that is one step older than the current latest reservation data as overwrite candidate reservation data (S303), and obtains the FEP name, request type, and priority of the overwrite candidate reservation data (S304b).
[0148] The LB-BEP 210 then determines whether the FEP name of the current latest scheduled data acquired in step S302b is the same as the FEP name of the overwrite candidate scheduled data acquired in step S304b (S305). If the FEP names are not the same (S305: NO), the LB-BEP 210 proceeds to the processing of step S306, which will be described later. On the other hand, if the FEP names are the same (S305: YES), the LB-BEP 210 next determines whether the request type of the current latest scheduled data acquired in step S302b is the same as the request type of the overwrite candidate scheduled data acquired in step S304b (S305a).
[0149] If the request types are not the same (S305a: NO), the LB-BEP 210 determines whether the current overwrite candidate reservation data is the oldest reservation data stored in the reservation holding file (S306). If the current overwrite candidate reservation data is not the oldest reservation data stored in the reservation holding file (S306: NO), the LB-BEP 210 updates the overwrite candidate reservation data to the next oldest reservation data (S307). Then, the LB-BEP 210 returns to step S304b, acquires the FEP name, request type, and priority of the new overwrite candidate reservation data (S304b), and determines whether the FEP name is the same as that of the current latest reservation data (S305) and whether the request type is the same (S305a).
[0150] On the other hand, if the request types are the same (S305a: YES), the LB-BEP 210 further determines whether the priority of the current latest scheduled data acquired in step S302b is the same as the priority of the overwrite candidate scheduled data acquired in step S304b (S305b). If the priorities are not the same (S305b: NO), as in the case where the request types are not the same (S305a: NO), the LB-BEP 210 determines whether the current overwrite candidate scheduled data is the oldest scheduled data stored in the schedule holding file (S306). If the current overwrite candidate scheduled data is not the oldest scheduled data stored in the schedule holding file (S306: NO), the LB-BEP 210 updates the overwrite candidate scheduled data to the next oldest scheduled data (S307) and repeats the process from step S304b.
[0151] LB-BEP210 repeats the processing of steps S304b to S307 until either the current latest reservation data and the overwrite candidate reservation data have the same FEP name (S305: YES), the same request type (S305a: YES), and the same priority (S305b: YES), or the overwrite candidate reservation data is the oldest reservation data (S306: YES).
[0152] If the current latest reservation data and the overwrite candidate reservation data have the same FEP name (S305: YES), the same request type (S305a: YES), and the same priority (S305b: YES), the LB-BEP 210 overwrites the information of the latest reservation data overwrite candidate reservation data (S308). However, the key information is not overwritten, and the status of the overwrite candidate reservation data is maintained. After overwriting, the LB-BEP 210 deletes the latest reservation data from the reservation holding file (S309), returns to the processing of step S302b, and performs the processing of steps S302b to S307 on the new latest reservation data, and determines whether to overwrite the information of the latest reservation data over the information of the overwrite candidate reservation data.
[0153] Also, if the overwrite candidate reservation data is the oldest reservation data (S306: YES), the LB-BEP 210 ends the processing of FIG. 15 while storing the latest reservation data in the reservation holding file.
[0154] 15, the reservation data file contains only one reservation data with the same request type and priority for the same FEP 100, and the content of the calculation process for that reservation data is that of the most recently requested reservation. Also, since the key information for that reservation data remains the same as the old reservation data, the order in which each FEP 100 made a calculation reservation is maintained.
[0155] [5. Variation 3 (Post-delivery processing of calculation data)] When the FEP 100 requests the BEP 200 to execute a calculation process, the reservation data sent from the LB-FEP 110 to the LB-BEP 210 in step S101 of Fig. 3 includes the calculation data necessary for the calculation process, and is stored in a reservation holding file, for example, as shown in Fig. 13. However, there may be multiple numbers or formats of calculation data necessary for the calculation process requested from the FEP 100 to the BEP 200, and the configuration of the calculation system 1 may change due to the addition of a new FEP 100. In such cases, it is necessary to change the format of the reservation data or the reservation holding file.
[0156] Therefore, when sending a "calculation reservation" from the LB-FEP 110 to the LB-BEP 210, the calculation data may not be sent, but rather, after the LB-FEP 110 receives an "acknowledgment" from the LB-BEP 210 in response to the "calculation request," the LB-BEP 210 may request and send the calculation data necessary for the calculation process. This increases versatility because the shape and size of the reservation storage file do not need to be changed even if the number and format of calculation data used in the calculation process vary. Furthermore, when the calculation system 1 is gradually expanded, it is not necessary to repeatedly change the reservation data and install it in the system. Furthermore, when the number of calculation data is large, the load on the line and the computer due to data transmission and the impact on resources are reduced compared to when a large amount of calculation data is sent to all BEPs 200 at the time of the "calculation reservation."
[0157] Hereinafter, the process of transferring calculation data from the FEP 100 to the BEP 200 will be described with reference to Fig. 16 and Fig. 17. Fig. 16 is a flowchart showing an example of the process of transferring calculation data from the FEP 100 to the BEP 200. Fig. 17 is an explanatory diagram showing an example of a transfer determination file.
[0158] The calculation data delivery process shown in Fig. 16 is executed after the LB-BEP210 sends an "acknowledgment" to the LB-FEP110. After sending the "acknowledgment" to the LB-FEP110, the LB-BEP210 first determines, based on the FEP name, whether or not it is necessary for the LB-FEP110 to send calculation data in order to execute the calculation process requested by the LB-FEP110 (S221). The LB-BEP210 can determine whether or not to request the transmission of calculation data by referring to a preset data delivery file.
[0159] FIG. 17 shows an example of the configuration of a data delivery file. As shown in FIG. 17, the data delivery file records, for each FEP 100 constituting the computing system 1, the FEP name, information indicating the calculation formula used in the calculation process, and whether or not calculation data delivery is required, in association with each other. Referring to the data delivery file shown in FIG. 17, it can be seen that, for example, among the calculation processes requested by the FEP 100 with the FEP name "FEP1," calculation processes using formula "1" do not require the delivery of calculation data, but calculation processes using formula "2" require the delivery of calculation data. It can also be seen that, for example, calculation processes requested by the FEP 100 with the FEP name "FEP2" using formula "3" require the delivery of calculation data.
[0160] The LB-BEP210 refers to the data delivery file and determines whether or not to request delivery of calculation data in order to execute the calculation process requested by the LB-FEP110 that sent the "calculation request." For example, if delivery of calculation data is not required (S221: NO), such as the calculation process using formula "1" of FEP100 with FEP name "FEP1" shown in Figure 17, the LB-BEP210 obtains the calculation data from the reservation data stored in the reservation holding file (S223). Then, the LB-BEP210 executes the calculation process based on the calculation data in the reservation data (S229).
[0161] On the other hand, when post-delivery of calculation data is required (S221: YES), such as in the calculation process using calculation formula "2" of FEP100 with FEP name "FEP1" shown in FIG. 17, the LB-BEP210 requests the calculation data from the LB-FEP110 that sent the "calculation request" (S225). At this time, the LB-BEP210 sends the FEP reservation number to the FEP100 as information for identifying the requested calculation data. When the LB-FEP110 receives a request for calculation data from the LB-BEP210 (S121), it sends the corresponding calculation data to the LB-BEP210 based on the FEP reservation number (S123). For example, if the LB-BEP210 sends the FEP reservation number "500" when requesting calculation data from the LB-FEP110, the LB-FEP110 sends the calculation data required for the calculation process corresponding to the FEP reservation number "500" to the LB-BEP210.
[0162] When the LB-BEP 210 receives the calculation data from the LB-FEP 110 (S227), it causes the small computer of the BEP 200 to execute calculation processing based on the received calculation data (S229).
[0163] The above describes the process of post-transferring calculation data from FEP100 to BEP200. In this way, by requesting the calculation data required for a calculation process from FEP100 at the timing when BEP200 executes the calculation process requested by FEP100, the shape and size of the reservation holding file do not need to be changed even if the number and format of calculation data used in the calculation process are multiple, thereby improving versatility. In addition, it is possible to flexibly respond to expansion of the calculation system 1. Furthermore, compared to sending a large amount of calculation data to all BEP200 at the timing of "calculation reservation," it is possible to reduce the load on the line and computers and the impact on resources caused by data transmission.
[0164] [6. Variation 4 (Determining whether calculation is possible or not based on the request type)] As the sharing of BEP200 progresses in the computing system 1, the FEP100 will inevitably have the BEP200 execute multiple types of computational processes. Furthermore, if the number of BEP200 is flexibly increased or decreased in line with the expansion of the computing system 1, the number of BEP200 models will increase, which may result in performance differences between the BEP200. If differences in the computing power of the BEP200 arise, it is conceivable that not all BEP200 will be able to undertake computational processing requests from all FEP100.
[0165] Therefore, each LB-BEP 210 of each BEP 200 in the computing system 1 is configured to be able to determine which computation processes it can execute, and only accepts a "computation reservation" if the computation process is one that can be reliably executed.
[0166] The process of determining whether or not a calculation is possible by the LB-BEP 210 will be described below with reference to Figs. 18 to 20. Fig. 18 is a flowchart showing an example of the process of determining whether or not a calculation is possible by the LB-BEP 210. Fig. 19 is an explanatory diagram showing an example of reservation data including a request type and a reservation holding file. Fig. 20 is an explanatory diagram showing an example of a request type correspondence file that stores whether or not the BEP 200 can perform calculation for a calculation process.
[0167] In this process, a request type indicating the content of the calculation process requested by the FEP 100 is used so that the BEP 200 can determine which calculation processes it can execute. Specifically, the request type is information indicating the calculation formula or control formula used in the calculation process, such as "calculation formula 1," "calculation formula 2," "control formula A," "control formula B," etc. The LB-BEP 210 stores in a request type correspondence file whether or not it can execute the calculation process indicated by such a request type.
[0168] As shown in FIG. 18, first, the LB-BEP 210 receives a "calculation reservation" sent from the LB-FEP 110 (S401 (corresponding to S201 in FIG. 3)). The reservation data sent by the LB-FEP 110 in step S401 includes a request type. For example, as shown in FIG. 19, the reservation data includes the FEP name, FEP reservation number, transmission time, calculation data, and the request type. This indicates that "control formula A" will be used for the calculation process with FEP reservation number "500" requested by FEP 100 with FEP name "FEP1".
[0169] Next, the LB-BEP 210 determines whether or not it is possible to execute the calculation process requested by the LB-FEP 110 (S403). The LB-BEP 210 refers to the request type correspondence file to determine whether or not it is possible to execute the calculation process indicated by the request type. Each LB-BEP 210 has its own request type correspondence file, and the user sets in advance whether or not the calculation can be performed for each calculation process that the BEP 200 may be requested to perform by the FEP 100.
[0170] For example, Fig. 20 shows an example of a request type correspondence file for two BEPs ("BEP1", "BEP2") 200. Fig. 20 records whether or not each BEP ("BEP1", "BEP2") 200 can execute calculation processes for the request types "control formula A" and "control formula B". In the example of Fig. 20, it is recorded that "BEP1" can calculate "control formula A" but cannot calculate "control formula B", and "BEP2" can calculate both "control formula A" and "control formula B".
[0171] The LB-BEP 210 refers to a request type correspondence file such as that shown in Fig. 20 and determines whether the request type of the reservation data received in step S401 is calculable in the request type correspondence file. If the LB-BEP 210 determines that the calculation process for that calculation type is executable (S403: YES), it records the reservation data in the reservation holding file (S405). That is, as shown in Fig. 19, the reservation holding file also stores the request type along with the reception time, BEP internal number, FEP name, FEP reservation number, transmission time, and calculation data.
[0172] On the other hand, if it is determined that the calculation process of the calculation type cannot be executed (S403: NO), the LB-BEP 210 does not store the received reservation data in the reservation holding file, and ends the calculation possibility determination process of Fig. 18. In this case, the received reservation data is not stored in the reservation holding file, and the requested calculation process is not executed.
[0173] The above describes the process of determining whether or not a calculation can be performed by the LB-BEP 210. In this way, by using the request type, the LB-BEP 210 can accurately determine whether or not the calculation process of the "calculation reservation" received from the LB-FEP 110 can be performed.
[0174] As described above, the request type is information contained in the reservation data and the reservation holding file, but in the process of post-transferring calculation data from FEP100 to BEP200, the request type may also be included in the calculation data request file that LB-BEP210 sends to LB-FEP110.
[0175] An example of a calculation data request file is shown in FIG. 21. The calculation data request file shown in FIG. 21 includes the FEP name, FEP reservation number, and request type. When the LB-BEP210 sends a calculation data request to the LB-FEP110 in step S225 shown in FIG. 16, it sends a calculation data request file such as that shown in FIG. 21 to the LB-FEP110. Based on the "FEP reservation number" and "request type" included in the received calculation data request, the LB-FEP110 collects data necessary for the calculation process and sends it to the LB-BEP210. The BEP200 uses the calculation data received by the LB-BEP210 to perform the calculation process. In this way, by including the request type in the calculation data request file, it is possible to reliably identify the data that the FEP100 must send to the BEP200.
[0176] [7. Variation 5 (Priority)] As the BEP 200 is increasingly shared in the computing system 1, it is conceivable that priorities will arise among multiple types of computing processes. Therefore, in order to prioritize the execution of computing processes with higher priorities, the LB-BEP 210 may identify the computing processes to be executed based on the priority of the computing processes in the computing capacity confirmation process.
[0177] The process (priority determination process) by which the LB-BEP 210 identifies the calculation process to be executed based on priority will be described below with reference to Figures 22 and 23. Figure 22 is a flowchart showing an example of the priority determination process in the LB-BEP 210. Figure 23 is an explanatory diagram showing an example of reservation data and a reservation holding file including the priority of calculation processes.
[0178] The priority determination process shown in FIG. 22 is executed as step S2024 (key information acquisition process) of the computational capacity confirmation process shown in FIG. 4. In other words, the priority determination process is a process for determining which of the scheduled data should be executed first when there is scheduled data in the schedule holding file and the subcomputer is waiting for a calculation process. As described above, the priority indicates the priority of the execution of the calculation process and is set in advance by the user. For example, the priority may be expressed as a value from 1 to 1024, with 1024 being the highest and 1 being the lowest. The priority is included in the schedule data that the FEP 100 sends together with the "calculation reservation," and the schedule data of each scheduled data is also recorded in the schedule holding file that stores the schedule data (see FIG. 23).
[0179] In the calculation capacity confirmation process of Fig. 4, when reservation data is present in the reservation holding file (S2021: YES) and the subcomputer is waiting for a calculation (S2023: YES), the LB-BEP 210 first references the reservation holding file and identifies the highest priority reservation data among the stored reservation data (S501), as shown in Fig. 22. For example, in the example shown in Fig. 23, the reservation holding file holds the FEP name, FEP reservation number, request type, priority, transmission time, and calculation data contained in the reservation data, in association with the reception time of the reservation data and the BEP internal number assigned to the reservation data by the LB-BEP 210. Note that the request type only needs to be included in the reservation data and the reservation holding file when the LB-BEP 210 executes the above-mentioned calculation availability determination process.
[0180] Three reservation data are stored in the reservation holding file shown in Fig. 23. For example, when the priority is expressed as a value with 1024 being the highest and 1 being the lowest, the LB-BEP 210 identifies the reservation data with the BEP internal numbers "1002" and "1003" and a priority of "5" as the highest-ranked reservation data among the three reservation data stored in the reservation holding file.
[0181] Next, the LB-BEP 210 determines the reservation data to be executed first (also referred to as "priority reservation data") from among the highest-ranking reservation data identified in step S501, and acquires key information of the priority reservation data (S503). If there is one highest-ranking reservation data identified in step S501, that reservation data is designated as the priority reservation data. If there are multiple highest-ranking reservation data identified in step S501, the oldest reservation data is designated as the priority reservation data. In the example shown in FIG. 23, the reservation data with the BEP internal number "1002" is designated as the priority reservation data. Then, the LB-BEP 210 acquires key information of the priority reservation data (e.g., FEP reservation number, BEP internal number).
[0182] Thereafter, the LB-BEP210 changes the status of the small computer in the small computer status file from "waiting" to "allocated" and records the key information acquired in step S503 (S2025 in FIG. 4). Then, the LB-BEP210 starts a response sending process to send a "response" to the LB-FEP110 indicating that the calculation process can be executed (S2026 in FIG. 4). This causes the process of sending a "response" from the LB-BEP210 to the LB-FEP110 (S203 in FIG. 3) to be performed.
[0183] The above describes the priority determination process performed by the LB-BEP 210. By assigning priorities to reservation data in this way, the BEP 200 can appropriately prioritize and execute calculation processes with high priorities.
[0184] [8. Variation 6 (Parallel Computing)] In the computing system 1, the BEP 200 is required to be able to handle critical computing processes that cannot be allowed to fail midway through the computing process. Therefore, it is conceivable that the FEP 100 can request computing processes from multiple BEPs 200 in parallel, thereby avoiding the risks involved when requesting computing processes from a single BEP 200. Parallel computing by the BEP 200 will be specifically described below.
[0185] [8-1. Sending the same calculation request multiple times to all BEPs] As an example of parallel calculation by the BEP 200, the LB-FEP 110 may send the same calculation request multiple times to all the LB-BEPs 210, thereby ensuring that the calculation process is executed by one of the BEPs 200.
[0186] Each of the multiple LB-BEPs 210 stores a calculation formula to be executed for each type of calculation process (i.e., request type). One or more request types can be set for one calculation formula. When an LB-BEP 110 requests a calculation process to have n BEPs 200 (n is an integer greater than or equal to 2) execute the same calculation process, it sends n calculation reservations, each specifying n different request types associated with the same calculation process, to all LB-BEPs 210 with which it can communicate.
[0187] The process of transmitting the same calculation request multiple times to all LB-BEPs 210 will be described with reference to Fig. 24. Fig. 24 is an explanatory diagram that shows a schematic diagram of the process of the LB-FEP 110 and the LB-BEP 210 when transmitting the same calculation request multiple times to all LB-BEPs 210. For simplicity of explanation, Fig. 24 shows a case where the LB-FEP 110 of the FEP 110 causes the LB-BEPs 210 of the three BEPs 200 to perform the same calculation process in parallel.
[0188] In order to realize such parallel calculations of the BEP 200, the LB-FEP 110 and the LB-BEP 210 of each BEP ("BEP1", "BEP2", "BEP3") 200 each have a request type correspondence file. Figure 25 shows an example of the request type correspondence file of the LB-FEP 110 and the LB-BEP 210 of each BEP ("BEP1", "BEP2", "BEP3") 200.
[0189] The request type correspondence file of the LB-FEP 110 records the calculation process (calculation formula) that the LB-FEP 110 requests of the LB-BEP 210, in association with the request type. For example, "control formula A" is associated with request types "1" and "2," and "control formula B" is associated with request types "3" and "4." A calculation process (calculation formula) associated with multiple request types is one that the BEP 200 is to execute in parallel, and the LB-FEP 110 sends a "calculation request" for that calculation process to the LB-BEP 210 multiple times.
[0190] The request type correspondence file of the LB-BEP 210 of each BEP ("BEP1," "BEP2," "BEP3") 200 records the calculation process (calculation formula) indicated by the request type. For example, the request type correspondence file of the LB-BEP 210 of "BEP1" records that when the request type is "1," calculation process using "control formula A" is executed, and when the request type is "3," calculation process using "control formula B" is executed, but when the request type is "2" or "4," no calculation process is executed. The request type correspondence file of the LB-BEP 210 of "BEP2" records that when the request type is "2," calculation process using "control formula A" is executed, and when the request type is "4," calculation process using "control formula C" is executed, but when the request type is "1" or "3," no calculation process is executed. The request type correspondence file of LB-BEP210 for "BEP3" records that when the request type is "1", calculation processing is performed using "Control Formula A", when the request type is "3", calculation processing is performed using "Control Formula B", but when the request type is "2" or "4", calculation processing is not performed.
[0191] Based on the request type correspondence file shown in Figure 25, for the calculation process by "control formula A," as shown in Figure 24, a "calculation request" for the same calculation process is sent twice from the LB-FEP 110 to the LB-BEP 210 of each BEP ("BEP1," "BEP2," "BEP3") 200. The LB-FEP 110 treats the multiple "calculation requests" it sends as different messages, even if they are for the same calculation process, and assigns a different FEP reservation number to each. In other words, for the calculation process by "control formula A," the LB-FEP 110 sends reservation data with FEP reservation number "500" and request type "1," and reservation data with FEP reservation number "501" and request type "2," to the LB-BEP 210 of each BEP ("BEP1," "BEP2," "BEP3") 200, respectively.
[0192] The LB-BEP 210 of each BEP ("BEP1," "BEP2," "BEP3") 200 receives reservation data with FEP reservation number "500" and request type "1" and reservation data with FEP reservation number "501" and request type "2" for the calculation process by "control formula A." Upon receiving the reservation data, the LB-BEP 210 refers to the request type correspondence file and determines whether or not to store the received reservation data in the reservation holding file based on the request type of the requested calculation process.
[0193] For example, the LB-BEP210 of the BEP200 with the BEP name "BEP1" determines from the request type correspondence file that reservation data with a request type of "1" should be calculated using "control formula A," and stores the reservation data with an FEP reservation number of "500" in the reservation holding file. On the other hand, since no calculation process is associated with reservation data with a request type of "2" in the request type correspondence file, the LB-BEP210 of the BEP200 with the BEP name "BEP1" does not store the reservation data with an FEP reservation number of "501" in the reservation holding file.
[0194] Similarly, the LB-BEP210 of the BEP200 with the BEP name "BEP2" determines from the request type correspondence file that reservation data with a request type of "2" should be calculated using "control formula A," and stores the reservation data with an FEP reservation number of "501" in the reservation holding file. On the other hand, since no calculation process is associated with reservation data with a request type of "1" in the request type correspondence file, the LB-BEP210 of the BEP200 with the BEP name "BEP2" does not store the reservation data with an FEP reservation number of "500" in the reservation holding file.
[0195] Furthermore, the LB-BEP210 of the BEP200 with the BEP name "BEP3" determines from the request type correspondence file that reservation data with a request type of "1" should be calculated using "control formula A," and stores the reservation data with an FEP reservation number of "500" in the reservation holding file. On the other hand, since no calculation process is associated with reservation data with a request type of "2" in the request type correspondence file, the LB-BEP210 of the BEP200 with the BEP name "BEP3" does not store the reservation data with an FEP reservation number of "501" in the reservation holding file.
[0196] In this way, the same calculation process is represented by different request types, and the request type correspondence file on the LB-BEP 210 that executes the calculation process is set to execute the calculation process with different request types. This allows multiple BEPs 200 to execute the same calculation process with different "calculation requests."
[0197] In such parallel calculations of the BEP 200, the LB-FEP 110 sends a "calculation request" for the same calculation process multiple times, so the FEP 100 may receive "calculation results" from multiple BEPs 200. In this case, the FEP 100 may use the "calculation result" that it receives first, or may update the calculation result to the latest calculation result each time it receives a "calculation result."
[0198] When adopting the first received "calculation result," the LB-FEP 110 may transmit a "calculation end request" to all communicable LB-BEPs 210 to terminate the calculation process after receiving the "calculation result" from one LB-BEP 210. Figure 26 shows an example of processing when the LB-FEP 110 transmits a "calculation end request" to the LB-BEP 210.
[0199] 26, when the LB-FEP 110 receives a "calculation result" from one LB-BEP 210 (S131 (corresponding to S109 in FIG. 3)), it transmits a "calculation end request" to all LB-BEPs 210 with which it can communicate to end the calculation process (S133). At this time, the LB-FEP 110 transmits to the LB-BEP 210, together with the "calculation end request," the FEP reservation number and request type of the reservation data for which the "calculation reservation" for the same calculation process has not yet been received, among the reservation data for which the "calculation result" has been sent multiple times.
[0200] When the LB-BEP210 receives a "computation termination request," it checks the status of the computation process for the computer corresponding to the received FEP reservation number and request type (S231). The LB-BEP210 references the small computer status file, stops the computation process for the small computer corresponding to the FEP reservation number and request type, and changes the status of the small computer to "waiting" (S233). This allows the BEP200 to stop executing computation processes that are no longer required in the FEP100, and allows the small computer that was reserved for the computation process to be used for other computation processes. Note that the example of the small computer status file shown in Figure 6 does not record the request type, but the request type may be recorded.
[0201] On the other hand, if the FEP100 updates the calculation result to the latest calculation result each time it receives a "calculation result," there is no need to synchronize the FEP100 and the BEP200. When the LB-BEP210 receives a "calculation reservation" from the LB-FEP110, it executes the calculation process and sends the "calculation result" to the LB-FEP110 at the appropriate timing. The LB-FEP110 only needs to update the "calculation result" for the same calculation process to the latest calculation result each time it receives it.
[0202] [8-2. Calculation request specifying BEP to execute calculation process] In the parallel calculation by BEP200 shown in Figure 24, LB-FEP110 sent multiple calculation requests to all LB-BEP210 with which it can communicate, but LB-FEP110 may also specify the LB-BEP210 that will perform the calculation process and send the same calculation request.
[0203] That is, the LB-FEP 110 requesting a calculation process stores in advance request destination correspondence information that classifies the BEPs 200 into n groups for one calculation formula used in the calculation process. When the LB-FEP 110 requests n BEPs 200 to execute the same calculation process, it specifies the group of BEPs 200 requesting the calculation reservation and the calculation formula to be used for the calculation process, and transmits a calculation reservation with an FEP reservation number, which is a reservation identification number that differs for each group.
[0204] 27 shows a schematic diagram of the processing of the FEP 100 and the BEP 200 when the FEP 100 specifies a BEP to execute a calculation process and sends a calculation request for the same calculation process. For simplicity of explanation, Fig. 27 also shows a case where the FEP 100 causes four BEPs 200 to execute the same calculation process in parallel.
[0205] To realize such parallel computation by the BEP 200, the LB-FEP 110 has a request destination correspondence file as request destination correspondence information, which classifies the BEP 200 to be requested into n groups for each computation (calculation formula) to be requested. For example, if one computation is to be executed by two BEPs 200, the request destination correspondence file records the two groups into which the BEPs 200 are classified. The request destination correspondence file of the LB-FEP 110 shown in FIG. 27 records that a request for computation by "control formula A" is to be sent to two groups (n=2), namely, request destination 1 (BEP1, BEP3) and request destination 2 (BEP2, BEP4). The request destination correspondence file is set by the user as appropriate, taking into consideration the feasibility of each computation by the BEP 200.
[0206] When requesting a calculation process using "control formula A," the LB-FEP 110 transmits the same reservation data to the BEPs (BEP1, BEP3) 200 of the requested party 1, and transmits the same reservation data, but with a different FEP reservation number from the reservation data sent to the requested party 1, to the BEPs (BEP2, BEP4) 200 of the requested party 2. In the example of Figure 27, the LB-FEP 110 transmits reservation data with an FEP reservation number of "500" to the requested party 1, and transmits reservation data with an FEP reservation number of "501" to the requested party 2.
[0207] On the other hand, each LB-BEP210 has a calculation formula correspondence file that records whether or not each formula can be calculated. For example, the calculation formula correspondence file of the LB-BEP210 for the BEP200 with the BEP name "BEP1" records that control formula A can be calculated and control formula B cannot be calculated. When the LB-BEP210 receives reservation data from the LB-FEP110, it references the calculation formula correspondence file and determines whether or not the requested calculation process can be performed.
[0208] For example, LB-BEP210 of BEP200 with BEP name "BEP1" and LB-BEP210 of BEP200 with BEP name "BEP3" receive a message with FEP reservation number "500" and request type "Control Formula A" from LB-FEP110. LB-BEP210 with BEP name "BEP1" can calculate "Control Formula A" by referencing the calculation formula compatible file, so it stores the received reservation data in the reservation storage file. On the other hand, LB-BEP210 of BEP200 with BEP name "BEP3" cannot calculate "Control Formula A" by referencing the calculation formula compatible file, so it discards the received reservation data without storing it in the reservation storage file.
[0209] Similarly, LB-BEP210 of BEP200 with BEP name "BEP2" and LB-BEP210 of BEP200 with BEP name "BEP4" receive a message with FEP reservation number "501" and request type "Control Formula A" from LB-FEP110. LB-BEP210 of BEP200 with BEP name "BEP2" references the calculation formula correspondence file and finds that "Control Formula A" is calculable, so it stores the received reservation data in the reservation storage file. On the other hand, LB-BEP210 of BEP200 with BEP name "BEP4" references the calculation formula correspondence file and finds that "Control Formula A" is not calculable, so it discards the received reservation data without storing it in the reservation storage file.
[0210] As a result, the calculation process according to “control formula A” is executed by two BEPs (“BEP1”, “BEP2”) 200.
[0211] In this way, the LB-FEP 110 represents the same calculation process as multiple different reservation data and transmits each reservation data specifying the requested BEP 200. This allows multiple BEPs 200 to execute the same calculation process with different "calculation requests."
[0212] Even in such parallel calculations of the BEP 200, the FEP 100 may receive "calculation results" of the same calculation process from multiple BEPs 200. In this case, as described above, the FEP 100 may use the calculation result that it receives first, or may update the calculation result to the latest calculation result each time it receives a "calculation result."
[0213] The above describes a case where the BEP 200 performs parallel calculations of the same calculation process. Because the LB-FEP 110 sends calculation requests to multiple LB-BEPs 210 in parallel, even if a BEP 200 fails during calculation and the calculation results are lost, the other BEPs 200 can successfully complete the calculation process, allowing the FEP 100 to execute processing using the calculation results. By applying this type of calculation system 1 to a process control system that controls equipment that operates continuously, such as a chemical plant, the FEP 100 can reliably obtain the "calculation results" of the calculation process requested from the BEP 200. Even if one BEP 200 fails, operation is not affected. In this case, the calculation process includes calculation process for process control (calculation process for process control). The process may be a production process, a logistics process, or any other process. In this case, the calculation system 1 functions as a process control system.
[0214] [9. Variation 7 (Front-end and Back-end)] In FIG. 1, computing system 1 may further include multiple computers that function as both front-end computers and back-end computers. Hereinafter, a computer that functions as both a front-end computer and a back-end computer will also be referred to as an "FEP / BEP." The FEP / BEP includes an LB-FEP and an LB-BEP. The multiple FEPs / BEPs are connected to FEP100 and BEP200 via a network so that they can communicate with each other. This network may be network 5 or a network separate from network 5. The FEP / BEP functions as a back-end computer for FEP100 and as a front-end computer for BEP200. In this way, computing system 1 may have a configuration in which multiple FEPs are connected as a first tier, multiple FEPs / BEPs are connected as a second tier, and multiple BEPs are connected as a third tier so that each tier can communicate with each other via a network. Furthermore, multiple FEPs / BEPs may be connected to multiple other FEPs / BEPs via a network so that they can communicate with each other. In this case, one of the multiple FEPs / BEPs may function as a front-end computer, and the other multiple FEPs / BEPs may function as a back-end computer. In this way, multiple tiers may exist in multiple FEPs / BEPs (i.e., the number of tiers provided in the computing system 1 may be four or more).
[0215] [10. Hardware Configuration] The hardware configuration of a front-end computer (FEP) 100 and a back-end computer (BEP) 200 according to this embodiment will be described with reference to Fig. 28. Fig. 28 is a block diagram showing an example of the hardware configuration of an information processing device 900 that functions as the FEP 100 or BEP 200 according to this embodiment.
[0216] The information processing device 900 includes one or more hardware processors such as a CPU (Central Processing Unit) 901, and one or more memories such as a RAM (Random Access Memory) 905 and a ROM (Read Only Memory) 903. The information processing device 900 executes various operations by executing one or more programs stored in the memories by the one or more hardware processors. The information processing device 900 also includes a bus 907, an input I / F 909, an output I / F 911, a storage device 913, a drive 915, a connection port 917, and a communication device 919.
[0217] For example, the CPU 901 functions as an arithmetic processing device and a control device. The CPU 901 controls all or part of the operations within the information processing device 900 in accordance with various programs recorded in the ROM 903, the RAM 905, the storage device 913, or the removable recording medium 925. The ROM 903 stores programs used by the CPU 901, arithmetic parameters, etc. The RAM 905 temporarily stores programs used by the CPU 901, or parameters that change as appropriate during program execution. These are interconnected by a bus 907 constituted by an internal bus such as a CPU bus. The bus 907 is connected to an external bus such as a PCI (Peripheral Component Interconnect / Interface) bus or PCI Express (registered trademark) via a bridge.
[0218] The arithmetic processing unit and the control unit may be realized by a programmable logic controller (PLC) other than the CPU 901, or may be realized by dedicated hardware such as an application specific integrated circuit (ASIC).
[0219] The input I / F 909 is an interface that accepts input from an input device 921, which is an operating means operated by a user, such as a mouse, keyboard, touch panel, button, switch, or lever. The input I / F 909 is configured, for example, as an input control circuit that generates an input signal based on information input by the user using the input device 921 and outputs the signal to the CPU 901. The input device 921 may be, for example, a remote control device that uses infrared or other radio waves, or an external device 927 such as a PDA that supports operation of the information processing device 900. A user of the information processing device 900 can operate the input device 921 to input various data to the information processing device 900 and instruct the information processing device 900 to perform processing operations.
[0220] The output I / F 911 is an interface that outputs input information to an output device 923 that can notify the user visually or audibly. The output device 923 may be, for example, a display device such as a CRT display device, a liquid crystal display device, a plasma display device, an EL display device, or a lamp. Alternatively, the output device 923 may be an audio output device such as a speaker or headphones, a printer, a mobile communication terminal, or a facsimile machine. The output I / F 911 instructs the output device 923 to output, for example, processing results obtained from various processes executed by the information processing device 900. Specifically, the output I / F 911 instructs the display device to display the processing results of the information processing device 900 as text or images. The output I / F 911 also instructs the audio output device to convert audio signals, such as audio data instructed to be played, into analog signals and output them.
[0221] The storage device 913 is one of the storage units of the information processing device 900 and is a device for storing data. The storage device 913 is configured, for example, by a magnetic storage device such as a hard disk drive (HDD), a semiconductor storage device such as a solid state drive (SSD), an optical storage device, a magneto-optical storage device, etc. The storage device 913 stores programs executed by the CPU 901, various data generated by the execution of the programs, various data acquired from the outside, etc.
[0222] The drive 915 is a reader / writer for a recording medium, and is built into or externally attached to the information processing device 900. The drive 915 reads information recorded on the attached removable recording medium 925 and outputs it to the RAM 905. The drive 915 can also write information to the attached removable recording medium 925. The removable recording medium 925 is, for example, a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory. Specifically, the removable recording medium 925 may be a CD medium, a DVD medium, a Blu-ray (registered trademark) medium, a CompactFlash (registered trademark) (CF), a flash memory, an SD memory card (Secure Digital memory card), or the like. The removable recording medium 925 may also be, for example, an IC card (Integrated Circuit card) equipped with a contactless IC chip, an electronic device, or the like.
[0223] The connection port 917 is a port for directly connecting a device to the information processing device 900. The connection port 917 is, for example, a Universal Serial Bus (USB) port, an external Serial Advanced Technology Attachment (eSATA), or a Serial Attached Small Computer System Interface (SAS) port. The information processing device 900 can directly acquire various data from an external device 927 connected to the connection port 917 or provide various data to the external device 927. For example, an alarm notification device such as a rotating light for notifying alarm information may be connected via the connection port 917. Furthermore, a network attached storage (NAS) may be connected as the external device 927 and used as a storage device.
[0224] The communication device 919 is, for example, a communication interface configured with a communication device or the like for connecting to a communication network 929. The communication device 919 is, for example, a communication card for a wired or wireless LAN (Local Area Network), Bluetooth (registered trademark), or WUSB (Wireless USB). The communication device 919 may also be a router for optical communication, a router for ADSL (Asymmetric Digital Subscriber Line), or a modem for various types of communication. The communication device 919 can transmit and receive signals, for example, between the Internet and other communication devices in accordance with a predetermined protocol such as TCP / IP. For example, a computer for operating the information processing device 900 can be connected via the communication device 919. The communication network 929 connected to the communication device 919 is configured with a network connected by wire or wirelessly. For example, the communication network 929 is the Internet, a home LAN, infrared communication, radio wave communication, satellite communication, or the like.
[0225] The above shows an example of the hardware configuration of the information processing device 900. Each of the above components may be configured using general-purpose components, or may be configured using hardware specialized for the function of each component. The hardware configuration of the information processing device 900 can be changed as appropriate depending on the technical level at the time of implementing the present invention.
[0226] (Second embodiment) Next, a second embodiment of the present invention will be described. In the first embodiment, communication between a front-end computer (FEP) 100 and a back-end computer (BEP) 200 is performed via a single communication path formed by a network 5. Therefore, for example, if a communication failure occurs in the communication path, the transmission and reception of the "computation reservation," "response," "computation request," "acceptance response," "computation reservation cancellation," and "computation result" described in the first embodiment may not be performed properly. In this case, at least some of the computation process requests and executions may not be performed properly. This may result in, for example, the FEP 100 being unable to control the equipment 3 in real time. Therefore, in this embodiment, in order to more reliably request and execute computation processes, communication between multiple FEPs 100 and multiple BEPs 200 is performed in parallel via multiple communication paths. As such, this embodiment is different from the first embodiment in that it adds configurations and processes for more reliably requesting and executing computation processes. Therefore, in the description of this embodiment, the same parts as those in the first embodiment are denoted by the same reference numerals as those in FIGS. 1 to 28, and detailed description thereof will be omitted.
[0227] Fig. 29 is an explanatory diagram showing an example of the configuration of a computing system 2 according to this embodiment. As shown in Fig. 29, the computing system 2 according to this embodiment is a system in which a plurality of FEPs 100 and a plurality of BEPs 200 are connected via networks 6a to 6b.
[0228] As described above, in this embodiment, communication between the multiple FEPs 100 and the multiple BEPs 200 is performed via multiple communication paths. The multiple communication paths are communication paths that allow each of the FEPs 100 and the BEPs 200 to transmit the same information in parallel. FIG. 29 illustrates an example in which the multiple communication paths are configured from networks 6a to 6b. The number k of the networks 6a to 6b is not limited to 2 or more, and may be 3 or more (k is an integer of 2 or more). The "1...k" above the backend computer 200 in FIG. 29 indicates the number of networks 6a to 6b. The networks 6a to 6b may be wired networks or wireless networks. The wireless communication network may be a satellite communication network. For example, multiple communication paths for wireless communication may be determined based on the positions of devices (e.g., routers, wireless stations (base stations, switching stations, etc.), and satellites) that transmit information when FEP100 and BEP200 communicate wirelessly, and the order in which the information is transmitted in each device (the order in which the information passes through each device). For example, multiple communication paths in which at least one of the devices that transmits information is different may be determined as a communication path that is different from the other communication paths. Furthermore, for example, multiple communication paths in which the devices that transmit information are the same but the order in which the information is transmitted in each device is different may be determined as a communication path that is different from the other communication paths.
[0229] The networks 6a to 6b may be, for example, a wide area network (WAN) or a local area network (LAN). The networks 6a to 6b may be constructed using dedicated communication lines for communication between multiple FEPs 100 and multiple BEPs 200, or may be constructed using an IP Virtual Private Network (IP-VPN) or an Internet VPN. The networks 6a to 6b may be constructed by the same telecommunications carrier or by different telecommunications carriers. The multiple BEPs 200 may be cloud servers. The transmission method and communication standards of the networks 6a to 6b are not limited. For example, information transmission in each of the networks 6a to 6b may be serial transmission or parallel transmission. For example, multiple communication paths may be configured by performing parallel transmission in a single network.
[0230] Furthermore, in this embodiment, when information transmitted and received between the FEP 100 and the BEP 200 is transmitted over network 6a, the information transmitted to network 6a is also transmitted to network 6b. Similarly, when information transmitted and received between the FEP 100 and the BEP 200 is transmitted over network 6b, the information transmitted to network 6b is also transmitted to network 6a. By doing so, in this embodiment, even if a communication failure occurs in at least one of the networks 6a to 6b used for communication between the multiple FEPs 100 and the multiple BEPs 200, as long as there is at least one network where communication is not impaired, communication between the multiple FEPs 100 and the multiple BEPs 200 can continue.
[0231] However, it is sufficient that at least some of the multiple communication paths between the multiple FEPs 100 and the multiple BEPs 200 include a path that is different from the other communication paths. This is because, compared to when there is only one communication path between the multiple FEPs 100 and the multiple BEPs 200, the possibility of communication between the multiple FEPs 100 and the multiple BEPs 200 being interrupted when a communication failure occurs in the communication path can be reduced. For example, even if some of the multiple networks 6a-6b are shared, if a communication failure occurs in a portion other than the shared portion, communication between the multiple FEPs 100 and the multiple BEPs 200 may not be interrupted. In this way, it is sufficient that at least some of the communication paths include a path that is different from the other communication paths. However, it is preferable that the multiple networks 6a-6b do not have a shared portion to more reliably reduce the possibility of communication between the multiple FEPs 100 and the multiple BEPs 200 being interrupted.
[0232] 29, the front-end computer 100 and the back-end computer 200 constituting the computing system 2 are equipped with multiple communication path control middleware 120 and 220 in addition to the load balancers (LB-FEP, LB-BEP) 110 and 210 described in the first embodiment, respectively. The multiple communication path control middleware 120 and 220 are middleware for controlling the transmission and reception of information using multiple communication paths. Note that, hereinafter, the multiple communication path control middleware of the front-end computer will also be referred to as "CM-FEP," and the multiple communication path control middleware of the back-end computer will also be referred to as "CM-BEP."
[0233] When sending information to the BEP 200, the CM-FEP 120 sends the information in parallel to the multiple networks 6a to 6b. In this embodiment shown in FIG. 29, the CM-FEP 120 sends each of the "calculation reservation," "calculation request," and "calculation reservation cancellation" shown in FIG. 3 in parallel to the multiple networks 6a to 6b. In this embodiment, the LB-FEP 110 sends each of the "calculation reservation," "calculation request," and "calculation reservation cancellation" to the CM-FEP 120 instead of the LB-BEP 210, and the CM-FEP 120 sends each of the "calculation reservation," "calculation request," and "calculation reservation cancellation" in parallel to the CM-BEP 220 instead of the LB-BEP 210 via the multiple networks 6a to 6b. In this case, the CM-FEP 120 sends the same "calculation reservation" to the CM-BEP 220 via the multiple networks 6a to 6b. Similarly, the CM-FEP 120 transmits the same "calculation request" and "calculation reservation cancellation" to the CM-BEP 220 via the multiple networks 6a to 6b. The CM-BEP 220 receives the "calculation reservation," "calculation request," and "calculation reservation cancellation" transmitted in parallel to the multiple networks 6a to 6b in this way.
[0234] When transmitting information to the FEP 100, the CM-BEP 220 transmits the information in parallel to the multiple networks 6a to 6b. In this embodiment shown in FIG. 29, the CM-BEP 220 transmits the "response," "acknowledgment," and "calculation result" shown in FIG. 3 in parallel to the multiple networks 6a to 6b. In this embodiment, the LB-BEP 210 transmits the "response," "acknowledgment," and "calculation result" to the CM-BEP 220 instead of the LB-FEP 110, and the CM-BEP 220 transmits the "response," "acknowledgment," and "calculation result" in parallel to the CM-FEP 120 instead of the LB-FEP 110 via the multiple networks 6a to 6b. In this case, the CM-BEP 220 transmits the "response" with the same content to the CM-FEP 120 via the multiple networks 6a to 6b. Similarly, the CM-BEP 220 transmits the "acknowledgment" and "calculation result" having the same content to the CM-FEP 120 via the multiple networks 6a to 6b. The CM-FEP 120 receives the "acknowledgment," "acknowledgment," and "calculation result" transmitted in parallel to the multiple networks 6a to 6b in this way.
[0235] In the following, when referring collectively to the "calculation reservation," "calculation request," and "calculation reservation cancellation" sent from FEP100 (CM-FEP120) to BEP200 via the multiple networks 6a-6b, these will also be referred to as "messages" or "MSG." Similarly, when referring collectively to the "response," "acknowledgment," and "calculation result" sent from BEP200 (CM-BEP220) to FEP100 via the multiple networks 6a-6b, these will also be referred to as "messages" or "MSG."
[0236] In this embodiment, the FEP 100 and the BEP 200 may receive multiple messages with the same content via the multiple networks 6a to 6b. In this case, the FEP 100 (CM-FEP 120) uses any one of the information (messages) transmitted in parallel from the BEP 200 (CM-BEP 220) to the multiple networks 6a to 6b and received. Similarly, the BEP 200 (CM-BEP 220) uses any one of the information (messages) transmitted in parallel from the FEP 100 (CM-FEP 120) to the multiple networks 6a to 6b and received.
[0237] In this embodiment, CM-FEP120 and CM-BEP220 adopt the first received information among the information (messages) sent in parallel from CM-BEP220 and CM-FEP120 to multiple networks 6a to 6b and received.
[0238] Furthermore, in this embodiment, the CM-FEP 120 and the CM-BEP 220 each assign the same identification information to information (multiple messages with the same content) that is transmitted in parallel to the multiple networks 6a to 6b. The identification information is used by the message destination to determine whether the message is a message that has already been received. Thus, in this embodiment, the CM-FEP 120 and the CM-BEP 220 determine whether the received information (message) is information that has already been received via another network based on the identification information assigned to the message. In this case, when the CM-FEP 120 and the CM-BEP 220 receive new information (message) to which the same identification information as the identification information assigned to information (message) that has already been received is assigned, the CM-FEP 120 and the CM-BEP 220 can determine that the newly received information is information that has already been received via another network. Furthermore, in this embodiment, the CM-FEP 120 and the CM-BEP 220 each discard information that they did not adopt.
[0239] Note that the CM-FEP 120 and the CM-BEP 220 may not necessarily adopt the first piece of information (messages) received from the CM-BEP 220 and the CM-FEP 120 after being transmitted in parallel to the multiple networks 6a-6b. For example, the CM-FEP 120 and the CM-BEP 220 may confirm that the pieces of information (messages) received from the CM-BEP 220 and the CM-FEP 120 after being transmitted in parallel to the multiple networks 6a-6b have the same content, and may then adopt any one of the pieces of information. For example, if the first through q-th pieces of information received from the CM-BEP 220 and the CM-FEP 120 after being transmitted in parallel to the multiple networks 6a-6b have the same content, the CM-FEP 120 and the CM-BEP 220 may adopt the q-th piece of information received. Here, q is an integer between 2 and k (the number of networks 6a-6b) inclusive. In this way, for example, it is possible to check whether or not information has been tampered with in the networks 6a to 6b.
[0240] Furthermore, the CM-FEP 120 and the CM-BEP 220 may not assign the same identification information to information (multiple messages with the same content) that is transmitted in parallel to the multiple networks 6a-6b. For example, the CM-FEP 120 and the CM-BEP 220 may determine that information (messages) received within a predetermined time period is information that has been transmitted in parallel from the CM-BEP 220 and the CM-FEP 120 to the multiple networks 6a-6b, and may determine that information received second or later within the predetermined time period is information that has already been received via another network. Hereinafter, messages with identification information that are transmitted in parallel from the CM-FEP 120 to the multiple networks 6a-6b are also referred to as "FEP-side transmission information." Furthermore, messages with identification information that are transmitted in parallel from the CM-BEP 220 to the multiple networks 6a-6b are also referred to as "BEP-side transmission information."
[0241] Furthermore, the CM-FEP 120 and CM-BEP 220 may store the information that was not adopted instead of discarding it.
[0242] The processing for realizing the load balancing function in the computing system 2 according to this embodiment will be described in detail below, focusing on the differences from the first embodiment. Here, the differences from FIG. 3 will be described, but the various modifications described in the first embodiment can also be adopted in this embodiment.
[0243] [11. Information sent by FEP and BEP] 30 and 31, the FEP-side transmission information and BEP-side transmission information transmitted in parallel from the CM-FEP 120 and CM-BEP 220 to the multiple networks 6a to 6b in the computing system 2 according to this embodiment will be described. Fig. 30 is an explanatory diagram conceptually showing an example of FEP-side transmission information transmitted in parallel from the CM-FEP 120 to the multiple networks 6a to 6b. Fig. 31 is an explanatory diagram conceptually showing an example of BEP-side transmission information transmitted in parallel from the CM-BEP 220 to the multiple networks 6a to 6b.
[0244] First, the FEP side transmission information will be explained. 30, multiple FEP side transmission information 3000a-3000b are information that are transmitted in parallel to multiple networks 6a-6b and have the same content. The multiple FEP side transmission information 3000a, 3000b include MSGs 3010a, 3010b and FEP side status IDs 3020a, 3020b, respectively.
[0245] MSGs 3010a to 3010b include the sender FEP name and the MSG type. The MSG type is information indicating the type of message. In the example shown in Fig. 3, the MSG type is information indicating "calculation reservation," "calculation request," or "calculation reservation cancellation" described in the first embodiment.
[0246] The source FEP name is the name of the FEP 100 of the CM-FEP 120 that sends the MSGs 3010a to 3010b, and is a name unique to each FEP 100. As explained in the first embodiment, the "calculation reservation" MSGs 3010a to 3010b include reservation data. The FEP name included in the reservation data corresponds to the source FEP name. The FEP name included in the "calculation request" and "calculation reservation cancellation" corresponds to the source FEP name.
[0247] As explained in the first embodiment, "calculation reservation" and "calculation reservation cancellation" are sent to all BEPs 200 (CM-BEP220) that can communicate with the FEP 100 (CM-FEP120). In the example shown in Fig. 29, the number of all BEPs 200 (CM-BEP220) that can communicate with the FEP 100 (CM-FEP120) is 2. Furthermore, the number of multiple networks 6a to 6b is k.
[0248] Therefore, the number of FEP-side transmission information 3000a-3000b transmitted at one time as the FEP-side transmission information 3000a-3000b containing information indicating "calculation reservation" as the MSG type is 2×k. Similarly, the number of FEP-side transmission information 3000a-3000b transmitted at one time as the FEP-side transmission information 3000a-3000b containing information indicating "calculation reservation cancellation" as the MSG type is 2×k. Note that transmitting at one time is not limited to transmitting at the same time. For example, the FEP-side transmission information 3000a-3000b that needs to be transmitted at one time may be transmitted as a series of information. Specifically, for example, k pieces of FEP-side transmission information 3000a-3000b may be transmitted at the same time to one BEP 200, and this may be repeated for each of three BEPs 200. Alternatively, 3×k pieces of FEP-side transmission information 3000a-3000b may be transmitted one by one in succession.
[0249] On the other hand, the "calculation request" is sent to the BEP 200 (CM-BEP 220) that is the sender of the "response" (for example, the sender of the "response" that was received earliest). Therefore, the number of multiple FEP side transmission information 3000a-3000b that are sent at once as multiple FEP side transmission information 3000a-3000b that include information indicating the "calculation request" as a MSG type is k. As mentioned above, sending at once is not limited to sending at the same time.
[0250] The FEP-side status IDs 3020a-3020b are information assigned to the MSGs 3010a-3010b, and are an example of the identification information assigned to the messages described above. The FEP-side status IDs 3020a-3020b are used by the CM-BEP 220, which is the destination of the FEP-side transmission information 3000a-3000b, to determine whether the received information (MSGs 3010a-3010b) has already been received via another network, as information that has been transmitted in parallel from the CM-FEP 120 to multiple networks 6a-6b. The FEP-side status IDs 3020a-3020b will be described later.
[0251] Next, the BEP side transmission information will be described. 31, multiple BEP side transmission information 3100a-3100b are information that are transmitted in parallel to multiple networks 6a-6b, and are information with the same content. The multiple BEP side transmission information 3100a, 3100b include MSGs 3110a, 3110b and BEP side status IDs 3120a, 3120b, respectively.
[0252] MSG 3110a-3110b includes a source BEP name and a MSG type. The MSG type is information indicating the type of message. In the example shown in Fig. 3, the MSG type is information indicating "response," "acknowledgment," or "calculation result" described in the first embodiment.
[0253] The source BEP name is the name of the BEP 200 of the CM-BEP 220 that sends the MSGs 3110a to 3110b, and is a name unique to each BEP 200.
[0254] As explained in the first embodiment, the "response" is returned to the FEP 100 (CM-FEP 120) that sent the "calculation reservation." That is, the "response" is sent to the FEP 100 of the "sender FEP name" included in the MSGs 3010a to 3010b together with information indicating "calculation reservation" as the MSG type in the FEP-side transmission information 3000a to 3000b. Furthermore, the "acceptance response" and "calculation results" are returned to the FEP 100 (CM-FEP 120) that sent the "calculation request." That is, the "acceptance response" and "calculation results" are each sent to the FEP 100 of the "sender FEP name" included in the MSGs 3010a to 3010b together with information indicating "calculation request" as the MSG type in the FEP-side transmission information 3000a to 3000b. In the example shown in FIG. 29, the number of the networks 6a to 6b is k (as described above, "1...k" added above the backend computer 200 in FIG. 29 indicates the number of networks 6a to 6b).
[0255] Therefore, the number of BEP side transmission information 3100a-3100b transmitted at one time as BEP side transmission information 3100a-3100b containing information indicating "response," "acknowledgment," and "calculation result" as MSG types is k. Note that, as mentioned above, transmitting at one time is not limited to transmitting at the same time.
[0256] The BEP-side status IDs 3120a-3120b are information assigned to the MSGs 3110a-3110b, and are an example of the identification information assigned to the messages described above. The BEP-side status IDs 3120a-3120b are used by the CM-FEP 120, which is the destination of the BEP-side transmission information 3100a-3100b, to determine whether the received information (MSGs 3110a-3110b) has already been received via another network, as information that has been transmitted in parallel from the CM-BEP 220 to multiple networks 6a-6b and received.
[0257] [12. FEP status ID, BEP status ID] The FEP-side status ID and the BEP-side status ID will be described with reference to Fig. 32 to Fig. 35. Fig. 32 is an explanatory diagram showing an example of a host (FEP) status management table 3200. Fig. 33 is an explanatory diagram showing an example of a remote device (FEP) status management table 3300. Fig. 34 is an explanatory diagram showing an example of a host (BEP) status management table 3400. Fig. 35 is an explanatory diagram showing an example of a remote device (BEP) status management table 3500.
[0258] First, the FEP side status ID will be explained. One FEP status management table 3200 shown in FIGS. 32(a) to 32(c) is prepared for each FEP 100 included in the computing system 2 according to this embodiment. In the example shown in FIG. 29, the computing system 2 has three FEPs 100. FIG. 32 shows the FEP status management table 3200 managed by these three FEPs 100. FIG. 32(a) shows the FEP status management table 3200 managed by the FEP 100 with the FEP name "FEP1." Similarly, FIGS. 32(b) and 32(c) show the FEP status management table 3200 managed by the FEPs 100 with the FEP names "FEP2" and "FEP3," respectively. The FEP status management table 3200 may be stored in a recording medium inside the FEP 100 or in a recording medium outside the FEP 100.
[0259] The local device (FEP) status management table 3200 stores FEP names, MSG types, and FEP side status IDs in a mutually associated manner. The contents of the FEP names and MSG types are fixed. On the other hand, the contents of the FEP side status IDs are variable. The FEP side status ID column stores FEP side status IDs 3020a to 3020b that the CM-FEP 120 assigns to MSGs 3010a to 3010b that are transmitted in parallel to the networks 6a to 6b.
[0260] In the example shown in Figure 3, for one calculation process, FEP side transmission information 3000a-3000b is sent in parallel from FEP100 (CM-FEP120) to BEP200 (CM-BEP220) in the following order: FEP side transmission information 3000a-3000b containing information indicating "calculation reservation" as the MSG type; FEP side transmission information 3000a-3000b containing information indicating "calculation request" as the MSG type; FEP side transmission information 3000a-3000b containing information indicating "calculation reservation cancellation" as the MSG type (see S101, S105, and S107 in Figure 3).
[0261] Therefore, in this embodiment, when FEP-side transmission information 3000a-3000b including information indicating "calculation reservation" as a MSG type is transmitted in parallel to multiple networks 6a-6b, the CM-FEP 120 collectively updates the FEP-side status IDs 3020a-3020b. In the example shown in Figures 32(a)-32(c), the FEP-side status IDs 3020a-3020b for all MSG types transmitted for one calculation process ("calculation reservation," "calculation request," and "calculation reservation cancellation") are collectively updated to the same value. Note that the FEP-side status IDs 3020a-3020b are updated, for example, by incrementing the value of the FEP-side status ID if it is not the maximum value, or by changing it to the minimum value (wrapping around) if it is the maximum value.
[0262] In Figure 32(a), for example, when the CM-FEP120 of FEP100 whose FEP name is "FEP1" sends FEP side transmission information 3000a to 3000b including information indicating "calculation reservation" as the MSG type in parallel to the networks 6a to 6b (see S101 in Figure 3), it updates the FEP side status ID from "00001" to "00002" and includes the updated FEP side status ID 3020a to 3020b (="00002") in the FEP side transmission information 3000a to 3000b and sends it in parallel to the networks 6a to 6b. In addition, when the CM-FEP120 of the FEP100 whose FEP name is "FEP1" transmits FEP side transmission information 3000a to 3000b containing "calculation request" and "calculation reservation cancellation" as MSG types for the calculation process reserved by the "calculation reservation" in parallel to the networks 6a to 6b (see S105 and S107 in Figure 3), it also includes "00002" as the FEP side status ID 3020a to 3020b in the FEP side transmission information 3000a to 3000b.
[0263] In Fig. 32, "null" indicates that the corresponding FEP-side status ID has not been transmitted. In Fig. 32(c), for example, the CM-FEP 120 of the FEP 100 whose FEP name is "FEP3" updates the FEP-side status ID from "null" to "00001" when transmitting FEP-side transmission information 3000a-3000b including information indicating "calculation reservation" as the MSG type in parallel to the networks 6a-6b (see S101 in Fig. 3).
[0264] The remote device (FEP) status management table 3300 shown in Fig. 33 is managed individually in each BEP 200 included in the computing system 2 according to this embodiment. In the example shown in Fig. 29, one remote device (FEP) status management table 3300 is prepared for each BEP 200 (the remote device (FEP) status management table 3300 shown in Fig. 33 is prepared for each of the two BEPs 200). Each BEP 200 refers to and updates the remote device (FEP) status management table 3300 prepared for itself. The remote device (FEP) status management table 3300 may be stored in a recording medium inside the BEP 200, or in a recording medium external to the BEP 200.
[0265] The remote device (FEP) status management table 3300 stores the source FEP name, message type, and FEP-side status ID in a mutually associated manner. The contents of the source FEP name and message type are fixed. On the other hand, the contents of the FEP-side status ID are variable. When the CM-BEP 220 receives any one of the FEP-side transmission information 3000a to 3000b, it references the source FEP name, message type, and FEP-side status ID included in the FEP-side transmission information. The CM-BEP 220 determines whether the same combination of source FEP name, message type, and FEP-side status ID as the referenced combination is stored in the remote device (FEP) status management table 3300.
[0266] If the same combination of source FEP name, message type, and FEP side status ID as the referenced combination is stored in the other device (FEP) status management table 3300, the CM-BEP 220 determines that the received FEP side transmission information has already been received via another network. In this case, the CM-BEP 220 discards the received FEP side transmission information.
[0267] In Figure 33, for example, when CM-BEP220 receives FEP-side transmission information in which the sending FEP name is "FEP1", the MSG type is "calculation reservation", and the FEP-side status ID is "00001", it determines that the FEP-side transmission information is information that has already been received via another network, and discards the FEP-side transmission information.
[0268] Furthermore, if the same combination of source FEP name, MSG type, and FEP side status ID as the referenced combination of source FEP name, MSG type, and FEP side status ID is not stored in the other device (FEP) status management table 3300, CM-BEP220 updates the value of the FEP side status ID stored in association with the source FEP name and MSG type in the other device (FEP) status management table 3300 to the value of the referenced FEP side status ID.
[0269] In Figure 33, for example, when CM-BEP220 receives FEP side transmission information in which the source FEP name is "FEP1", the MSG type is "calculation reservation", and the FEP side status ID is "00002", it updates the value of the FEP side status ID (="00001") stored in association with the source FEP name and the MSG type in the destination device (FEP) status management table 3300 to "00002". In FIG. 33, "null" indicates that the corresponding FEP side status ID has not been received.
[0270] The values of the FEP-side status IDs 3020a-3020b do not necessarily have to be determined as shown in FIG. 32, as long as the multiple FEP-side transmission information 3000a-3000b transmitted in parallel to the multiple networks 6a-6b are FEP-side transmission information 3000a-3000b with the same content and are assigned so as to be distinguishable from the other FEP-side transmission information 3000a-3000b. For example, the CM-FEP 120 may update the FEP-side status IDs 3020a-3020b each time multiple FEP-side transmission information 3000a-3000b is transmitted in parallel to the multiple networks 6a-6b. In this case, a different FEP-side status ID 3020a-3020b is included in the FEP-side transmission information 3000a-3000b for each MSG type ("computation reservation," "computation request," and "computation reservation cancellation") transmitted for one computation process.
[0271] Next, the BEP side status ID will be explained. One host (BEP) status management table 3400 shown in FIGS. 34(a) and 34(b) is prepared for each BEP 200 included in the computing system 2 according to this embodiment. In the example shown in FIG. 29, the computing system 2 has two BEPs 200. FIG. 34 shows the host (BEP) status management table 3400 managed by these two BEPs 200. FIG. 34(a) shows the host (BEP) status management table 3400 managed by the BEP 200 with the BEP name "BEP1." Similarly, FIG. 34(b) shows the host (BEP) status management table 3400 managed by the BEP 200 with the BEP name "BEP2." The host (BEP) status management table 3400 may be stored in a recording medium inside the BEP 200 or in a recording medium external to the BEP 200.
[0272] The host (BEP) status management table 3400 stores the BEP name, MSG type, and BEP side status ID in a mutually associated manner. The contents of the BEP name and MSG type are fixed. On the other hand, the contents of the BEP side status ID are variable. The BEP side status ID column stores BEP side status IDs 3120a to 3120b that the CM-BEP 220 assigns to the MSGs 3110a to 3110b that are transmitted in parallel to the networks 6a to 6b.
[0273] In the example shown in Figure 3, for one calculation process, BEP side transmission information 3100a to 3100b are sent in parallel from BEP200 (CM-BEP220) to FEP100 (CM-FEP120) in the following order: BEP side transmission information 3100a to 3100b containing information indicating "response" as the MSG type; BEP side transmission information 3100a to 3100b containing information indicating "acknowledgment" as the MSG type; BEP side transmission information 3100a to 3100b containing information indicating "calculation result" as the MSG type (see S203, S205, and S207 in Figure 3).
[0274] Therefore, in this embodiment, when BEP-side transmission information 3100a-3100b, which includes information indicating "response" as a MSG type, is transmitted in parallel to multiple networks 6a-6b, the CM-BEP 220 collectively updates the BEP-side status IDs 3120a-3120b. In the example shown in FIGS. 34(a)-34(b), the BEP-side status IDs 3120a-3120b for all MSG types ("response," "acknowledgment," and "calculation result") transmitted for one calculation process are collectively updated to the same value. Note that the BEP-side status IDs 3120a-3120b are updated, for example, in the same manner as the above-mentioned method for updating the FEP-side status IDs 3020a-3020b (they are incremented until they reach the maximum value, and when they reach the maximum value, they are changed to the minimum value (wrap around)).
[0275] In Figure 34(a), for example, when the CM-BEP220 of the BEP200 whose BEP name is "BEP1" transmits BEP side transmission information 3100a to 3100b containing information indicating "response" as the MSG type in parallel to the networks 6a to 6b (see S203 in Figure 3), it updates the BEP side status ID from "00001" to "00002" and includes the updated BEP side status ID 3120a to 3120b (="00002") in the BEP side transmission information 3100a to 3100b and transmits it in parallel to the networks 6a to 6b. In addition, when the CM-BEP220 of the BEP200 whose BEP name is "BEP1" transmits BEP side transmission information 3100a to 3100b in parallel to the networks 6a to 6b (see S205 and S207 in Figure 3), the CM-BEP220 also includes "00002" as the BEP side status ID 3120a to 3120b in the BEP side transmission information 3100a to 3100b, which includes as MSG types an "acknowledgment response" and a "calculation result" for the calculation process that the CM-FEP100 (to the CM-FEP120) has informed FEP100 that it can be executed based on the "response."
[0276] Note that "null" in Fig. 34 indicates that the corresponding BEP-side status ID has not been transmitted. In Fig. 34(b), for example, the CM-BEP 220 of the BEP 200 whose BEP name is "BEP2" updates the BEP-side status ID from "null" to "00001" when transmitting BEP-side transmission information 3100a-3100b including information indicating "response" as the MSG type in parallel to the networks 6a-6b (see S203 in Fig. 3).
[0277] However, the values of the BEP-side status IDs 3120a-3120b do not necessarily have to be determined as shown in FIG. 34, as long as the multiple BEP-side transmission information 3100a-3100b transmitted in parallel to the multiple networks 6a-6b are BEP-side transmission information 3100a-3100b with the same content and are assigned so as to be distinguishable from the other BEP-side transmission information 3100a-3100b. For example, the CM-BEP 220 may update the BEP-side status IDs 3120a-3120b each time multiple BEP-side transmission information 3100a-3100b is transmitted in parallel to the multiple networks 6a-6b. In this case, a different BEP-side status ID 3120a-3120b is included in the BEP-side transmission information 3100a-3100b for each MSG type ("response," "acknowledgment," and "calculation result") transmitted for one calculation process.
[0278] The remote device (BEP) status management table 3500 shown in Fig. 35 is managed individually in each FEP 100 included in the computing system 2 according to this embodiment. In the example shown in Fig. 29, one remote device (BEP) status management table 3500 is prepared for each FEP 100 (the remote device (BEP) status management table 3500 shown in Fig. 35 is prepared for each of the three FEPs 100). Each FEP 100 refers to and updates the remote device (BEP) status management table 3500 prepared for itself. The remote device (BEP) status management table 3500 may be stored in a recording medium inside the FEP 100 or in a recording medium external to the FEP 100.
[0279] The other device (BEP) status management table 3500 stores the source BEP name, message type, and BEP side status ID in a mutually associated manner. The contents of the source BEP name and message type are fixed. On the other hand, the contents of the BEP side status ID are variable. When the CM-FEP 120 receives any one of the BEP side transmission information 3100a to 3100b, it references the source BEP name, message type, and BEP side status ID included in the BEP side transmission information. The CM-FEP 120 determines whether the same combination of source BEP name, message type, and BEP side status ID as the referenced combination is stored in the other device (BEP) status management table 3500.
[0280] If the same combination of source BEP name, MSG type, and BEP side status ID as the referenced combination of source BEP name, MSG type, and BEP side status ID is stored in the other device (BEP) status management table 3500, the CM-FEP 120 determines that the received BEP side transmission information has already been received via another network. In this case, the CM-FEP 120 discards the received BEP side transmission information.
[0281] In Figure 35, for example, when CM-FEP120 receives BEP-side transmission information in which the source BEP name is "BEP1", the MSG type is "Response", and the BEP-side status ID is "00001", it determines that the BEP-side transmission information is information that has already been received via another network, and discards the BEP-side transmission information.
[0282] Furthermore, if the same combination of source BEP name, MSG type, and BEP side status ID as the referenced combination of source BEP name, MSG type, and BEP side status ID is not stored in the destination device (BEP) status management table 3500, CM-FEP120 updates the value of the BEP side status ID stored in association with the source BEP name and MSG type in the destination device (BEP) status management table 3500 to the value of the referenced BEP side status ID.
[0283] In FIG. 35, for example, when CM-FEP120 receives BEP side transmission information in which the source BEP name is "FEP1", the MSG type is "response", and the BEP side status ID is "00002", it updates the value of the BEP side status ID (="00001") stored in association with the source BEP name and the MSG type in the destination device (BEP) status management table 3500 to "00002". In FIG. 35, "null" indicates that the corresponding BEP side status ID has not been received.
[0284] [12-1. CM-FEP processing when sending MSG (information sent from the FEP side)] Next, the processing of the CM-FEP 120 when transmitting the FEP side transmission information 3000a-3000b will be described with reference to Fig. 36. Fig. 36 is a flowchart showing an example of the processing of the CM-FEP 120 when transmitting the FEP side transmission information 3000a-3000b. The flowchart in Fig. 36 is executed in each of steps S101, S105, and S107 in Fig. 3.
[0285] First, the CM-FEP 120 receives MSGs 3010a to 3010b from the LB-FEP 110 (S601). The MSGs 3010a to 3010b have the same content. In step S101, the MSGs 3010a to 3010b contain information indicating the MSG type "calculation reservation" and reservation data for the calculation process. The name of the sender FEP is included in the reservation data. In step S105, the MSGs 3010a to 3010b contain information indicating the MSG type "calculation request", the sender FEP name, and the FEP reservation number. In step S107, the MSGs 3010a to 3010b contain information indicating the MSG type "calculation reservation cancellation", the sender FEP name (the FEP name assigned to the "response"), and the FEP reservation number. The CM-FEP 120 may receive one of the MSGs 3010a to 3010b and create (duplicate) the MSGs 3010a to 3010b, the number k of which is transmitted over the networks 6a to 6b.
[0286] Next, the CM-FEP 120 determines whether the MSGs 3010a to 3010b received from the LB-FEP 110 contain information indicating "calculation reservation" as the MSG type (S602). If the MSGs 3010a to 3010b do not contain information indicating "calculation reservation" as the MSG type (S602: NO), the process of step S603 is not performed and the process of step S604, which will be described later, is performed. On the other hand, if the MSGs 3010a to 3010b contain information indicating "calculation reservation" as the MSG type (S602: YES), the CM-FEP 120 updates the value of the FEP-side status ID in the local (FEP) status management table 3200 prepared for the local device (S603).
[0287] Next, the CM-FEP 120 creates FEP side transmission information 3000a-3000b by assigning the updated FEP side status IDs 3020a-3020b to the MSGs 3010a-3010b received in step S601, and transmits the FEP side transmission information 3000a-3000b in parallel to the networks 6a-6b (S604). In steps S101 and S107, the CM-FEP 120 transmits the FEP side transmission information 3000a-3000b to all CM-BEPs 220 with which it can communicate via the networks 6a-6b. In step S105, CM-FEP120 sends FEP side transmission information 3000a to 3000b to CM-BEP220, the sender of the earliest received "response," containing information indicating the MSG type as "calculation request," the sender FEP name, and the FEP reservation number in MSG3010a to 3010b.
[0288] [12-2. CM-BEP processing when receiving MSG (information sent from the FEP)] Next, the processing of the CM-BEP 220 when receiving the FEP side transmission information 3000a-3000b will be described with reference to Fig. 37. Fig. 37 is a flowchart showing an example of the processing of the CM-BEP 220 when receiving the FEP side transmission information 3000a-3000b. The flowchart in Fig. 37 is executed in each of steps S201, S204, and S208 in Fig. 3.
[0289] First, the CM-BEP 220 receives one of the FEP side transmission information 3000a-3000b transmitted from the CM-FEP 120 via the networks 6a-6b (S701). In step S201, the CM-BEP 220 receives the FEP side transmission information including information indicating a "calculation reservation" as the MSG type. In step S204, the CM-BEP 220 receives the FEP side transmission information including information indicating a "calculation request" as the MSG type. In step S208, the CM-BEP 220 receives the FEP side transmission information including information indicating a "calculation reservation cancellation" as the MSG type.
[0290] Next, the CM-BEP 220 determines whether or not the same FEP side transmission information (MSG) as the FEP side transmission information (MSG) received in step S701 has already been received via another network (S702). Specifically, the CM-BEP 220 determines whether or not the same combination of source FEP name, MSG type, and FEP side status ID as the combination of source FEP name, MSG type, and FEP side status ID included in the FEP side transmission information received in step S701 is stored in the remote device (FEP) status management table 3300 prepared for its own device.
[0291] If the received FEP side transmission information (MSG) is the same as the FEP side transmission information (MSG) received in step S701 (S702: YES), the CM-BEP 220 discards the FEP side transmission information (MSG) received in step S701 (S703). In this case, the LB-BEP 210 does not perform any processing.
[0292] On the other hand, if the CM-FEP 220 has not received the same FEP-side transmission information (MSG) as the FEP-side transmission information (MSG) received in step S701 (S702: NO), the CM-FEP 220 updates the value of the FEP-side status ID in the remote device (FEP) status management table 3300 prepared for the CM-FEP 220 (S704). The FEP-side status ID column to be updated in the remote device (FEP) status management table 3300 is the column of the FEP-side status ID corresponding to the source FEP name and MSG type included in the FEP-side transmission information received in step S701. For example, if the current value of the FEP-side status ID is not the maximum value, the CM-FEP 120 increments the value of the FEP-side status ID. If the current value of the FEP-side status ID is the maximum value, the CM-FEP 120 changes the value of the FEP-side status ID to the minimum value. In this way, the value of the FEP-side status ID is wrapped around.
[0293] Next, the CM-BEP 220 transmits the MSG included in the FEP-side transmission information received in step S701 to the LB-BEP 210 (S705). Then, the LB-BEP 210 executes the processes described as steps S201, S204, and S208 in the first embodiment (S706). The process of step S201 described in the first embodiment involves the LB-BEP 210 receiving a "calculation reservation" (MSG) and storing the reservation data for the calculation process in the reservation holding file. The process of step S204 described in the first embodiment involves the LB-BEP 210 receiving a "calculation request." The process of step S208 described in the first embodiment involves the LB-BEP 210 receiving a "calculation reservation cancellation" (MSG) and deleting the reservation data from the reservation holding file.
[0294] In step S705, the CM-BEP 220 may transmit the FEP-side transmission information received in step S701 itself to the LB-BEP 210. In this case, in step S706, the LB-BEP 210 may extract MSG from the FEP-side transmission information.
[0295] [12-3. CM-BEP processing when sending MSG (information sent from the BEP side)] Next, the processing of the CM-BEP 220 when transmitting the BEP side transmission information 3100a to 3100b will be described with reference to Fig. 38. Fig. 38 is a flowchart showing an example of the processing of the CM-BEP 220 when transmitting the BEP side transmission information 3100a to 3100b. The flowchart in Fig. 36 is executed in each of steps S203, S205, and S207 in Fig. 3.
[0296] First, CM-BEP 220 receives MSGs 3110a to 3110b from LB-BEP 210 (S801). MSGs 3110a to 3110b have the same content. In step S203, MSGs 3110a to 3110b contain information indicating a "response" as the MSG type, the FEP name and FEP reservation number as key information, and the name of the source BEP. In step S205, MSGs 3110a to 3110b contain information indicating a "receipt response" as the MSG type, and the name of the source BEP. In step S207, MSGs 3110a to 3110b contain information indicating a "calculation result" as the MSG type, information indicating the content of the "calculation result," and the name of the source BEP. The CM-BEP 220 may receive one of the MSGs 3110a to 3110b and create (duplicate) the MSGs 3110a to 3110b, the number k of which is the number of the MSGs 3110a to 3110b for the networks 6a to 6b.
[0297] Next, the CM-BEP 220 determines whether the MSGs 3110a to 3110b received from the LB-BEP 210 contain information indicating "response" as the MSG type (S802). If the MSGs 3110a to 3110b do not contain information indicating "response" as the MSG type (S802: NO), the process of step S803 is not performed and the process of step S804, which will be described later, is performed. On the other hand, if the MSGs 3110a to 3110b contain information indicating "response" as the MSG type (S802: YES), the CM-BEP 220 updates the value of the BEP-side status ID in the host (BEP) status management table 3400 prepared for the host (S803).
[0298] Next, the CM-BEP 220 creates BEP side transmission information 3100a-3100b by assigning the updated BEP side status IDs 3120a-3120b to the MSGs 3110a-3110b received in step S801, and transmits the BEP side transmission information 3100a-3100b in parallel to the networks 6a-6b (S804). In all of the processes of steps S203, S205, and S207, the BEP side transmission information 3100a-3100b is transmitted to one CM-FEP 120, which is the CM-FEP 120 of the FEP 100 that requested each process.
[0299] [12-4. CM-FEP processing when receiving MSG (information sent from the BEP)] Next, the processing of the CM-FEP 120 when receiving the BEP side transmission information 3100a-3100b will be described with reference to Fig. 39. Fig. 39 is a flowchart showing an example of the processing of the CM-FEP 120 when receiving the BEP side transmission information 3100a-3100b. The flowchart in Fig. 39 is executed in each of steps S103, S107, and S109 in Fig. 3.
[0300] First, the CM-FEP 120 receives one of the BEP side transmission information 3100a-3100b transmitted from the CM-BEP 220 via the networks 6a-6b (S901). In step S103, the CM-FEP 120 receives the BEP side transmission information including information indicating "response" as the MSG type. In step S107, the CM-FEP 120 receives the BEP side transmission information including information indicating "receipt response" as the MSG type. In step S109, the CM-FEP 120 receives the BEP side transmission information including information indicating "calculation result" as the MSG type.
[0301] Next, the CM-FEP 120 determines whether or not the same BEP side transmission information (MSG) as the BEP side transmission information (MSG) received in step S901 has already been received via another network (S902). Specifically, the CM-FEP 120 determines whether or not the same combination of source BEP name, MSG type, and BEP side status ID as the combination of source BEP name, MSG type, and BEP side status ID included in the BEP side transmission information received in step S901 is stored in the other device (BEP) status management table 3500 prepared for its own device.
[0302] If the received BEP side transmission information (MSG) is the same as the BEP side transmission information (MSG) received in step S901 (S902: YES), the CM-FEP 120 discards the BEP side transmission information (MSG) received in step S901 (S903). In this case, the LB-FEP 110 does not perform any processing.
[0303] On the other hand, if the CM-FEP 120 has not received the same BEP-side transmission information (MSG) as the BEP-side transmission information (MSG) received in step S901 (S902: NO), the CM-FEP 120 updates the value of the FEP-side status ID in the other device (BEP) status management table 3500 prepared for the CM-FEP 120 (S904). The FEP-side status ID column to be updated in the other device (BEP) status management table 3500 is the column of the BEP-side status ID corresponding to the source BEP name and MSG type included in the BEP-side transmission information received in step S901. The BEP-side status ID is updated, for example, as shown in the description of the processing of S704 in section [12-2. CM-BEP Processing When Receiving MSG (FEP-Side Transmission Information)].
[0304] Next, the CM-FEP 120 transmits the MSG included in the BEP-side transmission information received in step S901 to the LB-FEP 110 (S905). Then, the LB-FEP 110 executes the processes described as steps S103, S107, and S109 in the first embodiment (S906). Note that the process of step S103 described in the first embodiment involves the LB-FEP 110 receiving a "response" (MSG). The process of step S107 described in the first embodiment involves the LB-FEP 110 receiving an "acknowledgment" and sending a "calculation reservation cancellation" (MSG), but the destination of the "calculation reservation cancellation" (MSG) in step S906 is the CM-BEP 220 (see S601 in FIG. 36). The process of step S109 described in the first embodiment involves the LB-FEP 110 receiving the "calculation reservation cancellation" and deleting the reservation data from the reservation holding file.
[0305] In step S905, the CM-FEP 120 may transmit the BEP-side transmission information received in step S901 itself to the LB-FEP 110. In this case, in step S906, the LB-FEP 110 may extract MSG from the BEP-side transmission information.
[0306] The above describes a case where information is transmitted and received in parallel between the FEP 100 and the BEP 200. The CM-FEP 120 and the CM-BEP 220 transmit the same message (MSG) to the networks 6a to 6b in parallel via multiple communication paths. The CM-FEP 120 and the CM-BEP 220 then select one of the messages (MSG) transmitted in parallel. Therefore, even if a communication failure occurs in one of the communication paths, the possibility of communication between the FEP 100 and the BEP 200 being interrupted can be reduced. By applying this computing system 2 to a process control system that controls equipment that operates continuously at all times, such as a chemical plant, the FEP 100 can more reliably obtain the "computation results" of the computational processing requested from the BEP 200. Therefore, even if a communication failure occurs in one of the communication paths, operation will not be affected.
[0307] Although the preferred embodiments of the present invention have been described in detail above with reference to the accompanying drawings, the present invention is not limited to these examples. It is clear that a person skilled in the art to which the present invention pertains can conceive of various modifications and alterations within the scope of the technical ideas set forth in the claims, and it is understood that these also naturally fall within the technical scope of the present invention.
[0308] The above-described embodiments of the present invention (e.g., each flowchart) can be realized by a computer executing a program. A computer-readable recording medium on which the program is recorded and a computer program product such as the program can also be applied as an embodiment of the present invention. Examples of recording media that can be used include flexible disks, hard disks, optical disks, magneto-optical disks, CD-ROMs, magnetic tapes, non-volatile memory cards, and ROMs.
[0309] The disclosure of the present invention is as follows, for example. [Disclosure 1] a plurality of front-end calculators; a plurality of back-end computers that execute the calculation processes requested by the front-end computers and transmit the calculation results obtained by the calculation processes to the front-end computers; are connected via a network, the front-end computer requests two or more of the plurality of back-end computers to execute the same computation process; A computing system in which each of the two or more back-end computers executes a computing process requested by the front-end computer when it has available computing capacity. [Disclosure 2] the front-end computers are devices for controlling equipment, and are provided corresponding to each of a plurality of pieces of equipment; The computing system according to Disclosure 1, wherein the back-end computer is a device having a higher computing power than the front-end computer. [Disclosure 3] the front-end computer transmits a computation reservation to the back-end computer prior to a computation processing request; When the back-end computer receives the computation reservation, it records the computation reservation information, determines whether or not it has computational capacity, and if so, sends a reservation acceptance response to the front-end computer; the front-end computer transmits a request to execute a computation process to at least one back-end computer that has transmitted the reservation acceptance response; when receiving the execution request for the computation process, the back-end computer transmits an acknowledgment to the front-end computer, then executes the computation process and transmits the computation result to the front-end computer; When the front-end computer receives the acknowledgment, it sends a reservation cancellation request to the back-end computer; 3. The computing system according to claim 1, wherein the back-end computer deletes the recorded information about the computing reservation when the reservation cancellation request is received. [Disclosure 4] the back-end computer has one or more processing units, The computing system according to Disclosure 3, wherein when the computing reservation is received from the front-end computing device, if there is a computing processing unit with available computing capacity, a reservation acceptance response is transmitted to the front-end computing device. [Disclosure 5] The back-end computer If the request to execute the calculation process or the request to cancel the reservation is not received within a predetermined time after the reservation acceptance response is sent to the front-end computer, Delete the recorded calculation reservation, The computing system according to claim 3 or 4, wherein the computing process is executed again from the process at the time when the computation reservation for the computation process was received. [Disclosure 6] The front-end computer If an acknowledgment is not received within a predetermined time from the backend computer to which the execution request for the computation process has been sent, or if a computation result is not received within a predetermined time after the acknowledgment is received from the backend computer, The computing system according to any one of Disclosures 3 to 5, wherein the computing reservation is resent to the back-end computer. [Disclosure 7] The back-end computer The computing system according to any one of Disclosures 3 to 6, wherein when two different computing reservations are received from the same front-end computer, the information of the earlier received computing reservation is overwritten with the information of the later received computing reservation, except for information that can identify the reservation order of the computing reservations. [Disclosure 8] The computing system according to any one of Disclosures 3 to 7, wherein when the front-end computer receives a request to send calculation data to be used in the computation process after receiving the acceptance response from the back-end computer, the front-end computer sends the calculation data to the back-end computer. [Disclosure 9] The back-end computers each store whether or not each type of computation process can be executed, The computing system described in any one of Disclosures 3 to 8, when receiving the computing reservation from the front-end computer, determines whether the computing process can be executed based on the type of the requested computing process, and records information about the computing reservation if the computing process can be executed. [Disclosure 10] The back-end computer receives the computation reservations from the different front-end computers, and when there is computational capacity available to execute each of the requested computation processes, The computing system according to any one of Disclosures 3 to 9, wherein a reservation acceptance response is transmitted to the front-end computer that has requested the computing reservation with the highest priority among the received computing reservations. [Disclosure 11] The back-end computers each store a calculation formula to be executed for each type of calculation process, A computing system described in any one of Disclosures 3 to 10, wherein a front-end computer requesting a computing process sends n computing reservations to the back-end computers, each specifying n different types associated with the same computing process, when the front-end computer requests the same computing process to be executed by n back-end computers. [Disclosure 12] The front-end computer that requires the calculation process is Request destination correspondence information in which back-end computers are classified into n groups for one calculation formula used in calculation processing is stored in advance, A computing system described in any one of Disclosures 3 to 11, in which, when the same computing process is to be executed on n backend computers, a group of backend computers requesting the computing reservation and a calculation formula to be used for the computing process are specified, and a computing reservation with a different reservation identification number assigned to each group is sent. [Disclosure 13] communications between the plurality of front-end computers and the plurality of back-end computers are performed via a plurality of communication paths configured by the network; when transmitting information to the back-end computer, the front-end computer transmits the information in parallel to the plurality of communication paths; when transmitting information to the front-end computer, the back-end computer transmits the information in parallel to the plurality of communication paths; the front-end computer adopts any one of the pieces of information transmitted in parallel to the plurality of communication paths from the back-end computer and received; The computing system according to any one of Disclosures 1 to 12, wherein the back-end computer employs any one of the pieces of information transmitted in parallel to the plurality of communication paths from the front-end computer and received. [Disclosure 14] the front-end computer adopts the information that is received first among the information transmitted in parallel from the back-end computer to the plurality of communication paths; The computing system according to Disclosure 13, wherein the back-end computer adopts information that is received first among information transmitted in parallel from the front-end computer to the plurality of communication paths. [Disclosure 15] the front-end computer discards information that is not adopted from among the information transmitted in parallel from the back-end computer to the plurality of communication paths; 15. The computing system according to claim 13, wherein the back-end computer discards information that is not adopted from the information transmitted in parallel from the front-end computer to the plurality of communication paths. [Disclosure 16] the front-end computer assigns the same identification information to each piece of information to be transmitted in parallel to the plurality of communication paths; the back-end computer assigns the same identification information to each piece of information to be transmitted in parallel to the plurality of communication paths; the front-end computer determines which information to adopt from among the information transmitted in parallel to the plurality of communication paths and received from the back-end computer, based on the identification information assigned to the information transmitted from the back-end computer; A computing system described in any one of Disclosures 13 to 15, wherein the back-end computer determines which information to adopt from the information received and transmitted in parallel from the front-end computer to the multiple communication paths based on the identification information assigned to the information transmitted from the front-end computer. [Disclosure 17] 17. The computing system according to any one of Disclosures 13 to 16, wherein the plurality of communication paths are established by different communication carriers. [Disclosure 18] a plurality of front-end calculators; a plurality of back-end computers that execute the calculation processes requested by the front-end computers and transmit the calculation results obtained by the calculation processes to the front-end computers; A processing method in a computing system configured by connecting via a network, a step in which the front-end computer requests two or more back-end computers among the plurality of back-end computers to execute the same computation process; and each of the two or more back-end computers, when it has available computing capacity, executes the computational processing requested by the front-end computer. [Disclosure 19] In a process control system that controls multiple pieces of equipment, a plurality of front-end computers provided corresponding to the plurality of facilities, respectively; a plurality of back-end computers each having a higher computing power than the front-end computer; are connected via a network, When the plurality of back-end computers have available computing power, they each execute the computation process requested by the front-end computer and transmit the computation result to the front-end computer; The front-end computer controls the corresponding equipment based on the transmitted calculation result. [Disclosure 20] A process control method in a process control system in which a plurality of front-end computers provided corresponding to a plurality of pieces of equipment, respectively, and a plurality of back-end computers having a higher processing capacity than the front-end computers are connected via a network, comprising: a step in which, when there is available computing capacity, each of the plurality of back-end computers executes the computing process requested by the front-end computer and transmits the computation result to the front-end computer; The front-end computer controls the corresponding equipment based on the transmitted calculation result. [Explanation of symbols]
[0310] 1. Computing System 3 Equipment 5, 6a~6b Network 100 Front-End Calculator (FEP) 110 Load Balancer (LB-FEP) 120 Multiple Communication Path Control Middleware (CM-FEP) 200 Back-end Calculator (BEP) 210 Load Balancer (LB-BEP) 220 Multiple Communication Path Control Middleware (CM-BEP) 900 Information Processing Equipment 901 CPU 903 ROM 905 RAM 907 Bus 909 Input I / F 911 Output I / F 913 Storage Device 915 Drive 917 connection port 919 Communication Equipment 921 Input Device 923 Output Device 925 Removable Recording Media 927 External equipment 929 Communication Network
Claims
1. a plurality of front-end calculators; a plurality of back-end computers that execute the calculation processes requested by the front-end computers and transmit the calculation results obtained by the calculation processes to the front-end computers; are connected via a network, the front-end computer requests two or more of the plurality of back-end computers to execute the same computation process; A computing system in which each of the two or more back-end computers executes a computing process requested by the front-end computer when it has available computing capacity.
2. the front-end computers are devices for controlling equipment, and are provided corresponding to each of a plurality of pieces of equipment; 2. The computing system according to claim 1, wherein the back-end computer is a device having a higher computing power than the front-end computer.
3. the front-end computer transmits a computation reservation to the back-end computer prior to a computation processing request; When the back-end computer receives the computation reservation, it records the computation reservation information, determines whether or not it has computational capacity, and if so, sends a reservation acceptance response to the front-end computer; the front-end computer transmits a request to execute a computation process to at least one back-end computer that has transmitted the reservation acceptance response; when receiving the execution request for the computation process, the back-end computer transmits an acknowledgment to the front-end computer, then executes the computation process and transmits the computation result to the front-end computer; When the front-end computer receives the acknowledgment, it sends a reservation cancellation request to the back-end computer; 3. The computing system according to claim 1, wherein said back-end computer deletes the recorded information about said computing reservation when said reservation cancellation request is received.
4. the back-end computer has one or more processing units, 4. The computing system according to claim 3, wherein when the computing reservation is received from the front-end computer, if there is a processing unit with available computing capacity, a reservation acceptance response is transmitted to the front-end computer.
5. The back-end computer If the request to execute the calculation process or the request to cancel the reservation is not received within a predetermined time after the reservation acceptance response is sent to the front-end computer, Delete the recorded calculation reservation, 4. The computing system according to claim 3, wherein the computing process is restarted from the process when the computation reservation for the computing process was received.
6. The front-end computer If an acknowledgment is not received within a predetermined time from the backend computer to which the execution request for the computation process has been sent, or if a computation result is not received within a predetermined time after the acknowledgment is received from the backend computer, 4. The computing system according to claim 3, further comprising: a step of resending a computation reservation to said back-end computer.
7. The back-end computer 4. The computing system according to claim 3, wherein when two different computation reservations are received from the same front-end computer, the information of the earlier received computation reservation is overwritten with the information of the later received computation reservation, except for information that can identify the reservation order of the computation reservations.
8. 4. The computing system according to claim 3, wherein when the front-end computer receives a request to send computation data to be used in the computation process after receiving the acceptance response from the back-end computer, the front-end computer sends the computation data to the back-end computer.
9. The back-end computers each store whether or not each type of computation process can be executed, 4. The computing system according to claim 3, wherein when the computing reservation is received from the front-end computer, the computing system determines whether the computing process can be executed based on the type of the requested computing process, and records information about the computing reservation if the computing process can be executed.
10. The back-end computer receives the computation reservations from the different front-end computers, and when there is computational capacity available to execute each of the requested computation processes, 4. The computing system according to claim 3, wherein a reservation acceptance response is sent to the front-end computer that has requested the computing reservation with the highest priority among the received computing reservations.
11. The back-end computers each store a calculation formula to be executed for each type of calculation process, 4. The computing system according to claim 3, wherein a front-end computer requesting a computing process transmits n computing reservations, each specifying n different types associated with the same computing process, to the back-end computers when the front-end computer requests the same computing process to be executed by the n back-end computers.
12. The front-end computer that requires the calculation process is Request destination correspondence information in which back-end computers are classified into n groups for one calculation formula used in calculation processing is stored in advance, 4. The computing system according to claim 3, wherein when the same computing process is to be executed on n back-end computers, a group of back-end computers requesting the computing reservation and a calculation formula to be used for the computing process are specified, and a computing reservation with a different reservation identification number assigned to each group is sent.
13. communications between the plurality of front-end computers and the plurality of back-end computers are performed via a plurality of communication paths configured by the network; when transmitting information to the back-end computer, the front-end computer transmits the information in parallel to the plurality of communication paths; when transmitting information to the front-end computer, the back-end computer transmits the information in parallel to the plurality of communication paths; the front-end computer adopts any one of the pieces of information transmitted in parallel to the plurality of communication paths from the back-end computer and received; 3. The computing system according to claim 1, wherein said back-end computer employs any one of the pieces of information transmitted in parallel to said plurality of communication paths from said front-end computer and received.
14. the front-end computer adopts the information that is received first among the information transmitted in parallel from the back-end computer to the plurality of communication paths; 14. The computing system according to claim 13, wherein said back-end computer adopts information that is received first among information transmitted in parallel from said front-end computer to said plurality of communication paths.
15. the front-end computer discards information that is not adopted from among the information transmitted in parallel from the back-end computer to the plurality of communication paths; 14. The computing system according to claim 13, wherein the back-end computer discards information that is not adopted from among the information transmitted in parallel from the front-end computer to the plurality of communication paths.
16. the front-end computer assigns the same identification information to each piece of information to be transmitted in parallel to the plurality of communication paths; the back-end computer assigns the same identification information to each piece of information to be transmitted in parallel to the plurality of communication paths; the front-end computer determines which information to adopt from among the information transmitted in parallel to the plurality of communication paths and received from the back-end computer, based on the identification information assigned to the information transmitted from the back-end computer; 14. The computing system according to claim 13, wherein the back-end computer determines which information to adopt from the information transmitted in parallel from the front-end computer to the plurality of communication paths and received, based on the identification information assigned to the information transmitted from the front-end computer.
17. The computing system according to claim 13 , wherein the plurality of communication paths are established by different communication carriers.
18. a plurality of front-end calculators; a plurality of back-end computers that execute the calculation processes requested by the front-end computers and transmit the calculation results obtained by the calculation processes to the front-end computers; A processing method in a computing system configured by connecting via a network, a step in which the front-end computer requests two or more back-end computers among the plurality of back-end computers to execute the same computation process; and each of the two or more back-end computers, when it has available computing capacity, executes the computational processing requested by the front-end computer.
19. In a process control system that controls multiple pieces of equipment, a plurality of front-end computers provided corresponding to the plurality of facilities, respectively; a plurality of back-end computers each having a higher computing power than the front-end computer; are connected via a network, When the plurality of back-end computers have available computing power, they each execute the computation process requested by the front-end computer and transmit the computation result to the front-end computer; The front-end computer controls the corresponding equipment based on the transmitted calculation result.
20. A process control method in a process control system in which a plurality of front-end computers provided corresponding to a plurality of pieces of equipment, respectively, and a plurality of back-end computers having a higher processing capacity than the front-end computers are connected via a network, comprising: a step in which, when there is a computational capacity available, each of the plurality of back-end computers executes the computation process requested by the front-end computer and transmits the computation result to the front-end computer; The front-end computer controls the corresponding equipment based on the transmitted calculation result.
Citation Information
Patent Citations
Local area network
JP1995152698A
Real-time dialogue in communication networks
JP2015511457A