Coordinating updates to replicated data
View Patent ↗Techniques for coordinating updates to replicated data are disclosed. For example, in a system comprised of a plurality of nodes, a method for maintaining consistent copies of data across the nodes comprises the following steps. A copy of an object o 1 is maintained by a plurality of nodes. In response to a request r 1 to update a copy of object o 1 , a message is sent to at least some of the plurality of nodes instructing a node receiving the message to invalidate its copy of object o 1 . In response to a node n 1 receiving an invalidation message arising from r 1 wherein n 1 is processing another request r 2 to update object o 1 , requests r 1 and r 2 are coordinated to prevent the requests from causing conflicting updates or invalidations.
1. In a system comprised of a plurality of nodes, a method for storing consistent copies of objects across said plurality of nodes comprising steps of:
processing a plurality of requests to update the objects;
associating times with said plurality of requests;
storing a copy of an object o 1 by at least two of said plurality of nodes;
a first node n 0 receiving a request r 1 to update a copy of the object o 1 , wherein the request r 1 is associated with a time t 1 ;
the node n 0 sending an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;
a second node n 1 receiving the message m 1 ;
in response to the node n 1 being aware of another update request r 2 to the object o 1 , wherein the request r 2 is associated with a time t 2 , the node n 1 processing the message m 1 based on the time t 1 and the time t 2 ;
in response to the node n 0 receiving a negative reply to the message m 1 , the system aborting its attempt to update the object o 1 according to the request r 1 ; and
in response to the node n 0 receiving positive replies from each node to which the node n 0 sent the message m 1 , the system updating the object o 1 according to the request r 1 .
2. The method of claim 1 , wherein the node n 1 sends a negative response to the node n 0 in response to the time t 2 being after the time t 1 .
3. The method of claim 1 , wherein the node n 1 sends a positive response to the node n 0 in response to the time t 1 being after the time t 2 .
4. The method of claim 3 , wherein the node n 1 invalidates a copy of the object of that the node n 1 is storing.
5. The method of claim 1 , wherein the node n 1 is processing the request r 2 at the time the node n 1 receives the message m 1 .
6. The method of claim 1 , wherein the node n 1 has finished processing the request r 2 at the time the node n 1 receives the message m 1 .
7. The method of claim 2 , wherein the system updates the object o 1 according to the request r 2 .
8. The method of claim 1 , further comprising a step of:
in response to the system aborting its attempt to update the object of in response to the request r 1 , the system attempting again to update the object o 1 according to the request r 1 .
9. The method of claim 1 , further comprising steps of:
maintaining a log of updates to the object o 1 ; and
using said log to undo at least one update to the object o 1 .
10. The method of claim 1 , further comprising steps of:
maintaining statistics on frequencies with which objects are accessed and updated; and
in response to the object o 1 having a high ratio of accesses to updates, propagating a new value of the object o 1 to at least one remote node.
11. The method of claim 1 , further comprising steps of:
exchanging periodic heartbeat messages between said nodes to maintain availability information; and
in response to a node failing to respond to a heartbeat message after a time period has elapsed, declaring said node failed.
12. The method of claim 11 , further comprising a step of:
exchanging lists of failed nodes to ensure nodes have a similar notion of which nodes have failed.
13. The method of claim 1 , further comprising a step of:
in response to a node failing to respond to an invalidation message after a time period has elapsed, declaring said node failed.
14. In a system comprised of a plurality of nodes, a method for storing consistent copies of objects across said plurality of nodes comprising steps of:
processing a plurality of requests to update the objects;
associating times with said plurality of requests;
storing a copy of an object o 1 by at least two of said plurality of nodes;
a first node n 0 receiving a request r 1 to update a copy of the object o 1 , wherein the request r 1 is associated with a time t 1 ;
the node n 0 sending an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;
a second node n 1 receiving the message m 1 ;
in response to the node n 1 being aware of another update request r 2 to the object o 1 which the system is currently handling, wherein the request r 2 is associated with a time t 2 , the node n 1 processing the message m 1 based on the time t 1 and the time t 2 , and the system merging content from both the request r 1 and the request r 2 to create a new value for the object o 1 .
15. The method of claim 14 , further comprising steps of:
maintaining a log of updates to the object o 1 ; and
using said log to undo at least one update to the object o 1 .
16. The method of claim 14 , further comprising steps of:
maintaining statistics on frequencies with which objects are accessed and updated; and
in response to the object o 1 having a high ratio of accesses to updates, propagating a new value of the object o 1 to at least one remote node.
17. The method of claim 14 , further comprising steps of:
exchanging periodic heartbeat messages between said nodes to maintain availability information; and
in response to a node failing to respond to a heartbeat message after a time period has elapsed, declaring said node failed.
18. The method of claim 17 , further comprising a step of:
exchanging lists of failed nodes to ensure nodes have a similar notion of which nodes have failed.
19. The method of claim 14 , further comprising a step of:
in response to a node failing to respond to an invalidation message after a time period has elapsed, declaring said node failed.
20. In a system comprised of a plurality of nodes, an apparatus for storing consistent copies of objects across said plurality of nodes, comprising at a first node n 1 of the plurality of nodes:
a memory; and
a processor coupled to the memory and configured to:
receive a request r 1 to update a copy of an object o 1 , wherein the request r 1 is associated with a time t 1 and wherein the copy of the object o 1 is stored by at least two of said plurality of nodes;
send an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;
wherein a second node n 1 receives the message m 1 ;
in response to the node n 1 being aware of another update request r 2 to the object o 1 , wherein the request r 2 is associated with a time t 2 , the node n 1 processes the message m 1 based on the time t 1 and the time t 2 ; in response to the node n 0 receiving a negative reply to the message m 1 , the system aborts its attempt to update the object o 1 according to the request r 1 ; and, in response to the node n 0 receiving positive replies from each node to which the node n 0 sent the message m 1 , the system updates the object o 1 according to the request r 1 .
21. In a system comprised of a plurality of nodes, a computer program product for storing consistent copies of objects across said plurality of nodes, the computer program product comprising:
a computer readable storage medium associated with a first node n 0 of the plurality of nodes;
a first program instruction to receive a request r 1 to update a copy of an object o 1 , wherein the request r 1 is associated with a time t 1 and wherein the copy of the object o 1 is stored by at least two of said plurality of nodes; and
a second program instruction to send an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;
wherein a second node n 1 receives the message m 1 ; in response to the node n 1 being aware of another update request r 2 to the object o 1 , wherein the request r 2 is associated with a time t 2 , the node n 1 processes the message m 1 based on the time t 1 and the time t 2 ; in response to the node n 0 receiving a negative reply to the message m 1 , the system aborts its attempt to update the object o 1 according to the request r 1 ; and, in response to the node n 0 receiving positive replies from each node to which the node n 0 sent the message m 1 , the system updates the object o 1 according to the request r 1 .
22. In a system comprised of a plurality of nodes, an apparatus for storing consistent copies of objects across said plurality of nodes, comprising at a first node n 0 of the plurality of nodes:
a memory; and
a processor coupled to the memory and configured to:
receive a request r 1 to update a copy of an object o 1 , wherein the request r 1 is associated with a time t 1 and wherein the copy of the object o 1 is stored by at least two of said plurality of nodes;
send an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;
wherein a second node n 1 receives the message m 1 ; and, in response to the node n 1 being aware of another update request r 2 to the object o 1 which the system is currently handling, wherein the request r 2 is associated with a time t 2 , the node n 1 processing the message m 1 based on the time t 1 and the time t 2 , and the system merges content from both the request r 1 and the request r 2 to create a new value for the object o 1 .
23. In a system comprised of a plurality of nodes, a computer program product for storing consistent copies of objects across said plurality of nodes, the computer program product comprising:
a computer readable storage medium associated with a first node n 0 of the plurality of nodes;
a first program instruction to receive a request r 1 to update a copy of an object o 1 , wherein the request r 1 is associated with a time t 1 and wherein the copy of the object o 1 is stored by at least two of said plurality of nodes; and
a second program instruction to send an invalidation message m 1 including the time t 1 to at least one of said plurality of nodes;
wherein a second node n 1 receives the message m 1 ; and, in response to the node n 1 being aware of another update request r 2 to the object o 1 which the system is currently handling, wherein the request r 2 is associated with a time t 2 , the node n 1 processing the message m 1 based on the time t 1 and the time t 2 , and the system merges content from both the request r 1 and the request r 2 to create a new value for the object o 1 .