Patent ID: 12242898

DETAILED DESCRIPTION

The present invention provides methods, systems and computer program products for job management and for allocating resources for cloud based or remote device based job processing.

In various embodiments, the invention provides scalable job manager architectures for remote computing environment based job execution.

FIG.2illustrates a scalable job manager architecture for remote computing environment based job execution in accordance with the teachings of the present invention.

The system environment200ofFIG.2illustrates a plurality of job manager machines1to p (202,206,210).

Each of the plurality of job manager machines1to p (202,206,210) has access to and implements the received jobs through a corresponding job manager resource pool assigned to or controlled by that particular job manager machine.

So inFIG.2, job manager machine1(202) has access to and controls job manager1resource pool204, job manager machine2(206) has access to and controls job manager2resource pool208, and job manager machine p (210) has access to and controls job manager p resource pool212. Each job manager resource pool204,208,212comprises a plurality of machines (or computing resources)1to n—and jobs received by any of job manager machines1to p,202,206,210, may be distributed among the plurality of machines within the corresponding job manager resource pool, for execution.

Each of the plurality of machines1to n, (2042to2048;2082to2088;2122to2128) within a job manager resource pool (204,208,212) has access to and effects performance of jobs received by the corresponding job manager machine202,206,210to which the job manager resource pool204,208,212has been assigned (or is controlled by).

The job manager machines1to p (202,206,610), can be distributed at different locations and/or on different networks. When any of job manager machines1to p (202,206,210), receives a job request, it selects a free machine(s) within its corresponding job manager resource pool—ensuring that the selected machine meets the job requirements (number of cores or number and type of CPU, memory etc.) and sends the job (or one or more computing tasks associated with the job) to the selected machine. If no machines are free, the job manager machine may queue the job and try to find a suitable machine within its corresponding job manager resource pool, that is free. If a machine to which a job is allocated for execution crashes while running a job, the responsible job manager machine will allocate and re-run the job which was running while the machine crashed, on a different machine. Thus the job manager machine is configured to receive jobs for execution, and is responsible for running the job if an appropriate machine resource is available within its corresponding job manager resource pool.

Once an allocated job or computing task is run by a machine, the responsible job manager machine collects the output and sends it back to the requesting client machine (either directly or indirectly).

Each job manager resource pool204,208,212respectively corresponding to job manager machines1to p,202,206,210, has a set of ‘n’ machines for running jobs allocated to the corresponding job manager machine. It would be understood that ‘n’ represents any number (and in some embodiments, ‘n’ may be any number greater than 1), and ‘n’ may represent a different number for each job manager resource pool204,208,212. At least one (and possibly more than one) of the ‘n’ machines associated with each job manager machine is configured as, and/or identified as, and/or configured to identify itself as, a gateway machine. The remaining machines out of the ‘n’ machines are non-gateway machines. The configuration and functioning of gateway machines and non-gateway machines are described below.

Each gateway machine within each job manager resource pool is assigned or stores identification data and/or network address data of at least one target job manager machine (i.e. a ‘target job manager machine’) that is different from the job manager machine that allocates jobs to (or controls) machines within the job manager resource pool within which the gateway machine is located (i.e. the ‘source job manager machine’).

The system environment200or one or more machines or devices within the system environment200may be configured such that each job manager machine (when functioning as a source job manager machine) applies a set of rules or criteria to determine whether a job is to be allocated to a gateway machine or to any of the non-gateway machines within the corresponding job manager resource pool. These rules or criteria, as well as the rate at which jobs are assigned to a gateway machine by a source job manager machine can be dynamically changed. In an exemplary embodiment, the source job manager machine may be configured to allocate a job to a gateway machine within the job manager resource pool corresponding to the source job manager machine, when all other machines in the same job manager resource pool are fully occupied or when the load on the remaining machines within the same job manager resource pool is above a predefined threshold.

When a non-gateway machine within a job manager resource pool (i.e. a machine within the job manager resource pool that is not a gateway machine), receives a job from its source job manager machine, the non-gateway machine executes the job and passes the output of the executed job back to the source job manager machine. On the other hand, when a gateway machine receives a job from its source manager machine, the gateway machine forwards the job for execution to a target job manager machine whose identification data and/or network address data is stored within the gateway machine. In the event the gateway machine has identification data and/or network address data of a plurality of target job manager machines, it selects one out of the plurality of target job manager machines based on one or more predefined selection rules (e.g. rules to select a job manager machine that has the fewest queued jobs, sufficient number of available machines, the lightest load, the fastest execution speed, the lowest latency, or the lowest price associated with job execution). The target job manager machine receives the forwarded job (that has been forwarded by the gateway machine within the job manager resource pool corresponding to another job manager (i.e. the source job manager) and distributes the forwarded job to one of its own machines for execution.

In an embodiment, the target job manager is configured such that, when the target job manager machine receives a forwarded job or a forwarded job execution request from a gateway machine within a job manager resource pool of a source job manager machine, the target job manager responds to the forwarding gateway machine in the same manner as it would if the job or job execution request were received from a job execution requesting device.

When the forwarded job is completed, the target job manager collects the output and sends it back to the gateway machine that forwarded the job to the target job manager. The gateway machine then forwards the output of the completed job back to its source job manager in the same manner as if it had completed the outsourced job locally.

In an embodiment, the target job manager machine and its corresponding job manager resource pool may be configured identically as the source job manager machine and its corresponding job manager resource pool. In other words, the job manager resource pool corresponding to the target job manager machine may comprise at least one gateway machine, with the remaining machines being non-gateway machines—and a job allocated to a gateway machine within a job manager resource pool associated with a target job manager machine is in turn capable of forwarding a received job or job execution request to another job manager machine (i.e. yet another job manager machine that is different from the source job manager machine and the target job manager machine).

As a result, the process flow where a job or job execution request cascades from a source job manager to a target job manager is a transparent process, and can be used to serially cascade a job across multiple job manager machines and their corresponding job manager resource pools. The scalable architecture of the present invention thereby permits for a job to be transmitted in a cascading process flow across multiple job manager machines, until a receiving job manager machine is found that has sufficient computing resources to execute the job.

The number of job manager machines within the remote environment200can be dynamic. For example, a new job manager machine (and its corresponding job manager resource pool) can be readily added to the remote environment by recording address information of the new job manager machine in a memory allocated to one or more gateway machines within one or more existing job manager resource pools within resource environment200. Future jobs or job execution requests forwarded to gateway machine(s) can thereafter be transmitted to the new job manager machine for execution.

The forwarding of jobs by a gateway machine (within a job manager resource pool associated with a source job manager machine) can be implemented in multiple different ways. In one exemplary embodiment, the gateway machine(s) is/are configured with instructions to forward any/all/specific jobs (or job execution requests) received from a source job manager machine to a target job manager machine. In another exemplary embodiment, the instructions for forwarding are provided as a script wrapper accompanying each job or job execution request forwarded by the source job manager machine (and in some embodiments, may even be included as a script wrapper accompanying each job when it is received by the source job manager machine). In an embodiment, the script wrapper includes instructions that if the job or job execution request is received by a machine that has been flagged or configured as a gateway machine, then the job should be forwarded to a target job manager machine associated with the gateway machine. In this embodiment, when a job or job execution request is allocated to a gateway machine by a source job manager machine, the gateway machine reads the wrapper script, recognizes that the conditions in the wrapper script have been fulfilled, and forwards the job or job execution request onward to the target job manager machine for execution.

FIG.3is a flowchart illustrating a method for assigning a job execution request from a first job manager machine to a target computing machine, as implemented within the scalable job manager architecture of the present invention.

Step302comprises receiving at a first job manager machine, a first job execution request transmitted by a job execution requesting device, wherein the received job execution request has been transmitted to the first job manager machine for execution within a remote computing environment, and identifies a job for execution within a remote computing environment

Step304comprises selecting a target computing machine from among a set of computing machines assigned to the first job manager machine, wherein the selected target computing machine is either a gateway machine or a non-gateway machine, and wherein selection of the target computing machine is based on one or more predefined rules or selection criteria.

The first job manager machine may apply a set of rules or criteria to determine whether the selected target machine is a gateway machine or a non-gateway machine within the corresponding job manager resource pool. These rules or criteria, as well as the rate at which jobs are assigned to a gateway machine by the first job manager machine can be dynamically changed. In an exemplary embodiment, the first job manager machine may be configured to allocate a job to a gateway machine within the job manager resource pool corresponding to the first job manager machine, when all non-gateway machines in the same job manager resource pool are fully occupied or when the load on the remaining non-gateway machines within the same job manager resource pool is above a predefined threshold.

Step306comprises transmitting from the first job manager machine to the selected target computing machine, a data message comprising data that has been received within the first job execution request. In an embodiment, the data within the data message may include data extracted from the first job execution request that identifies a job for execution within the remote computing environment. In another embodiment, the data message may comprise the first job execution request. In another embodiment, the data message may comprise a modified job execution request based on data extracted from the first job execution request.

At step308, responsive to (i) the target computing machine comprising a gateway machine, said target computing machine initiates a first response to receiving the data message transmitted from the first job manager machine, and (ii) responsive to the target computing machine comprising a non-gateway computing machine, said target computing machine initiates a second response to receiving the data message transmitted from the first job manager machine. The first response and the second response are different from each other—and as a result, the manner in which a gateway machine responds to receiving the data message transmitted from the first job manager machine, is different from the manner in which a non-gateway machine responds to receiving the data message transmitted from the first job manager machine. The specific responses of gateway machines and non-gateway machines are described in more detail in connection with the methods ofFIGS.5and7.

Step310comprises receiving at the first job manager machine, from the target computing machine, output data comprising an execution output of one or more computing tasks which comprise a part or the whole of the job identified within the first job execution request.

Step312comprises transmitting the received output data, from the first job manager machine to the job execution requesting device from which the first job execution request was received by the first job manager machine.

FIG.4is a communication flow diagram illustrating communication flow between system entities in implementing the method ofFIG.3.

Step4002comprises receiving at a first job manager machine404, a first job execution request transmitted by a job execution requesting device402, wherein the received job execution request has been transmitted to the first job manager machine404for execution within a remote computing environment, and identifies a job for execution within a remote computing environment

The first job manager machine selects a target computing machine406from among a set of computing machines assigned to the first job manager machine, wherein the selected target computing machine is either a gateway machine or a non-gateway machine, and wherein selection of the target computing machine is based on one or more predefined rules or selection criteria.

The first job manager machine may apply a set of rules or criteria to determine whether the selected target machine is a gateway machine or a non-gateway machine within the corresponding job manager resource pool. These rules or criteria, as well as the rate at which jobs are assigned to a gateway machine by the first job manager machine can be dynamically changed. In an exemplary embodiment, the first job manager machine may be configured to allocate a job to a gateway machine within the job manager resource pool corresponding to the first job manager machine, when all non-gateway machines in the same job manager resource pool are fully occupied or when the load on the remaining non-gateway machines within the same job manager resource pool is above a predefined threshold.

Step4004comprises transmitting from first job manager machine404to the selected target computing machine406, a data message comprising data that has been received within the first job execution request. In an embodiment, the data within the data message may include data extracted from the first job execution request that identifies a job for execution within the remote computing environment. In another embodiment, the data message may comprise the first job execution request. In another embodiment, the data message may comprise a modified job execution request based on data extracted from the first job execution request.

Responsive to (i) the target computing machine comprising a gateway machine, said target computing machine initiates a first response to receiving the data message transmitted from the first job manager machine, and (ii) responsive to the target computing machine comprising a non-gateway computing machine, said target computing machine initiates a second response to receiving the data message transmitted from the first job manager machine. The first response and the second response are different from each other—and as a result, the manner in which a gateway machine responds to receiving the data message transmitted from the first job manager machine, is different from the manner in which a non-gateway machine responds to receiving the data message transmitted from the first job manager machine.

Step4006comprises receiving at first job manager machine404, from the target computing machine406, output data comprising an execution output of one or more computing tasks which comprise a part or the whole of the job identified within the first job execution request.

Step4008comprises transmit the received output data from first job manager machine404to job execution requesting device402from which the first job execution request was received by the first job manager machine.

FIG.5is a flowchart illustrating a method for implementing job execution when the target computing machine is a gateway machine, as implemented within the scalable job manager architecture of the present invention. In an embodiment, the method ofFIG.5is implemented at a target computing machine that is a gateway machine. In a more particular embodiment, the method ofFIG.5comprises the step308response of the target computing machine as described in connection with the method ofFIG.3.

Step502comprises retrieving from a memory accessible by the gateway machine, data corresponding to a second job manager machine. The retrieved data comprises at least identification data and/or network address data of a second job manager machine that is different from the first job manager machine which allocates jobs to (or controls) machines within a job manager resource pool within which the gateway machine is located

Step504comprises generating a second job execution request based on data within the data message received from the first job manager machine (i.e. which has been received as a result of step306of the method ofFIG.3). In an embodiment, the second job execution request may include data extracted from the first job execution request that has been received at the first job manager machine (at step302), which data identifies a job for execution within the remote computing environment. In another embodiment, the second job execution request may comprise the first job execution request. In another embodiment, the second job execution request may comprise a modified job execution request based on data extracted from the first job execution request.

Step506comprises transmitting the second job execution request to the second job manager machine—wherein said transmission relies on or is based on the data corresponding to the second job manager machine that has been retrieved at step502(e.g. the retrieved identification data and/or network address data).

Step508comprises receiving from the second job manager machine, output data comprising an execution output of one or more computing tasks which comprise a part or the whole of the job identified within the second job execution request. It would be understood that this output data has been generated based on execution of the computing task(s) under the control of the second job manager machine, or under the control of another job manager machine to which the second job manager machine has further cascaded execution of said computing task(s).

Step510comprises transmitting the received output data to the first job manager machine—which may thereafter transmit the received output data to a job execution requesting device from which the first job execution request was originally received.

FIG.6is a communication flow diagram illustrating communication flow between system entities in implementing the method ofFIG.5.

Step6002receiving at a gateway machine604, a data message transmitted from first job manager machine602. It would be understood that the transmission of the data message by the first job manager machine602corresponds to step306of the method ofFIG.3. The data message comprises data that has been received by first job manager machine602within a first job execution request received from a job execution requesting device. In an embodiment, the data within the data message may include data extracted from the first job execution request that identifies a job for execution within the remote computing environment. In another embodiment, the data message may comprise the first job execution request. In another embodiment, the data message may comprise a modified job execution request based on data extracted from the first job execution request.

Gateway machine604retrieving from a memory accessible by said gateway machine604, data corresponding to a second job manager machine. The retrieved data comprises at least identification data and/or network address data of a second job manager machine that is different from the first job manager machine which allocates jobs to (or controls) machines within a job manager resource pool within which the gateway machine is located

Thereafter, gateway machine604generates a second job execution request based on data within the data message received from first job manager machine602. In an embodiment, the second job execution request may include data extracted from the first job execution request that has been received at the first job manager machine (at step302), which data identifies a job for execution within the remote computing environment. In another embodiment, the second job execution request may comprise the first job execution request. In another embodiment, the second job execution request may comprise a modified job execution request based on data extracted from the first job execution request.

Step6004comprises transmitting the second job execution from gateway machine604to a second job manager machine606—wherein said transmission relies on or is based on the data corresponding to the second job manager machine that has been retrieved from a memory accessible by gateway machine604(e.g. the retrieved identification data and/or network address data).

Second job manager machine606processes the second job execution request. It would be understood that this processing may involve either execution of one or more computing task(s) associated with the second job execution request, under the control of the second job manager machine, or under the control of another job manager machine to which the second job manager machine has further cascaded execution of said computing task(s).

Thereafter, step6006comprises receiving, at gateway machine604, from second job manager machine606, output data comprising an execution output of one or more computing tasks which comprise a part or the whole of the job identified within the second job execution request.

Step6008comprises transmitting the received output data from gateway machine604back to first job manager machine602—which may thereafter transmit the received output data to a job execution requesting device from which the first job execution request was originally received.

FIG.7is a flowchart illustrating a method for implementing job execution when the target computing machine is a non-gateway machine, as implemented within the scalable job manager architecture of the present invention. In an embodiment, the method ofFIG.7is implemented at a target computing machine that is a gateway machine. In a more particular embodiment, the method ofFIG.5comprises the step308response of the target computing machine as described in connection with the method ofFIG.3.

Step702comprises executing at the non-gateway computing machine, one or more computing tasks which comprise a part or the whole of the job identified within the first job execution request.

Step704comprises transmitting to the first job manager machine, output data comprising an execution output of the one or more computing tasks. The first job manager machine may thereafter transmit the received output data to a job execution requesting device from which the first job execution request was originally received.

FIG.8is a communication flow diagram illustrating communication flow between system entities in implementing the method ofFIG.5.

Step8002comprises receiving at a non-gateway machine804, a data message transmitted from first job manager machine802. It would be understood that the transmission of the data message by the first job manager machine802corresponds to step306of the method ofFIG.3. The data message comprises data that has been received by first job manager machine802within a first job execution request received from a job execution requesting device. In an embodiment, the data within the data message may include data extracted from the first job execution request that identifies a job for execution within the remote computing environment. In another embodiment, the data message may comprise the first job execution request. In another embodiment, the data message may comprise a modified job execution request based on data extracted from the first job execution request.

Non-gateway machine804processes or executes one or more computing tasks which comprise a part or the whole of the job identified within the transmitted data message.

Step8004comprises transmitting from non-gateway machine804to first job manager machine802, output data comprising an execution output of the one or more computing tasks. First job manager machine802may thereafter transmit the received output data to a job execution requesting device from which the first job execution request was originally received.

The invention provides a method for implementing job execution within a network based remote computing environment. The method comprises (i) receiving at a first job manager machine, a first job execution request transmitted by a job execution requesting device, wherein the received job execution request has been transmitted to the first job manager machine for execution within a remote computing environment, and identifies a job for execution within a remote computing environment, (ii) selecting from among a first set of computing machines assigned to the first job manager machine, a first target computing machine, (iii) transmitting to the selected first target computing machine, a first data message comprising data that has been received within the first job execution request, (iv) receiving from the first target computing machine, output data comprising an execution output of one or more computing tasks associated with the identified job, and (v) transmitting the received output data to the job execution requesting device—wherein (vi) the selected first target computing device is one of a first non-gateway machine and a first gateway machine, (vii) the first non-gateway machine is a processor implementing computing machine configured to respond to receiving the first data message from the first job manager machine by (a) generating the output data by executing the one or more computing tasks associated with the identified job, and (b) transmitting the output data to the first job manager machine, and (viii) the first gateway machine is a processor implementing computing machine configured to respond to receiving the first data message from the first job manager machine by (c) transmitting a second job execution request to a second job manager machine that is different from the first job manager machine, wherein the second job execution request includes data identifying the identified job, (d) receiving from the second job manager machine, output data comprising an execution output of one or more computing tasks associated with the data identified within the second job execution request, and (e) transmitting to the first job manager machine, the output data received from the second job manager machine.

In method embodiment, selection of the target computing machine is based on one or more predefined selection rules.

In another embodiment of the method, transmission of the second job execution request to the second job manager machine is based on retrieval of network address data identifying a network address of the second job manager machine, from a memory that is coupled with or accessible by the first gateway machine.

In a further embodiment of the method, the second job manager machine is configured to (i) select from among a second set of computing machines assigned to the second job manager machine, a second target computing machine, (ii) transmit to the selected second target computing machine, a second data message comprising data that has been received within the second job execution request, (iii) receive from the second target computing machine, output data comprising an execution output of one or more computing tasks associated with the identified job, and (iv) transmit the received output data to the first gateway device—wherein (v) the selected second target computing device is one of a second non-gateway machine and a second gateway machine, (vi) the second non-gateway machine is a processor implementing computing machine configured to respond to receiving the second data message from the second job manager machine by (a) generating the output data by executing the one or more computing tasks associated with the identified job, and (b) transmitting the output data to the second job manager machine, and (vii) the second gateway machine is a processor implementing computing machine configured to respond to receiving the data message from the second job manager machine by (c) transmitting a third job execution request to a third job manager machine that is different from the second job manager machine, wherein the third job execution request includes data identifying the identified job, (d) receiving from the third job manager machine, output data comprising an execution output of one or more computing tasks associated with the data identified within the third job execution request, and (e) transmitting to the second job manager machine, the output data received from the third job manager machine.

In a specific embodiment of the method, the first gateway machine is configured to selectively operate as one of a gateway device or as a non-gateway device, wherein the first gateway machine selectively operates as the gateway device in response to receiving script wrapper data associated the first data message, wherein said script wrapper data includes an instruction for the first gateway device to operate as the gateway device.

In another embodiment of the method, the first gateway machine is configured to consistently operate as a gateway device in respect of all jobs or computing tasks associated with data messages transmitted to the first gateway machine by the first job manager.

The invention also provides a system for implementing job execution within a network based remote computing environment, the system comprising a processor implemented first job manager machine configured to (i) receive a first job execution request transmitted by a job execution requesting device, wherein the received job execution request has been transmitted to the first job manager machine for execution within a remote computing environment, and identifies a job for execution within a remote computing environment, (ii) select from among a first set of computing machines assigned to the first job manager machine, a first target computing machine, (iii) transmit to the selected first target computing machine, a first data message comprising data that has been received within the first job execution request, (iv) receive from the first target computing machine, output data comprising an execution output of one or more computing tasks associated with the identified job, and (v) transmit the received output data to the job execution requesting device—wherein (vi) the selected first target computing device is one of a first non-gateway machine and a first gateway machine, (vii) the first non-gateway machine is a processor implementing computing machine configured to respond to receiving the first data message from the first job manager machine by (a) generating the output data by executing the one or more computing tasks associated with the identified job, and (b) transmitting the output data to the first job manager machine, and (viii) the first gateway machine is a processor implementing computing machine configured to respond to receiving the first data message from the first job manager machine by (c) transmitting a second job execution request to a second job manager machine that is different from the first job manager machine, wherein the second job execution request includes data identifying the identified job, (d) receiving from the second job manager machine, output data comprising an execution output of one or more computing tasks associated with the data identified within the second job execution request, and (e) transmitting to the first job manager machine, the output data received from the second job manager machine.

In a system embodiment, selection of the target computing machine is based on one or more predefined selection rules.

In another embodiment of the system, transmission of the second job execution request to the second job manager machine is based on retrieval of network address data identifying a network address of the second job manager machine, from a memory that is coupled with or accessible by the first gateway machine.

In a specific system embodiment, the second job manager machine is configured to (i) select from among a second set of computing machines assigned to the second job manager machine, a second target computing machine, (ii) transmit to the selected second target computing machine, a second data message comprising data that has been received within the second job execution request, (iii) receive from the second target computing machine, output data comprising an execution output of one or more computing tasks associated with the identified job, and (iv) transmit the received output data to the first gateway device—wherein (v) the selected second target computing device is one of a second non-gateway machine and a second gateway machine, (vi) the second non-gateway machine is a processor implementing computing machine configured to respond to receiving the second data message from the second job manager machine by (a) generating the output data by executing the one or more computing tasks associated with the identified job, and (b) transmitting the output data to the second job manager machine, and (vii) the second gateway machine is a processor implementing computing machine configured to respond to receiving the data message from the second job manager machine by (c) transmitting a third job execution request to a third job manager machine that is different from the second job manager machine, wherein the third job execution request includes data identifying the identified job, (d) receiving from the third job manager machine, output data comprising an execution output of one or more computing tasks associated with the data identified within the third job execution request, and (e) transmitting to the second job manager machine, the output data received from the third job manager machine.

In a further system embodiment, the first gateway machine is configured to selectively operate as one of a gateway device or as a non-gateway device, wherein the first gateway machine selectively operates as the gateway device in response to receiving script wrapper data associated the first data message, wherein said script wrapper data includes an instruction for the first gateway device to operate as the gateway device.

In another system embodiment, the first gateway machine is configured to consistently operate as a gateway device in respect of all jobs or computing tasks associated with data messages transmitted to the first gateway machine by the first job manager.

The invention also provides a computer program product for implementing job execution within a network based remote computing environment. The computer program product comprises a non-transitory computer usable medium having a computer readable program code embodied therein, the computer readable program code comprising instructions for implementing, the steps of (i) receiving at a first job manager machine, a first job execution request transmitted by a job execution requesting device, wherein the received job execution request has been transmitted to the first job manager machine for execution within a remote computing environment, and identifies a job for execution within a remote computing environment, (ii) selecting from among a first set of computing machines assigned to the first job manager machine, a first target computing machine, (iii) transmitting to the selected first target computing machine, a first data message comprising data that has been received within the first job execution request, (iv) receiving from the first target computing machine, output data comprising an execution output of one or more computing tasks associated with the identified job, and (v) transmitting the received output data to the job execution requesting device—wherein (vi) the selected first target computing device is one of a first non-gateway machine and a first gateway machine, (vii) the first non-gateway machine is a processor implementing computing machine configured to respond to receiving the first data message from the first job manager machine by (a) generating the output data by executing the one or more computing tasks associated with the identified job, and (b) transmitting the output data to the first job manager machine, and (viii) the first gateway machine is a processor implementing computing machine configured to respond to receiving the first data message from the first job manager machine by (c) transmitting a second job execution request to a second job manager machine that is different from the first job manager machine, wherein the second job execution request includes data identifying the identified job, (d) receiving from the second job manager machine, output data comprising an execution output of one or more computing tasks associated with the data identified within the second job execution request, and (e) transmitting to the first job manager machine, the output data received from the second job manager machine.

FIG.9illustrates an exemplary computer system according to which various embodiments of the present invention may be implemented.

System900includes computer system902which in turn comprises one or more processors904and at least one memory906. Processor904is configured to execute program instructions—and may be a real processor or a virtual processor. It will be understood that computer system902does not suggest any limitation as to scope of use or functionality of described embodiments. The computer system902may include, but is not limited to, one or more of a general-purpose computer, a programmed microprocessor, a micro-controller, an integrated circuit, and other devices or arrangements of devices that are capable of implementing the steps that constitute the method of the present invention. Exemplary embodiments of a computer system902in accordance with the present invention may include one or more servers, desktops, laptops, tablets, smart phones, mobile phones, mobile communication devices, phablets and personal digital assistants. In an embodiment of the present invention, the memory906may store software for implementing various embodiments of the present invention. The computer system902may have additional components. For example, the computer system902may include one or more communication channels908, one or more input devices910, one or more output devices912, and storage914. An interconnection mechanism (not shown) such as a bus, controller, or network, interconnects the components of the computer system902. In various embodiments of the present invention, operating system software (not shown) provides an operating environment for various softwares executing in the computer system902using a processor904, and manages different functionalities of the components of the computer system902.

The communication channel(s)908allow communication over a communication medium to various other computing entities. The communication medium provides information such as program instructions, or other data in a communication media. The communication media includes, but is not limited to, wired or wireless methodologies implemented with an electrical, optical, RF, infrared, acoustic, microwave, Bluetooth or other transmission media.

The input device(s)910may include, but is not limited to, a touch screen, a keyboard, mouse, pen, joystick, trackball, a voice device, a scanning device, or any another device that is capable of providing input to the computer system902. In an embodiment of the present invention, the input device(s)910may be a sound card or similar device that accepts audio input in analog or digital form. The output device(s)912may include, but not be limited to, a user interface on CRT, LCD, LED display, or any other display associated with any of servers, desktops, laptops, tablets, smart phones, mobile phones, mobile communication devices, phablets and personal digital assistants, printer, speaker, CD/DVD writer, or any other device that provides output from the computer system902.

The storage914may include, but not be limited to, magnetic disks, magnetic tapes, CD-ROMs, CD-RWs, DVDs, any types of computer memory, magnetic stripes, smart cards, printed barcodes or any other transitory or non-transitory medium which can be used to store information and can be accessed by the computer system902. In various embodiments of the present invention, the storage914may contain program instructions for implementing any of the described embodiments.

In an embodiment of the present invention, the computer system902is part of a distributed network or a part of a set of available cloud resources.

The present invention may be implemented in numerous ways including as a system, a method, or a computer program product such as a computer readable storage medium or a computer network wherein programming instructions are communicated from a remote location.

The present invention may suitably be embodied as a computer program product for use with the computer system902. The method described herein is typically implemented as a computer program product, comprising a set of program instructions that is executed by the computer system902or any other similar device. The set of program instructions may be a series of computer readable codes stored on a tangible medium, such as a computer readable storage medium (storage914), for example, diskette, CD-ROM, ROM, flash drives or hard disk, or transmittable to the computer system902, via a modem or other interface device, over either a tangible medium, including but not limited to optical or analogue communications channel(s)908. The implementation of the invention as a computer program product may be in an intangible form using wireless techniques, including but not limited to microwave, infrared, Bluetooth or other transmission techniques. These instructions can be preloaded into a system or recorded on a storage medium such as a CD-ROM, or made available for downloading over a network such as the Internet or a mobile telephone network. The series of computer readable instructions may embody all or part of the functionality previously described herein.

Based on the above, it would be apparent that the present invention offers multiple and significant advantages, including (i) eliminating bottlenecks arising out of a single job manager architecture, (ii) enabling job managers to handle peak loads that exceed the computing loads that the job manager has been configured to handle, and (iii) providing a readily scalable system that enables execution of jobs within a remote environment, in a manner that eliminates or reduces processing overheads and latency.

While the exemplary embodiments of the present invention are described and illustrated herein, it will be appreciated that they are merely illustrative. It will be understood by those skilled in the art that various modifications in form and detail may be made therein without departing from or offending the spirit and scope of the invention as defined by the appended claims. Additionally, the invention illustratively disclose herein suitably may be practiced in the absence of any element which is not specifically disclosed herein—and in a particular embodiment that is specifically contemplated, the invention is intended to be practiced in the absence of any one or more element which are not specifically disclosed herein.