Choreographed Distributed Execution Of Programs
Abstract
Techniques are described for managing creation and/or execution of distributed programs, such as for a group of multiple interrelated programs that are part of a service-oriented architecture or that otherwise interact during execution to provide a desired type of functionality. In at least some situations, the described techniques include performing decentralized choreographed distributed execution of a group of related programs, by using executing supervisor components for some or all such programs to manage execution-related behavior of the programs. The execution-related behavior that is managed by supervisor components for a group of programs may include, for example, managing interactions between the programs, managing run-time dependencies and other relationships between at least some of the programs, managing update strategies for updating some or all of the programs of the group while the group continues to provide functionality (e.g., performing updates in a defined serial or simultaneous manner), etc.
Claims
exact text as granted — not AI-modified1 - 30 . (canceled)
31 . A system, comprising:
multiple hardware processors of multiple computer systems; and one or more memories having stored instructions that, when executed by the multiple hardware processors, cause the multiple computer systems to implement a plurality of supervisor components that inter-operate in a cooperative distributed manner, wherein each of the multiple computer systems implements one of the plurality of supervisor components that manages execution of a local software package within the one supervisor component and that coordinates that managed execution with other supervisor components of the plurality on other of the multiple computer systems, and wherein the implementing of the plurality of supervisor components includes:
determining, by a first supervisor component of the plurality that is implemented on a first computer system and that has a first local software package to execute within the first supervisor component, interdependencies of the first supervisor component with other supervisor components of the plurality, including:
determining, based on one of multiple predefined topology types that is selected for use with the plurality of supervisor components, that the first supervisor component is to operate as a leader component for the plurality of supervisor components;
determining at least one second supervisor component of the plurality that executes at least one second software package on which the first local software package has a dependency; and
determining at least one third supervisor component of the plurality that executes at least one third software package having a dependency on the first local software package;
communicating, by the first supervisor component, with the at least one second supervisor component to obtain information about ongoing execution of the at least one second software package, performing execution of the first local software package within the first supervisor component in a manner that is based on the obtained information, and monitoring the execution of the first local software package to generate status information about the execution of the first local software package;
communicating, by the first supervisor component, with the at least one third supervisor component to provide at least some of the generated status information about the execution of the first local software package, to alter execution of the at least one third software package based on the provided at least some status information;
responding, by the first supervisor component on behalf of the plurality of supervisor components, and based on the first supervisor component operating as the leader component for the plurality of supervisor components, to a first request that is from a first software program separate from the plurality of supervisor components and is for a first type of functionality provided by the plurality of supervisor components; and
delegating, by the first supervisor component, and based on the first supervisor component operating as the leader component for the plurality of supervisor components, a second request to one or more other supervisor components of the plurality, wherein the second request is from a second software program separate from the plurality of supervisor components and is for a second type of functionality provided by the plurality of supervisor components.
32 . The system of claim 31 wherein the multiple predefined topology types include a leader-follower topology having roles that include at least one supervisor component acting as a leader component and that include at least one other supervisor component acting as a follower component, and a stand-alone topology in which each supervisor component manages operations of its local software package without coordination with any other supervisor components.
33 . The system of claim 31 wherein the determining that the first supervisor component is to operate as the leader component includes electing, by at least some of the plurality of supervisor components, the first supervisor component as the leader component and further includes designating the one or more other supervisor components as follower components.
34 . The system of claim 33 wherein the implementing of the plurality of supervisor components further includes, after the first supervisor component becomes unavailable, electing a different supervisor component of the plurality as a new leader component for further operations.
35 . The system of claim 31 wherein the one or more memories have further stored instructions of one or more builder components that, when executed by one or more of the multiple hardware processors, cause the one or more hardware processors to, before the implementing of the plurality of supervisor components, generate at least some of the local software packages of the plurality of supervisor components, the generating of each of the at least some local software packages including:
receiving instructions from a user that specify one or more software applications to include in the local software package to be generated and that specify configuration information to use during execution of the one or more software applications; and
generating the local software package to include the specified one or more software applications and the specified configuration information and to interact with one or more supervisor component interfaces during the execution of the one or more software applications.
36 . The system of claim 35 wherein the generating of one of the at least some software packages further includes:
providing, to the user, information about the multiple predefined topology types;
receiving, from the user, information about the one predefined topology type that is selected by the user for use with the one software package; and
storing information about the selected predefined topology type as part of the generated one software package.
37 . The system of claim 36 wherein the generating of the one software package further includes:
providing, to the user, information about multiple predefined security policies that are available for use; and
receiving, from the user, information about one of the multiple predefined security policies that is selected by the user for use with the one software package; and
storing further information about the selected predefined security policy as part of the generated one software package,
and wherein the implementing of the plurality of supervisor components further includes using the stored further information to implement the selected predefined security policy during the execution of the generated one software package.
38 . The system of claim 35 wherein the one or more software applications specified for one of the multiple software packages include a new software application designed to execute within a supervisor component, and wherein the one or more software applications specified for another of the multiple software packages include a legacy software application that is not designed to execute within a supervisor component.
39 . The system of claim 31 wherein the implementing of the plurality of supervisor components further includes monitoring stored configuration information associated with the first local software package and, in response to a change in the stored configuration information that is identified from the monitoring, modifying further execution of the first local software package to use the changed configuration information.
40 . The system of claim 31 wherein the implementing of the plurality of supervisor components further includes:
receiving information from a security server for use in performing security operations that include at least one of encryption and decryption; and
using the received information to perform the security operations as part of at least one of decrypting an encrypted version of the first local software package before the execution of the first local software package, encrypting communications sent from the first supervisor component to one or more other supervisor components, decrypting communications received by the first supervisor component from one or more other supervisor components, or decrypting stored data for use by the executing first local software package of the first supervisor component.
41 . The system of claim 31 wherein the implementing of the plurality of supervisor components further includes:
using stored information associated with the first local software package to identify a predefined callback function that is associated with one or more specified criteria and is specified by a user; and
in response to satisfaction of the one or more specified criteria during the execution of the first local software package, providing information to the user about the execution of the first local software package that is related to the callback function, wherein the callback function corresponds to at least one of health information about a problem during the execution of the first local software package, a start of the execution of the first local software package, a restart of the execution of the first local software package, or a change in configuration used during the execution of the first local software package.
42 . The system of claim 31 wherein the plurality of supervisor components are inter-connected in a mesh structure in which at least one supervisor component of the plurality is connected to at least one other supervisor component of the plurality only indirectly via at least one further intermediate supervisor component of the plurality, and wherein at least one of the communicating with the at least one second supervisor component or the communicating with the at least one third supervisor component is performed using a gossip protocol and the mesh structure.
43 . The system of claim 31 wherein at least some communications between the plurality of supervisor components use a publish-subscribe model, and wherein at least one of the communicating with the at least one second supervisor component or the communicating with the at least one third supervisor component includes at least one of publishing information or subscribing to published information.
44 . A computer-implemented method comprising:
executing, by a first computing system, a first supervisor component that has an associated first local software package; determining, by the executing first supervisor component on the first computing system, and based at least in part on defined configuration information, interdependencies of the executing first supervisor component with other supervisor components that are executing on other computing systems and have other associated software packages, including that a second supervisor component has an associated second software package on which the first local software package has a dependency, and that a third supervisor component has an associated third software package with a dependency on the first local software package, and wherein the configuration information indicates one of multiple predefined types of topologies to use in interacting with the other supervisor components; and executing, by the executing first supervisor component on the first computing system and based at least in part on the determined interdependencies, the first local software package within the first supervisor component, including interacting over one or more computer networks with the second supervisor component to obtain status information about execution of the second software package and using the obtained status information to alter the executing of the first local software package, and including interacting over the one or more computer networks with the third supervisor component to provide additional status information about the executing of the first local software package that alters execution of the third software package, wherein interacting over the one or more computer networks with the other supervisor components is based on the indicated one predefined type of topology.
45 . The computer-implemented method of claim 44 further comprising:
executing, by the other computing systems, the other supervisor components, and the other associated software packages within the executing other supervisor components; and
exchanging, by the executing first supervisor component on the first computing system, communications with the executing other supervisor components on the other computing systems as part of the interacting over the one or more computer networks with the second and third supervisor components.
46 . The computer-implemented method of claim 44 further comprising, before the executing of the first supervisor component, generating the first local software package by:
presenting, by a builder component executing on at least one computing system, information to a user about the multiple predefined types of topologies, and receiving information from the user about a selection of the one predefined type of topology for use with the first local software package; and
storing information about the selected one predefined type of topology as part of the generated first local software package.
47 . The computer-implemented method of claim 46 wherein the multiple predefined types of topologies include a leader-follower topology with roles that include at least one supervisor component acting as a leader and at least one other supervisor component acting as a follower, and a stand-alone topology in which each supervisor component manages operations of its local software package without coordination with any other supervisor components, wherein the selected one predefined type of topology is a leader-follower topology, and wherein the executing of the plurality of supervisor components further includes:
electing, by the other supervisor components, the first supervisor component to act as the leader, and designating the other supervisor components to act as followers; and
responding, by the first supervisor component and based on the first supervisor component acting as the leader, to an external request over the one or more computer networks from a software program for a specified type of functionality.
48 . A non-transitory computer-readable medium having stored contents that cause one or more computing systems to perform automated operations, the automated operations including:
executing, by the one or more computing systems, a plurality of supervisor components in a coordinated manner to perform decentralized distributed execution of multiple inter-related software packages, wherein each of the supervisor components manages local execution, within the supervisor component, of one or more associated software packages of the multiple inter-related software packages; and for each of multiple executing supervisor components of the plurality,
determining, by the executing supervisor component, interdependencies of the executing supervisor component with other supervisor components of the plurality, including based on the one or more associated software packages of the executing supervisor component having a dependency on one or more other first software packages, and based on one or more other second software packages having a dependency on the one or more associated software packages of the executing supervisor component; and
executing, by the executing supervisor component and based at least in part on the determined interdependencies, the one or more associated software packages locally within the executing supervisor component, the executing of the one or more associated software packages including:
interacting over one or more computer networks with one or more first supervisor components of the plurality that execute the one or more other first software packages on which the one or more associated software packages of the executing supervisor component have a dependency, including obtaining status information about execution of the one or more other first software packages and using the obtained status information to manage the executing of the one or more associated software packages of the executing supervisor component, and
interacting over the one or more computer networks with one or more second supervisor components of the plurality that execute the one or more other second software packages having a dependency on the one or more associated software packages of the executing supervisor component, including to provide additional status information about the executing of the one or more associated software packages of the executing supervisor component for use in managing execution of the one or more other second software packages.
49 . The non-transitory computer-readable medium of claim 48 wherein the stored contents include software instructions that, when executed, further cause at least one computing system to, before the executing of the plurality of supervisor components, generate at least some of the multiple inter-related software packages by:
presenting, by a builder component executing on the at least one computing system, information to a user about multiple predefined types of topologies for the multiple inter-related software packages to interact with each other, and receiving information from the user about a selection of one predefined type of topology for use with the at least some software packages;
storing information about the selected one predefined type of topology as part of the generated at least some software packages,
and wherein the executing of the plurality of supervisor components further includes performing interactions between at least some of the supervisor components based on the selected one predefined type of topology.
50 . The non-transitory computer-readable medium of claim 49 wherein the one or more computing systems include multiple computing systems, wherein the selected one predefined type of topology is a leader-follower topology in which a leader supervisor component handles external requests for a first type of functionality provided by the multiple inter-related software packages and in which follower supervisor components handle external requests for a second type of functionality provided by the multiple inter-related software packages, and wherein the executing of the plurality of supervisor components further includes:
electing, by the plurality of supervisor components, one of the supervisor components of the plurality to be the leader supervisor component for the plurality, and designating other supervisor components of the plurality to be the follower supervisor components;
responding, by the leader supervisor component on behalf of the plurality of supervisor components, to a first request that is from a software program separate from the plurality of supervisor components and is for the first type of functionality; and
responding, by one or more of the follower supervisor components on behalf of the plurality of supervisor components, to a second request that is from a software program separate from the plurality of supervisor components and is for the second type of functionality.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.