Determinism for distributed applications
First Claim
Patent Images
1. A computing system comprising one or more computing nodes and one or more data stores in communication with the one or more computing nodes, the one or more data stores having stored thereon:
- policy information comprising one or more determinism policies indicative of non-deterministic program conditions, responses to determinism violations, and criteria for dividing program code; and
computer instructions that, upon execution by the one or more computing nodes, at least cause the computing system to;
receive an application program operable for execution in a distributed computing environment comprising one or more computing devices;
divide the application program into executable components in accordance with the criteria for dividing program code, the executable components being separately executable as independent processes;
execute the executable components in a plurality of containers configured to instantiate an execution space for executing the executable components, wherein the containers are configured to independently execute the executable components using one or more shared states and wherein relationships between the executable components are defined by the one or more determinism policies; and
in response to a determination that a non-deterministic event has occurred between at least two of the plurality of containers in accordance with the one or more determinism policies, applying one or more responses to the non-deterministic event in accordance with the one or more determinism policies in order to effectuate a deterministic result, wherein the one or more responses comprise terminating one of the plurality of containers.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are described for analyzing and verifying distributed application programs. In one embodiment, an application program is divided into as one or more independently executable components. During execution of the independently executable components, non-deterministic events are modified in order to effectuate deterministic results. The non-deterministic events may be modified in accordance with a predetermined set of constraints.
34 Citations
27 Claims
-
1. A computing system comprising one or more computing nodes and one or more data stores in communication with the one or more computing nodes, the one or more data stores having stored thereon:
-
policy information comprising one or more determinism policies indicative of non-deterministic program conditions, responses to determinism violations, and criteria for dividing program code; and computer instructions that, upon execution by the one or more computing nodes, at least cause the computing system to; receive an application program operable for execution in a distributed computing environment comprising one or more computing devices; divide the application program into executable components in accordance with the criteria for dividing program code, the executable components being separately executable as independent processes; execute the executable components in a plurality of containers configured to instantiate an execution space for executing the executable components, wherein the containers are configured to independently execute the executable components using one or more shared states and wherein relationships between the executable components are defined by the one or more determinism policies; and in response to a determination that a non-deterministic event has occurred between at least two of the plurality of containers in accordance with the one or more determinism policies, applying one or more responses to the non-deterministic event in accordance with the one or more determinism policies in order to effectuate a deterministic result, wherein the one or more responses comprise terminating one of the plurality of containers. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer-implemented method for executing distributed application programs, the method comprising:
-
dividing an application program into a plurality of components that are independently executable in accordance with determinism boundaries for which determinism is enforced, the application program being operable to execute in a distributed computing environment; independently executing the plurality of components in a plurality of containers configured to instantiate an execution space for executing the plurality of components to enforce the determinism boundaries, and replacing non-deterministic events between two or more of the plurality of containers with deterministic events in accordance with a predetermined set of responses to the non-deterministic events, wherein one of the plurality of containers is terminated in association with the predetermined set of responses. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. One or more non-transitory computer-readable storage media having collectively stored thereon executable instructions that, when executed by one or more processors of a computer system, cause the computer system to:
-
cause separate execution of a plurality of independently executable components in a plurality of containers in accordance with determinism boundaries for which determinism is enforced, wherein the plurality of independently executable components are derived from an application program operable to execute in a distributed computing environment, and wherein the plurality of containers are configured to instantiate an execution space for executing the independently executable components; and in response to a determination that a non-deterministic event has occurred between at least two of the plurality of containers in accordance with non-deterministic program conditions defined by one or more determinism policies, replace the non-deterministic event with a deterministic event in accordance with the one or more determinism policies, wherein one of the plurality of containers is terminated in association with the one or more determinism policies. - View Dependent Claims (20, 21, 22, 23)
-
-
24. A computing system comprising one or more computing nodes and one or more data stores in communication with the one or more computing nodes, the one or more data stores having stored thereon computer instructions that, upon execution by the one or more computing nodes, at least cause the computing system to:
-
divide an application program into a plurality of components that are independently executable in accordance with determinism boundaries for which determinism is enforced, the application program being operable to execute in a distributed computing environment; independently execute the plurality of components in a plurality of containers configured to instantiate an execution space for executing the plurality of components; and replace non-deterministic events between the plurality of containers with deterministic events in accordance with a predetermined set of responses to the non-deterministic events, wherein one of the plurality of containers is terminated in association with the predetermined set of responses. - View Dependent Claims (25, 26, 27)
-
Specification