IP Library Granted Patent US 8,984,531
Granted Patent B2
US 8,984,531 · App. 13/150,547 · Granted Mar 17, 2015

Episodic coordination model for distributed applications

Inventors: John Taylor (Bellevue, WA); Justin Brown (Seattle, WA); Kenneth Wolf (Seattle, WA); Edmund Pinto (Duvall, WA); Stefan Batres (Sammamish, WA); Nathan Talbert (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/06G06F8/20G06F9/542
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,984,531
App. No.
13/150,547
Granted
Mar 17, 2015
Kind
B2
Abstract

An episodic execution of program instances and a coordinated message exchange protocol are combined to achieve eventual consistency in the communication between nodes of a distributed system. Program instances run in episodic loops that are triggered by defined input events and that generate checkpoints. The checkpoints indicate when messages are to be sent from the one instance to another instance or other device. The coordinated message exchange protocol allows the instance to send a message to a receiver, to acknowledge that the message has been received, and to confirm the acknowledgement to the receiver.

Claims (51)

1. A method, comprising:

completing an episode of execution of a first instance of first program code running on a processor;

running the episode of execution until a checkpoint state is achieved;

recording checkpoint data;

proceeding to a send and confirm state;

identifying one or more messages to be sent from the first instance to a second instance of second program code;

sending a first message from the first instance to the second instance;

receiving a second message from the second instance, the second message comprising an acknowledgement indicating that the first message was received at the second instance;

sending a third message from the first instance to the second instance, the third message comprising a confirmation indicating that the second message was received at the first instance;

receiving a fourth message from the second instance, the fourth message comprising a confirmation-acknowledgement indicating that the third message was received at the second instance;

compare additional events to a specified new input; and

when an additional event matches the specified new input, execute another episode of the instance.

2. The method of claim 1 , further comprising:

generating a message identifier for the first message;

including the message identifier in the second, third, and fourth messages.

3. The method of claim 2 , further comprising:

associating the second message or the fourth message with the first message using the message identifier.

4. The method of claim 1 , further comprising:

identifying duplicate first messages or third messages at the second instance; and

discarding the duplicate messages.

5. The method of claim 1 , wherein if the second message or fourth message are not received within a predetermined time, then resending the first message or the third message.

6. The method of claim 1 , wherein the first message is sent to the second instance on an external system that is separate from the processor running the first instance.

7. The method of claim 6 , wherein the external system is a database, a queue, or a buffer.

8. The method of claim 1 , further comprising:

entering a sending state in a message-sending protocol when messages to be sent are identified at the completion of the episode of execution; and

sending the first message while in the sending state.

9. The method of claim 8 , further comprising:

waiting in the sending state after sending the first message and before receiving the second message.

10. The method of claim 9 , further comprising:

moving to a confirming state in the message-sending protocol after receiving the second message.

11. The method of claim 10 , further comprising:

sending the third message while in the confirming state; and

waiting in the confirming state after sending the third message and before receiving the fourth message.

12. The method of claim 11 , further comprising:

moving to an idle state after receiving the fourth message.

13. The method of claim 1 , wherein the first, second, third, and fourth messages operate as a four-way handshake between the first instance and second instance.

14. The method of claim 1 , wherein the first program code and the second program code are the same, and the first instance and the second instance are separate instances of the same program code.

15. A computer system, comprising:

an instance processor; and

system memory storing instructions for managing an episode of execution of a first instance of first program code that, when executed by the instance processor, cause the instance processor to:

run the episode of execution to until a checkpoint state is achieved;

record checkpoint data;

proceed to a send and confirm state;

identify one or more messages to be sent by the processor to a second instance of second program code;

send a first message from the first instance to the second instance;

receive a second message from the second instance, the second message comprising an acknowledgement indicating that the first message was received at the second instance;

send a third message from the first instance to the second instance, the third message comprising a confirmation indicating that the second message was received at the first instance;

receive a fourth message from the second instance, the fourth message comprising a confirmation-acknowledgement indicating that the third message was received at the second instance;

compare additional events to a specified new input; and

when an additional event matches the specified new input, execute another episode of the instance.

16. The system of claim 15 , wherein the check point comprises a set of outputs, a set of application resumption points, and an updated application state.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2011
From: TAYLOR, JOHN; BROWN, JUSTIN; WOLF, KENNETH; PINTO, EDMUND; BATRES, STEFAN; TALBERT, NATHAN
To: MICROSOFT CORPORATION
Reel/Frame 026370/0188 →
Continuity (1)
Related Publication 20120311609A1 · Dec 6, 2012