Multi-master architectures for distributed databases
Abstract
Data services for workloads are often provided with a service level agreement specifying various performance guarantees (e.g., latency, availability, scalability, and consistency). Single-master architectures, in which updates t the data set are constrained to a single server, may limit the fulfillment of some performance guarantees. Presented herein are multi-master architectures, in which the server set is partitioned into at least two masters are permitted to update the data set and at least one non-master that is not permitted to update the data set. Non-masters that receive a request to update the data set forward the request to a master server for application to the data set. A master that receives the request applies it to the data set and propagates the update to other master and non-master servers. Conflicting updates may be resolved through a variety of conflict resolution techniques, optionally designating one master server as a conflict resolution server.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method of configuring a server from a server set, the method comprising:
receiving a designation of the server for a data item of a data set, the designation causing the server to be designated as a master having permission to update the data item, wherein a second server from the server set has also been designated as a second master that has permission to update the data item; receiving a request to update the data item of the data set; and based on receiving the request to update the data item and based on the server being designated as a master:
updating the data set according to the request; and
propagating the update to the second server of the server set also designated as the second master.
2 . The method of claim 1 , wherein receiving the request to update the data item of the data set includes receiving a forwarded request from another server of the server set that originally received the request and forwarded the request based on the another server being designated as a non-master that does not have permission to update the data item, a designation of the another server including an identification of the server as one of a plurality of masters having permission to update the data item.
3 . The method of claim 1 , wherein the designation as a master further identifies a propagation subset of servers of the server set, and wherein the method further comprises propagating the update further comprises propagating the update specifically to the propagation subset of the server set.
4 . The method of claim 1 , wherein the designation of the server further comprises a designation of the server as a master of the data set based on a master condition being satisfied.
5 . The method of claim 4 , wherein the master condition comprises a master period within a time cycle, and wherein the designation of the server as a master occurs only within the master period of the time cycle.
6 . The method of claim 1 ,
wherein the designation as a master is a designation as an auxiliary master, wherein updating the data set according to the request and propagating the update to the second server of the server set also designated as the second master occurs when a load of the server designated as an auxiliary master exceeds a load threshold, and wherein the method includes forwarding the request to the second server having also been designated as the second master when the load of the server designated as an auxiliary master does not exceed a load threshold.
7 . The method of claim 1 , further comprising:
detecting a failure of the server designated as the master; and in response to detecting the failure of the first server, initiating a transition of the designation of the server as the master to a failover master of the data set.
8 . The method of claim 1 , wherein the designation as the master further identifies the server as a conflict resolution master of the data set, and wherein the method further comprises:
identifying a data version conflict involving at least two updates of the data set; selecting, from a conflict resolution technique set, a conflict resolution technique that evaluates the at least two updates to identify a data version conflict resolution outcome; invoking the conflict resolution technique set to generate the data version conflict resolution outcome; and propagating the data version conflict resolution outcome to other masters of the data set.
9 . A system, comprising:
at least one processor; memory in electronic communication with the at least one processor; and instructions stored in the memory, the instructions being executable by the at least one processor to:
receive a designation of a server of a server set for a data item of a data set, the designation causing the server to be designated as a master having permission to update the data item, wherein a second server from the server set has also been designated as a second master that has permission to update the data item;
receive a request to update the data item of the data set; and
based on receiving the request to update the data item and based on the server being designated as a master:
update the data set according to the request; and
propagate the update to the second server of the server set also designated as the second master.
10 . The system of claim 9 , wherein receiving the request to update the data item of the data set includes receiving a forwarded request from another server of the server set that originally received the request and forwarded the request based on the another server being designated as a non-master that does not have permission to update the data item, a designation of the another server including an identification of the server as one of a plurality of masters having permission to update the data item.
11 . The system of claim 9 , wherein the designation as a master further identifies a propagation subset of servers of the server set, and further comprising instructions being executable by the at least one processor to propagate the update further comprises propagating the update specifically to the propagation subset of the server set.
12 . The system of claim 9 , wherein the designation of the server further comprises a designation of the server as a master of the data set based on a master condition being satisfied.
13 . The system of claim 12 , wherein the master condition comprises a master period within a time cycle, and wherein the designation of the server as a master occurs only within the master period of the time cycle.
14 . The system of claim 9 ,
wherein the designation as a master is a designation as an auxiliary master, and wherein updating the data set according to the request and propagating the update to the second server of the server set also designated as the second master occurs when a load of the server designated as an auxiliary master exceeds a load threshold, and further comprising instructions being executable by the at least one processor to forward the request to the second server having also been designated as the second master when the load of the server designated as an auxiliary master does not exceed a load threshold.
15 . The system of claim 9 , further comprising instructions being executable to:
detect a failure of the server designated as the master; and in response to detecting the failure of the first server, initiate a transition of the designation of the server as the master to a failover master of the data set.
16 . The system of claim 9 , wherein the designation as the master further identifies the server as a conflict resolution master of the data set, and further comprising instructions being executable by the at least one processor to:
identify a data version conflict involving at least two updates of the data set; select, from a conflict resolution technique set, a conflict resolution technique that evaluates the at least two updates to identify a data version conflict resolution outcome; invoke the conflict resolution technique set to generate the data version conflict resolution outcome; and propagate the data version conflict resolution outcome to other masters of the data set.
17 . A non-transitory computer readable medium storing instructions thereon that, when executed by at least one processor, causes a computing device to:
receive a designation of a server of a server set for a data item of a data set, the designation causing the server to be designated as a master having permission to update the data item, wherein a second server from the server set has also been designated as a second master that has permission to update the data item; receive a request to update the data item of the data set; based on receiving the request to update the data item and based on the server being designated as a master:
update the data set according to the request; and
propagate the update to the second server of the server set also designated as the second master.
18 . The non-transitory computer readable medium of claim 17 , wherein receiving the request to update the data item of the data set includes receiving a forwarded request from another server of the server set that originally received the request and forwarded the request based on the another server being designated as a non-master that does not have permission to update the data item, a designation of the another server including an identification of the server as one of a plurality of masters having permission to update the data item.
19 . The non-transitory computer readable medium of claim 17 , wherein the designation of the server further comprises a designation of the server as a master of the data set based on a master condition being satisfied, wherein the master condition comprises a master period within a time cycle, and wherein the designation of the server as a master occurs only within the master period of the time cycle.
20 . The non-transitory computer readable medium of claim 17 ,
wherein the designation as a master is a designation as an auxiliary master, wherein updating the data set according to the request and propagating the update to the second server of the server set also designated as the second master occurs when a load of the server designated as an auxiliary master exceeds a load threshold, and further comprising instructions that, when executed by the at least one processor, causes the computing device to forward the request to the second server having also been designated as the second master when the load of the server designated as an auxiliary master does not exceed a load threshold.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.