US2022335034A1PendingUtilityA1

Multi-master architectures for distributed databases

72
Assignee: MICROSOFT TECHNOLOGY LICENSING LLCPriority: May 7, 2018Filed: Jun 30, 2022Published: Oct 20, 2022
Est. expiryMay 7, 2038(~11.8 yrs left)· nominal 20-yr term from priority
H04L 41/0896G06F 16/2336G06F 16/219H04L 47/72H04L 41/5019H04L 67/1029G06F 16/211G06F 11/2007G06F 16/9027G06F 16/2255H04L 41/5022G06F 11/2056G06F 16/2272G06F 9/5077G06F 11/2023H04L 67/1012G06F 16/27G06F 16/2322G06F 16/258G06F 2201/80G06F 16/2452H04L 67/1034G06F 2209/505H04L 41/5009G06F 16/2246G06F 16/252G06F 9/5061H04L 47/762G06F 16/2315G06F 16/184G06F 16/903G06F 16/2329H04L 67/565G06F 16/9024G06F 16/28H04L 41/5032H04L 67/1008G06F 16/273H04L 41/0803H04L 69/24G06F 9/52G06F 9/468G06F 16/2365H04L 47/83
72
PatentIndex Score
0
Cited by
0
References
0
Claims

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-modified
What 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.