IP Library Granted Patent US 12,316,489
Granted Patent B2
US 12,316,489 · App. 18/391,261 · Granted May 27, 2025

System and method for data replication using a single master failover protocol

Inventors: Timothy Andrew Rath (Des Moines, WA); Jakub Kulesza (Bellevue, WA); David Alan Lutz (Renton, WA)
Assignee: Amazon Technologies, Inc.
H04L41/0668G06F3/0617G06F3/0653G06F3/0659G06F3/0683G06F11/1425G06F11/1662G06F11/2028G06F11/2041G06F11/2094G06F11/2097H04L67/1097H04L67/51G06F11/2048G06F2201/825
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 12,316,489
App. No.
18/391,261
Granted
May 27, 2025
Kind
B2
Abstract

A system that implements a data storage service may store data on behalf of storage service clients. The system may maintain data in multiple replicas of various partitions that are stored on respective computing nodes in the system. The system may employ a single master failover protocol, usable when a replica attempts to become the master replica for a replica group of which it is a member. Attempting to become the master replica may include acquiring a lock associated with the replica group, and gathering state information from the other replicas in the group. The state information may indicate whether another replica supports the attempt (in which case it is included in a failover quorum) or stores more recent data or metadata than the replica attempting to become the master (in which case synchronization may be required). If the failover quorum includes enough replicas, the replica may become the master.

Claims (31)

1. A system, comprising:

one or more processors and corresponding memory configured to implement a plurality of replicas that collectively form a replica group, wherein the plurality of replicas store data on respective computing nodes of a plurality of computing nodes that collectively implement a data store;

wherein the data store is configured to:

detect a change in membership of the replica group;

determine, based at least in part on the change in membership of the replica group detected by the data store, a corresponding update to a quorum requirement used to perform access requests to the data at the replica group; and

perform an access request to the data at the replica group according to the updated quorum requirement.

2. The system of claim 1 , wherein the data store is further configured to communicate the update to the quorum requirement via a write to metadata replicated amongst the replica group.

3. The system of claim 2 , wherein the write to the metadata includes a membership version number, different than a prior membership version number used before the detected change in membership of the replica group.

4. The system of claim 1 , wherein the update to the quorum requirement causes a change to a write quorum used to perform write requests to the data.

5. The system of claim 1 , wherein the update to the quorum requirement causes a change to a read quorum used to perform read requests to the data.

6. The system of claim 1 , wherein the detected change in membership is an increase or decrease in a number of replicas in the replica group.

7. The system of claim 1 , wherein the data store is a Web based storage service that hosts the data as a non-relational database.

8. A method, comprising:

detecting, by a data store, a change in membership of a replica group, wherein the replica group comprises a plurality of replicas that store data on respective computing nodes of a plurality of computing nodes that collectively implement the data store;

determining, by the data store and based at least in part on the change in membership of the replica group detected by the data store, a corresponding update to a quorum requirement used to perform access requests to the data at the replica group; and

performing, by the data store, an access request to the data at the replica group according to the updated quorum requirement.

9. The method of claim 8 , further comprising communicating, by the data store, the update to the quorum requirement via a write to metadata replicated amongst the replica group.

10. The method of claim 9 , wherein the write to the metadata includes a membership version number, different than a prior membership version number used before the detected change in membership of the replica group.

11. The method of claim 8 , wherein the update to the quorum requirement causes a change to a write quorum used to perform write requests to the data.

12. The method of claim 8 , wherein the update to the quorum requirement causes a change to a read quorum used to perform read requests to the data.

13. The method of claim 8 , wherein the detected change in membership is an increase or decrease in a number of replicas in the replica group.

14. The method of claim 8 , wherein the data store is a Web based storage service that hosts the data as a non-relational database.

15. One or more non-transitory computer-readable storage media storing program instructions that, when executed on or across one or more computing devices, cause the one or more computing devices to implement:

detecting, by a data store, a change in a membership of a replica group, wherein the replica group comprises a plurality of replicas that store data on respective computing nodes of a plurality of computing nodes that collectively implement the data store;

determining, by the data store and based at least in part on the change in membership of the replica group, a corresponding update to a quorum requirement used to perform access requests to the data at the replica group; and

performing, by the data store, an access request to the data at the replica group according to the updated quorum requirement.

16. The one or more non-transitory computer-readable storage media of claim 15 , storing further instructions that when executed on or across the one or more computing devices, cause the one or more computing devices to further implement communicating, by the data store, the update to the quorum requirement via a write to metadata replicated amongst the replica group.

17. The one or more non-transitory computer-readable storage media of claim 16 , wherein the write to the metadata includes a membership version number, different than a prior membership version number used before the detected change in membership of the replica group.

18. The one or more non-transitory computer-readable storage media of claim 15 , wherein the update to the quorum requirement causes a change to a write quorum used to perform write requests to the data.

19. The one or more non-transitory computer-readable storage media of claim 15 , wherein the update to the quorum requirement causes a change to a read quorum used to perform read requests to the data.

20. The one or more non-transitory computer-readable storage media of claim 15 , wherein the detected change in membership is an increase or decrease in a number of replicas in the replica group.

Continuity (7)
Continuation 17811519 · Jul 8, 2022
Continuation 16833334 · Mar 27, 2020
Continuation 16024502 · Jun 29, 2018
Continuation 15179812 · Jun 10, 2016
Continuation 14834392 · Aug 24, 2015
Continuation 13352326 · Jan 17, 2012
Related Publication 20240205073A1 · Jun 20, 2024
References Cited (113)
US 5261085A · Lamport · 1993 [cited by applicant]
US 5734816A · Niijima et al. · 1998 [cited by applicant]
US 5764877A · Lomet et al. · 1998 [cited by applicant]
US 5878434A · Draper et al. · 1999 [cited by applicant]
US 6014669A · Slaughter et al. · 2000 [cited by applicant]
US 6061740A · Ferguson et al. · 2000 [cited by applicant]
US 6101508A · Wolff · 2000 [cited by applicant]
US 6105099A · Freitas et al. · 2000 [cited by applicant]
US 6163855A · Shrivastava et al. · 2000 [cited by applicant]
US 7194652B2 · Zhou et al. · 2007 [cited by applicant]
US 7430740B1 · Molloy et al. · 2008 [cited by applicant]
US 7478263B1 · Kownacki · 2009 [cited by examiner]
US 7496782B1 · Kownacki · 2009 [cited by applicant]
US 7584174B2 · Blanco · 2009 [cited by applicant]
US 7716180B2 · Vermeulen et al. · 2010 [cited by applicant]
US 7779010B2 · McGarvey · 2010 [cited by applicant]
US 7801912B2 · Ransil et al. · 2010 [cited by applicant]
US 8301593B2 · Hoffmann et al. · 2012 [cited by applicant]
US 8386540B1 · McAlister et al. · 2013 [cited by applicant]
US 8620862B2 · Holenstein · 2013 [cited by applicant]
US 8719225B1 · Rath et al. · 2014 [cited by applicant]
US 8723517B2 · Takahashi · 2014 [cited by applicant]
US 8732517B1 · Stefani et al. · 2014 [cited by applicant]
US 8843441B1 · Rath et al. · 2014 [cited by applicant]
US 8930312B1 · Rath et al. · 2015 [cited by applicant]
US 9052831B1 · Stefani et al. · 2015 [cited by applicant]
US 9069827B1 · Rath et al. · 2015 [cited by applicant]
US 9116862B1 · Rath et al. · 2015 [cited by applicant]
US 9367252B2 · Rath et al. · 2016 [cited by applicant]
US 9489434B1 · Rath · 2016 [cited by applicant]
US 9984140B1 · Sukumaran · 2018 [cited by applicant]
US 10496664B2 · Rath et al. · 2019 [cited by applicant]
US 10496667B2 · Rath · 2019 [cited by applicant]
US 10608870B2 · Rath et al. · 2020 [cited by applicant]
US 10929240B2 · Rath et al. · 2021 [cited by applicant]
US 11120044B2 · Rath et al. · 2021 [cited by applicant]
US 11388043B2 · Rath et al. · 2022 [cited by applicant]
US 20020016188A1 · Gamache et al. · 2002 [cited by applicant]
US 20020161889A1 · Gamache et al. · 2002 [cited by applicant]
US 20030001446A1 · Bennett et al. · 2003 [cited by applicant]
US 20030014462A1 · Bennett et al. · 2003 [cited by applicant]
US 20030078946A1 · Costello et al. · 2003 [cited by applicant]
US 20030220935A1 · Vivian et al. · 2003 [cited by applicant]
US 20040123180A1 · Soejima et al. · 2004 [cited by applicant]
US 20040220931A1 · Guthridge et al. · 2004 [cited by applicant]
US 20040243692A1 · Arnold et al. · 2004 [cited by applicant]
US 20050005200A1 · Matena · 2005 [cited by examiner]
US 20050021567A1 · Holenstein et al. · 2005 [cited by applicant]
US 20050086384A1 · Ernst · 2005 [cited by applicant]
US 20050198359A1 · Basani et al. · 2005 [cited by applicant]
US 20050283644A1 · Lorch et al. · 2005 [cited by applicant]
US 20060190243A1 · Barkai et al. · 2006 [cited by applicant]
US 20060253504A1 · Lee et al. · 2006 [cited by applicant]
US 20070124380A1 · Carr et al. · 2007 [cited by applicant]
US 20070168336A1 · Ransil et al. · 2007 [cited by applicant]
US 20070234108A1 · Cox · 2007 [cited by examiner]
US 20070239767A1 · Singh · 2007 [cited by applicant]
US 20070239790A1 · Cattell et al. · 2007 [cited by applicant]
US 20080005196A1 · Beck · 2008 [cited by applicant]
US 20080063165A1 · Gallant · 2008 [cited by applicant]
US 20080154980A1 · Lorenz et al. · 2008 [cited by applicant]
US 20080288646A1 · Hasha et al. · 2008 [cited by applicant]
US 20080294648A1 · Lin et al. · 2008 [cited by applicant]
US 20080301200A1 · Doty et al. · 2008 [cited by applicant]
US 20090019098A1 · Gunda · 2009 [cited by examiner]
US 20090119346A1 · Lu et al. · 2009 [cited by applicant]
US 20090138531A1 · Horii · 2009 [cited by applicant]
US 20090172782A1 · Taglienti et al. · 2009 [cited by applicant]
US 20090300408A1 · Ash et al. · 2009 [cited by applicant]
US 20100005124A1 · Wagner · 2010 [cited by applicant]
US 20100106813A1 · Voutilainen · 2010 [cited by examiner]
US 20100114826A1 · Voutilainen et al. · 2010 [cited by applicant]
US 20100114976A1 · Castellanos et al. · 2010 [cited by applicant]
US 20100131795A1 · Hirakawa et al. · 2010 [cited by applicant]
US 20100131801A1 · Baleani et al. · 2010 [cited by applicant]
US 20100162383A1 · Linden et al. · 2010 [cited by applicant]
US 20100180146A1 · Rousseau · 2010 [cited by examiner]
US 20100205227A1 · Weissman et al. · 2010 [cited by applicant]
US 20100281027A1 · Duan et al. · 2010 [cited by applicant]
US 20110022879A1 · Chavda et al. · 2011 [cited by applicant]
US 20110041006A1 · Fowler · 2011 [cited by applicant]
US 20110055156A1 · Roberts et al. · 2011 [cited by applicant]
US 20110083046A1 · Andrade et al. · 2011 [cited by applicant]
US 20110099342A1 · Ozdemir · 2011 [cited by applicant]
US 20110161335A1 · Dash et al. · 2011 [cited by applicant]
US 20110184915A1 · Wu et al. · 2011 [cited by applicant]
US 20110225120A1 · Cooper et al. · 2011 [cited by applicant]
US 20110239044A1 · Kumar · 2011 [cited by examiner]
US 20110295796A1 · Muhunthan · 2011 [cited by examiner]
US 20110307736A1 · George et al. · 2011 [cited by applicant]
US 20120011394A1 · Maki et al. · 2012 [cited by applicant]
US 20120011398A1 · Eckhardt et al. · 2012 [cited by applicant]
US 20120030508A1 · Vivian et al. · 2012 [cited by applicant]
US 20120036237A1 · Hasha et al. · 2012 [cited by applicant]
US 20120042196A1 · Aron et al. · 2012 [cited by applicant]
US 20120166390A1 · Merriman et al. · 2012 [cited by applicant]
US 20120179791A1 · Little · 2012 [cited by applicant]
US 20120239616A1 · Cunningham et al. · 2012 [cited by applicant]
US 20120297236A1 · Ziskind et al. · 2012 [cited by applicant]
US 20120297243A1 · He et al. · 2012 [cited by applicant]
US 20120330954A1 · Sivasubramanian et al. · 2012 [cited by applicant]
US 20130007506A1 · Jain et al. · 2013 [cited by applicant]
US 20130110781A1 · Golab et al. · 2013 [cited by applicant]
US 20130111261A1 · Dalton · 2013 [cited by examiner]
US 20210406279A1 · Rath et al. · 2021 [cited by applicant]
US 20220345358A1 · Rath et al. · 2022 [cited by applicant]
Rabinovich, Michael, Narain Gehani, and Alex Kononov. “Scalable update propagation in epidemic replicated databases.”, Advances in Database Technology—EDBT'96. Springer Berlin Heidelberg, 1996.205-222. pp. 207-222, 1996. [cited by applicant]
Bhide, Anupam, et al. “An efficient scheme for providing high availability.” ACM SIGMOD Record. vol. 21. No. 2. ACM, 1992, pp. 236-245. [cited by applicant]
Kumar, Puneet. “Coping with conflicts in an optimistically replicated file system.” Management of Replicated Data, 1990, pp. 60-64. [cited by applicant]
“Windows Azure Table,” Jai Haridas, Niranjan Nilakantan, Brad Calder, May 2009, pp. 1-42. [cited by applicant]
“Dynamo: Amazon's Highly Available Key-value Store,” Giuseppe DeCandia, et al. Amazon.com, Oct. 14-17, 2007, ACM, pp. 205-220. [cited by applicant]
“Windows Azure Storage—Essential Cloud Storage Services,” Brad Calder, Microsoft Corporation, PDC2008, pp. 1-64. [cited by applicant]
Wool, “Quorum Systems in Replicated Databases: Science or Fiction?,” Bulletin of the IEEE Computer Society Technical Committee on Data Engineering, vol. 21 No. 4, pp. 3-11, Dec. 1998. [cited by applicant]