Episodic coordination model for distributed applications

US9553929B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9553929-B2
Application numberUS-201514659203-A
CountryUS
Kind codeB2
Filing dateMar 16, 2015
Priority dateJun 1, 2011
Publication dateJan 24, 2017
Grant dateJan 24, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

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.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer system, comprising: a processor; and system memory storing instructions for managing messages exchanges between a sender and a destination that, when executed by the processor as part of the sending of an outgoing message, cause the computer system to: move to a sending state from an idle state maintained when the outgoing message is identified as ready to send; send the outgoing message to the destination while in the sending state; wait in the sending state until an acknowledgement message is received from the destination, wherein the acknowledgement message indicates that the destination has received the outgoing message; move to a confirming state from the sending state, without returning to the idle state, when the acknowledgement message is received; send a confirmation message to the destination while in the confirming state, wherein the confirmation message indicates that the sender has received the acknowledgment message; wait in the confirming state until a confirmation-acknowledgement message is received from the destination, wherein the confirmation-acknowledgement message indicates that the destination has received the confirmation message; and move to the idle state from the confirming state when the confirmation-acknowledgement message is received. 2. The computer system of claim 1 , wherein the instructions further cause the computer system to: assign a unique identifier to the outgoing message; and wherein an acknowledgement message, confirmation message, and confirmation-acknowledgement message associated with the outgoing message all comprise the unique identifier. 3. The computer system of claim 1 , wherein the instructions further cause the computer system to: determine that the acknowledgement message has not been received from the destination; and resend the outgoing message to the destination. 4. The computer system of claim 3 , wherein the outgoing message is resent to the destination when the acknowledgement message has not been received within a predetermined period or when a problem is identified on a communication channel. 5. The computer system of claim 1 , wherein the instructions further cause the computer system to: determine that the confirmation-acknowledgement message has not been received from the destination; and resend the confirmation message to the destination. 6. The computer system of claim 5 , wherein the confirmation message is resent to the destination when the acknowledgement message has not been received within a predetermined period or when a problem is identified on a communication channel. 7. The computer system of claim 1 , wherein the sender and destination are separate instances of an application or program. 8. The computer system of claim 1 , wherein the instructions further cause the computer system to: coordinate a status of the idle, sending, and confirming state with a status of an application state. 9. A computer system, comprising: a processor; and system memory storing instructions for managing messages exchanges between a sender and a destination that, when executed by the processor as part of the receiving of an incoming message, cause the computer system to: identify events at the processor running an instance of program code, the processor monitor an application state associated with the instance; compare an event to the application state; when the event matches the application state, execute an episode of execution of the instance, wherein the event is receiving of the incoming message; move to a receiving state from an idle state maintained when the incoming message is received from the sender; send an acknowledgement message to the sender while in the receiving state, wherein the acknowledgement message indicates that the destination has received the incoming message; wait in the receiving state until a confirmation message is received from the sender, wherein the confirmation message indicates that the sender has received the acknowledgment message; move to the idle state from the receiving state when the confirmation message is received; and send a confirmation-acknowledgement message to the sender, wherein the confirmation-acknowledgement message indicates that the destination has received the confirmation message. 10. The computer system of claim 9 , wherein the instructions further cause the computer system to: extract a unique identifier from the incoming message; and wherein an acknowledgement message, confirmation message, and confirmation-acknowledgement message associated with the incoming message all comprise the unique identifier. 11. The computer system of claim 9 , wherein the instructions further cause the computer system to: determine that the confirmation message has not been received from the sender; and resend the acknowledgement message to the sender. 12. The computer system of claim 11 , wherein the acknowledge message is resent to the destination when the confirmation message has not been received within a predetermined period or when a problem is identified on a communication channel. 13. The computer system of claim 9 , wherein the sender and destination are separate instances of an application or program. 14. The computer system of claim 9 , wherein the instructions further cause the computer system to: coordinate a status of the idle and receiving state with a status of an application state. 15. A method, comprising: identifying events at a processor running an instance of program code, the processor monitoring an application state associated with the instance; comparing an event to the application state; and when the event matches the application state, executing an episode of execution of the instance, wherein the event is receiving an incoming message at the processor, and wherein the processor is configured to: move to a receiving state from an idle state maintained when the incoming message is received; send an acknowledgement message while in the receiving state, wherein the acknowledgement message indicates receipt of the incoming message; wait in the receiving state until a confirmation message is received, wherein the confirmation message indicates receipt of the acknowledgment message; move to the idle state from the receiving state when the confirmation message is received; and send a confirmation-acknowledgement message to the sender, wherein the confirmation-acknowledgement message indicates receipt of the confirmation message. 16. The method of claim 15 , further comprising: saving the updated application state to a memory. 17. The method of claim 15 , further comprising: monitoring additional events; comparing the additional events to the specified new input; and when an additional event matches the specified new input, executing another episode of the instance. 18. The method of claim 15 , wherein comparing the event to the application state comprises: matching a message to an application resumption point. 19. The method of claim 18 , wherein the application resumption point is used by the application to determine whether it is ready for execution.

Assignees

Inventors

Classifications

  • by repeating transmission, e.g. Verdan system {(H04L1/1858 and H04L1/189 take precedence)} · CPC title

  • Barrier synchronisation · CPC title

  • Message passing systems or structures, e.g. queues · CPC title

  • Event management; Broadcasting; Multicasting; Notifications · CPC title

  • Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9553929B2 cover?
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 inst…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification H04L67/1095. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Jan 24 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).