Leadership lease protocol for data replication groups
Summary by NHIP
Master Node Lease Protocol
The method determines a master node in a data replication group and sets its state to leased. It transmits heartbeats, suspends transmission if a quorum fails within a heartbeat interval, sets the state to expiring if no responses arrive within a longer wait interval, and commences a new election after a safety interval exceeding the wait interval.
Claim Score by NHIP
Abstract
Data replication groups may be used to store data in a distributed computing environment. A data replication group may include a set of nodes executing a consensus protocol to maintain data durably. In order to increase efficiency and performance of the data replication, a particular node of the data replication group may be assigned the role of master node. The role of master node may be lease in accordance with a consensus protocol. If the lease is not renewed within an interval of time election/selection of a new master node may be commenced.

Term
10.3 yearsleft in the term
Expires 17 January 2037, including 139 days of term adjustment.
- Priority and filed
- Granted
- Today
- Expires
20 claims: 3 independent, 17 dependent
- 1A computer-implemented method, comprising:determining a particular node of a plurality of nodes of a data replication group has been elected as a master node and setting a current state to a leased state, the plurality of nodes implementing a consensus protocol for replicating data across the plurality of nodes;transmitting, by the master node, heartbeat messages to individual nodes of the plurality of nodes;on a condition that responses to the heartbeat messages are not received by the master node from a quorum of the plurality of nodes within a heartbeat interval, suspending transmission of further heartbeat messages;on a condition that responses to the heartbeat messages are not received by the master node from a quorum of the plurality of nodes within a wait period, the wait interval being a period during which the master node waits to receive responses to pending heartbeat messages, the wait interval being greater than the heartbeat interval, setting the current state to an expiring state;andafter expiration of a safety interval, the safety interval being greater than the wait interval, commencing election of a new master node.
- 5Broadest claimClaim Score 45, average(NHIP)A system, comprising:one or more processors;andmemory that includes instructions that, as a result of being executed by the one or more processors, cause the system to: during a first interval, transmit a set of heartbeat messages to individual nodes of a plurality of nodes of a data replication group, the plurality of nodes implementing a consensus protocol, where a current state corresponds to a role of master node being leased;andin response to a failure to receive a set of responses to the set of heartbeat messages from a quorum of the plurality of nodes during a second interval: modify the current state such that the current state indicates that the role of master node is expiring and no longer transmits heartbeat messages;transmit, after a third interval, a set of election requests to the plurality of nodes.
- 13A set of one or more non-transitory computer-readable storage media having stored thereon executable instructions that, as a result of being executed by one or more processors of a computer system, cause the computer system to:transmit a set of messages to a plurality of nodes of a data replication group, the plurality of nodes implementing a consensus protocol including at least one node having a role of master node of the data replication group, wherein receipt of a response from a quorum of the plurality of nodes during a first interval results in a renewal of a lease;after not receiving a set of response to the set of messages from a quorum of the plurality of nodes within a second interval, indicate that the lease of the role of master node is expiring;andat the expiration of a third interval, select a node of the plurality of nodes to obtain the role of master node.
Independent claims3
101 paragraphs in 3 sections, as filed
BACKGROUND
Organizations invest in technologies that provide customers with access to computing resources. Such services provide access to computing and/or storage resources (e.g., storage devices providing either a block-level device interface or a web service interface) to customers or subscribers. Within multi-tier ecommerce systems, combinations of different types of resources may be allocated to customers and/or their applications, such as whole physical or virtual machines, CPUs, memory, network bandwidth, or I/O capacity. Block-level storage devices implemented as a storage service may be made accessible, for example, from one or more physical or virtual machines implemented by another service.
Computer systems that provide services to customers may employ various techniques to protect the computer systems from a number of service requests that could potentially overload the computer systems. Furthermore, these computer systems may also employ various techniques to preserve customer data and customer experience during periods when the computer systems are overloaded or even experiencing failures. In general, a computer system is considered to be in an “overloaded” state if it is not able to provide the expected quality of service for at least some portion of customer requests it receives. Common solutions applied by overloaded computer systems include denying service to customers. In addition to this “overloaded” scenario, computer systems may also experience failure, including critical failure, power failure, or network failure.
To protect customer data against failures, customer data is often replicated across different computer systems. However, creating consistent replicas of customer data across a plurality of computer systems requires additional resources and requires consensus on customer data across the plurality of computer systems. Additionally, there is increased cost and time required to provision computer systems to maintain replicas of customer data. While such systems may maintain the integrity of customer data and mitigate the risk of loss, there may be a reduction in customer experience and delay in customers obtaining their data.
BRIEF DESCRIPTION OF THE DRAWINGS
Various techniques will be described with reference to the drawings, in which:
<figref idref="DRAWINGS">FIG. 1</figref> illustrates an environment in which a set of nodes of a data replication group may be configured to execute an aspect of a lease protocol in accordance with at least one embodiment;
<figref idref="DRAWINGS">FIG. 2</figref> illustrates an environment in which a set of nodes of a data replication group may be configured to execute an aspect of a lease protocol in accordance with at least one embodiment;
<figref idref="DRAWINGS">FIG. 3</figref> illustrates an environment in which a set of nodes of a data replication group may be configured to execute an aspect of a lease protocol in accordance with at least one embodiment;
<figref idref="DRAWINGS">FIG. 4</figref> illustrates an environment in which a set of nodes of a data replication group may be configured to execute an aspect of a lease protocol in accordance with at least one embodiment;
<figref idref="DRAWINGS">FIG. 5</figref> illustrates an environment in which a set of nodes of a data replication group may be configured to execute an aspect of a lease protocol in accordance with at least one embodiment;
<figref idref="DRAWINGS">FIG. 6</figref> illustrates an environment in which a set of nodes of a data replication group may be configured to elect a new master node in accordance with at least one embodiment;
<figref idref="DRAWINGS">FIG. 7</figref> illustrates an environment in which a set of nodes of a data replication group may be configured to execute an aspect of a lease protocol in accordance with at least one embodiment;
<figref idref="DRAWINGS">FIG. 8</figref> illustrates an environment in which a replication group service may determine leadership information for nodes of a data replication group fleet in accordance with an embodiment;
<figref idref="DRAWINGS">FIG. 9</figref> shows a state diagram illustrating various aspects of a lease protocol implemented by a data replication group in accordance with an embodiment;
<figref idref="DRAWINGS">FIG. 10</figref> illustrates an environment in which a data replication group may exchange heartbeat messages in accordance with an embodiment;
<figref idref="DRAWINGS">FIG. 11</figref> shows an illustrative process which may be used to transmit a response to a heartbeat message in accordance with an embodiment;
<figref idref="DRAWINGS">FIG. 12</figref> illustrates an environment in which a set of nodes of a data replication group may be configured to execute a catchup algorithm in accordance with at least one embodiment; and
<figref idref="DRAWINGS">FIG. 13</figref> illustrates an environment in which various embodiments can be implemented.
DETAILED DESCRIPTION
In various examples described below, a lease protocol is used to ensure a graceful failover period between elections of master nodes in a data replication group. In distributed computing systems, data replication reduces the risk of failure and mitigates possible data loss in the case of system failure. In one example, a data replication group maintains metadata associated with a master-slave volume pair. In addition, due to the distrusted nature of the computing systems it may be advantageous to reduce the amount of chatter (e.g., the exchange of messages between the computing systems) required to replicate data. For example, the data replication group may exchange a number of messages in order to maintain the consistency and integrity of the data replicated across the nodes of the data replication group. This traffic may be in addition to other traffic traversing various networks in the distributed computing environment (e.g., customer traffic) and may consume valuable computing resources within the distributed computing environment. Therefore, it is advantageous to reduce the amount of traffic generated by the nodes of the data replication group.
The data replication group may consist of some number of nodes executed by one or more host computer systems, where the nodes implement a consensus protocol, such as Paxos, to enable consistent data replication between the nodes. Other examples of consensus protocols include lockstep protocols, proof of work protocols, blockchain protocols, distributed lock managers, and hashgraph consensus protocols. In general, implementing the consensus protocol by the data replication groups involves the nodes' election of a master node. In various protocols, the master node may also be referred to as a leader, proposer, distinguished leader, distinguished proposer, or other such delineation indicating the role and/or responsibility of the node (e.g., the node responsible for progressing the algorithm). In some examples, the master node is the only node that may generate proposals that may be accepted by the nodes of the data replication group and progress the algorithm. As described above, the data replication group may be associated with a particular computer system or storage system and may maintain the current state of that system. Progressing the algorithm includes receiving and recording updates to the current state of the system supported by the data replication group.
To provision data replication groups in this manner, the master node exchanges messages with the other nodes of the data replication group to check the status of the node and maintain leadership. The messages are referred to has heartbeat messages and ensure that a quorum of the nodes of the data replication group are available to progress the algorithm. In general, the heartbeat messages are subject to that same strong consistency and persistence requirements as other messages of the consensus protocol (e.g., a request to store data). However as described above, to maintain the strong consistency and persistence requirements for the heartbeat messages requires the exchange of multiple messages and may cause network congestion and degradation of service. For example, some implementations of the Paxos protocol require five rounds to establish strong consistency and persistence. If there are seven nodes in a data replication group, 35 messages are required to achieve the desired result of the heartbeat message. In addition a heartbeat message may be required periodically or aperiodically (e.g., every 10 seconds) to progress the algorithm.
To reduce the amount of network traffic and message exchange generated by the data replication groups, a lease protocol is used. The lease protocol utilizes three time intervals to ensure progression of the algorithm and graceful failover in the event of a restart or error. The first interval is a heartbeat interval which is an interval of time during which the master node's lease is valid. The master node, in order to maintain the role of master node, must renew the lease before the expiration of the heartbeat interval. The lease may be renewed by receiving a successful response to a heartbeat message described in greater detail below. The second interval is a wait interval which is an interval of time during which the master node may still renew the lease, but upon expiration of the interval the master node is no longer able to transmit heartbeat messages. This may ensure receipt of response to heartbeat messages that are delayed and prevent the data replication group from containing two or more master nodes. Finally, a safety interval is included which is an interval of time during which nodes are prevented from starting elections for a new master node. After expiration of the safety interval, nodes may commence election operations. In some embodiments, the heartbeat interval may be less than the wait interval which is less than or equal to the safety interval. During the heartbeat interval, if the master node receives response to the heartbeat message form a quorum of the nodes of the data replication group, the lease is considered renewed and the heartbeat message a success.
In the preceding and following description, various embodiments are described. For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the embodiments. However, it will also be apparent to one skilled in the art that the embodiments may be practiced without the specific details. Furthermore, well-known features may be omitted or simplified in order not to obscure the embodiment being described.
<figref idref="DRAWINGS">FIG. 1</figref> illustrates an environment <b>100</b> in which a data replication group <b>112</b> may implement a consensus protocol between one or more nodes <b>104</b> and a master node <b>102</b>, where the consensus protocol include a lease protocol for the role of master node in accordance with at least one embodiment. In various embodiments, only one node of the data replication group <b>112</b> is the master node <b>102</b> for any particular lease interval. Each node <b>104</b>, including the master node <b>102</b>, may be software or other executable code maintained in the memory of a physical host or other server computer system and executed by the physical host or other server computer system in order to provide the functionality described herein. Furthermore, the nodes <b>104</b> and master node <b>102</b> may be executed by one or more distinct physical hosts or other server computer systems. For example, two nodes of the data replication group <b>112</b> may be executed by a first physical host and the remaining nodes, including the master node <b>102</b>, of the data replication group <b>112</b> may be executed by a second physical host. The physical hosts may include a variety of computing resources such as the server computer systems described below in connection with <figref idref="DRAWINGS">FIG. 10</figref>.
The nodes <b>104</b> and master node <b>102</b> of the data replication group <b>112</b> may be connected (illustrated as a solid line or dashed line between the nodes in <figref idref="DRAWINGS">FIG. 1</figref>) through various network connections. The network connection may be provided by various network devices, physical hosts, and other computer systems. For example, the physical hosts executing the nodes may include at least a virtualization layer and a network interface to enable the nodes to send and receive network traffic. Furthermore, the nodes <b>104</b> and master node <b>102</b> may be distributed across physical hosts and networks such that failure of one or more networks or physical hosts does not cause all of the nodes <b>104</b> of the data replication group <b>112</b> to fail.
Although six nodes and one master node <b>102</b> are illustrated in <figref idref="DRAWINGS">FIG. 1</figref>, any number of nodes <b>104</b> and master nodes <b>102</b> may be included in the data replication group <b>112</b> and distributed across a plurality of distributed computer systems in accordance with the present disclosure. However, in some embodiments, only a single master node is included in the data replication group <b>112</b>. This restriction may be required by the consensus protocol implemented by the data replication group <b>112</b> or may be a restriction enforced in order to increase efficiency and/or optimize execution of the data replication group <b>112</b>. The master node <b>102</b> may be selected and/or determined from the set of nodes <b>104</b> in the data replication group <b>112</b> based at least in part on a node fitness score, random election, or other mechanisms for node election. For example, the data replication group <b>112</b> may be initialized with seven nodes <b>104</b> and the master node <b>102</b> may be selected from the set of seven nodes based at least in part on a particular election algorithm.
As illustrated in <figref idref="DRAWINGS">FIG. 1</figref>, the master node <b>102</b> may receive a number of responses <b>106</b> within a lease renewal interval <b>108</b>. The lease renewal interval may be determined based at least in part on a lease protocol as described above. In various embodiments, the lease protocol requires the master node <b>102</b> to renew its lease of the master node role in order to maintain the role of master node <b>102</b>. In order to renew the lease the master node <b>102</b> must receive a certain number of responses <b>106</b> from the nodes <b>104</b>. The responses <b>106</b> may be responses to heartbeat messages described in greater detail below. If the master node receives the required number of responses <b>106</b>, as defined by the lease protocol, within the lease renewal interval <b>108</b>, the master node <b>102</b> may retain the master node role. However, if the master node <b>102</b> does not receive the required number of responses within the lease renewal interval <b>108</b>, the master node <b>102</b> fails to retain the master node role and election/selection of a new master node may commence.
In yet other embodiments, the lease protocol includes two additional intervals: a wait interval and a safety interval. During the wait interval, the master node <b>102</b> may still receive responses <b>106</b> and renew the lease of the master node role but may not transmit addition requests to renew the master node role (e.g., heartbeat messages). After expiration of the wait interval, the lease of the master node role by the master node <b>102</b> is expired and election/selection of a new master node may commence. However, the lease protocol may prevent the election/selection of a new master node until expiration of the safety interval. After the expiration of the safety interval the nodes <b>104</b> may attempt to elect/select a new master node. The lease renewal interval <b>108</b> may be less than the wait interval which may be less than or equal to the safety interval. The lease protocol may include various states indicating whether a particular node is currently the master node, whether another node is currently the master node, whether the master node lease has expired, and other state information sufficient to determine the current state of the lease protocol between the nodes <b>104</b> as described in greater detail below in connection with <figref idref="DRAWINGS">FIG. 7</figref>.
In a specific example, the lease renewal interval <b>108</b> is three seconds, the wait interval is 10 seconds, and the safety interval is 16 seconds. This enables the master node <b>102</b> to attempt renewal of the lease several times before the expiration of the wait interval and also reduces the likelihood of election/selection of multiple master nodes. For example, the safety interval provides an interval of time during which each node may determine if the other nodes of the data replication group <b>112</b> have detected a failure of the master node <b>102</b> to renew the lease within the lease renewal interval <b>108</b>. As described in greater detail below, the safety interval enables the nodes <b>104</b> to begin the election/selection process for a new master node. The various intervals (e.g., lease renewal interval <b>108</b>, the wait interval, and the safety interval) may be periodic or aperiodic and may be measured concurrently, sequentially, or a combination. In addition, the nodes <b>104</b> and the master node <b>102</b> may maintain metadata and state information associated with the current state of the lease protocol. For example, the nodes <b>104</b> and the master node <b>102</b> may maintain a lease identification number and a current ballot number described in greater detail below. The lease identification number may be a unique number (relative to the data replication group <b>112</b>) indicating the current lease. The ballot number may be a unique number (relative to the current lease identification number) that identifies a particular message from the master node <b>102</b>.
The data replication group <b>112</b> may further include software or other executable code that, when executed by one or more processors, causes the computer systems executing the code to manage the operation of the data replication group <b>112</b>, nodes <b>104</b>, and/or master node <b>102</b>. Managing the operation of the data replication group <b>112</b> may include creating new nodes, replacing failed nodes <b>104</b>, providing discovery of nodes <b>104</b>, backing up data maintained by the nodes <b>104</b>, determining roles of the consensus protocol to be performed by the nodes <b>104</b>, selecting a master node <b>102</b>, and other such operations as required to ensure the functioning of the data replication group <b>112</b>. In various embodiments, the master node <b>102</b> executes the distinguished leader or distinguished proposer role, as described above, of the Paxos consensus protocol. Furthermore, the master node <b>102</b> may ensure progress towards eventually consistent data storage and reads from the various nodes of the data replication groups <b>112</b>. The data replication group <b>112</b>, illustrated in <figref idref="DRAWINGS">FIG. 1</figref>, may be used in connection with various embodiments described herein. For example, the data replication group <b>112</b> may be a member of a pool of data replication groups described below in connection with <figref idref="DRAWINGS">FIG. 8</figref>. Additionally, the data replication group <b>112</b> may be initialized with a certain number of nodes <b>104</b> and may increase the number of nodes <b>104</b> over an interval of time until a desired number of nodes is reached.
<figref idref="DRAWINGS">FIG. 2</figref> illustrates an environment <b>200</b> in which a data replication group <b>212</b> may implement a consensus protocol between one or more nodes <b>204</b> and a master node <b>202</b>, where the consensus protocol includes a lease protocol associated with the role of master node in accordance with at least one embodiment. In various embodiments, only one node of the data replication group <b>212</b> is the master node <b>202</b> for any particular lease interval. Each node <b>204</b>, including the master node <b>202</b>, may be software or other executable code maintained in the memory of a physical host or other server computer system and executed by the physical host or other server computer system in order to provide the functionality described herein. Furthermore, the nodes <b>204</b> and master node <b>202</b> may be executed by one or more distinct physical hosts or other server computer systems. For example, two nodes of the data replication group <b>212</b> may be executed by a first physical host and the remaining nodes, including the master node <b>202</b>, of the data replication group <b>212</b> may be executed by a second physical host. The physical hosts may include a variety of computing resources such as the server computer systems described below in connection with <figref idref="DRAWINGS">FIG. 10</figref>.
The nodes <b>204</b> and master node <b>202</b> of the data replication group <b>212</b> may be connected through various network connections. The network connection may be provided by various network devices, physical hosts, and other computer systems. For example, the physical hosts executing the nodes may include at least a virtualization layer and a network interface to enable the nodes to send and receive network traffic. Furthermore, the nodes <b>204</b> and master node <b>202</b> may be distributed across physical hosts and networks such that failure of one or more networks or physical hosts does not cause all of the nodes <b>204</b> of the data replication group <b>212</b> to fail.
Although six nodes and one master node <b>202</b> are illustrated in <figref idref="DRAWINGS">FIG. 2</figref>, any number of nodes <b>204</b> and master nodes <b>202</b> may be included in the data replication group <b>212</b> and distributed across a plurality of distributed computer systems in accordance with the present disclosure. However, in some embodiments, only a single master node is included in the data replication group <b>212</b>. This restriction may be required by the consensus protocol implemented by the data replication group <b>212</b> or may be a restriction enforced in order to increase efficiency and/or optimize execution of the data replication group <b>212</b>.
As illustrated in <figref idref="DRAWINGS">FIG. 2</figref>, the master node <b>202</b> may transmit a number of heartbeat requests <b>206</b>. The heartbeat requests <b>206</b> may correspond to a heartbeat message or heartbeat process, for the purposes of the present disclosure, and may include various processes for renewing a lease of the master node role, checking the health, status, and validity of the nodes <b>204</b> of the data replication group <b>212</b>, and progressing the consensus protocol implemented by the nodes <b>204</b> of the data replication group <b>212</b>. The process of transmitting heartbeat requests <b>206</b> enables the master node <b>202</b> to maintain the current lease of the master node role if a quorum of nodes <b>204</b> provided responses to the heartbeat requests <b>206</b>. In various embodiments, the heartbeat message <b>206</b> includes a lease identification number and a ballot number. The master node <b>202</b> may maintain the lease identification number of its current lease of the master node role and location information for the nodes <b>204</b> of the data replication group.
Alternatively, the master node <b>202</b> may obtain the lease identification number, the ballot number, and/or location information from the nodes <b>204</b> from another computer system or service such as the replication group service or management system thereof as described below in connection with <figref idref="DRAWINGS">FIG. 8</figref>. In various embodiments, the master node <b>202</b> generates the ballot number for each heartbeat request <b>206</b>. The ballot number may be an increasing value such that each ballot number is unique for the current lease identification number. For example, if the master node <b>202</b> has a current lease identification number of <b>200</b>, the first heartbeat message and set of corresponding heartbeat requests <b>206</b> thereof will have a ballot number of one, the second set of heartbeat requests <b>206</b> will have ballot number of two, the third set will have a ballot number of three and so on. As described above, the master node may generate multiple heartbeat requests <b>206</b> corresponding to multiple heartbeat messages during the lease renewal interval. The heartbeat requests may be transmitted over a network, a virtual network, or other suitable means of exchanging information between computer systems executing nodes <b>204</b> of the data replication group <b>212</b>. For example, the physical host executing the master node <b>202</b> provides the master node access to a virtual network interface which is used to transmit data to a network interface of the physical host and then onto a destination such as the nodes <b>204</b> or a physical host executing the nodes <b>204</b>.
<figref idref="DRAWINGS">FIG. 3</figref> illustrates an environment <b>300</b> in which a data replication group <b>312</b> may implement a consensus protocol between one or more nodes <b>304</b> and a master node <b>302</b>, where the consensus protocol include a lease protocol for the role of master node in accordance with at least one embodiment. In various embodiments, only one node of the data replication group <b>312</b> is the master node <b>302</b> for any particular lease interval. Each node <b>304</b>, including the master node <b>302</b>, may be software or other executable code maintained in the memory of a physical host or other server computer system and executed by the physical host or other server computer system in order to provide the functionality described herein. Furthermore, the nodes <b>304</b> and master node <b>302</b> may be executed by one or more distinct physical hosts or other server computer systems. For example, two nodes of the data replication group <b>312</b> may be executed by a first physical host and the remaining nodes, including the master node <b>302</b>, of the data replication group <b>312</b> may be executed by a second physical host. The physical hosts may include a variety of computing resources such as the server computer systems described below in connection with <figref idref="DRAWINGS">FIG. 10</figref>.
The nodes <b>304</b> and master node <b>302</b> of the data replication group <b>312</b> may be connected through various network connections. The network connection may be provided by various network devices, physical hosts, and other computer systems. For example, the physical hosts executing the nodes may include at least a virtualization layer and a network interface to enable the nodes to send and receive network traffic. Furthermore, the nodes <b>304</b> and master node <b>302</b> may be distributed across physical hosts and networks such that failure of one or more networks or physical hosts does not cause all of the nodes <b>304</b> of the data replication group <b>312</b> to fail.
Although six nodes and one master node <b>302</b> are illustrated in <figref idref="DRAWINGS">FIG. 3</figref>, any number of nodes <b>304</b> and master nodes <b>302</b> may be included in the data replication group <b>312</b> and distributed across a plurality of distributed computer systems in accordance with the present disclosure. However, in some embodiments, only a single master node is included in the data replication group <b>312</b>. This restriction may be required by the consensus protocol implemented by the data replication group <b>312</b> or may be a restriction enforced in order to increase efficiency and/or optimize execution of the data replication group <b>312</b>. The master node <b>302</b> may be selected and/or determined from the set of nodes <b>304</b> in the data replication group <b>312</b> based at least in part on a node fitness score, random election, or other mechanisms for node election. For example, the data replication group <b>312</b> may be initialized with seven nodes <b>304</b> and the master node <b>302</b> may be selected from the set of seven nodes based at least in part on a particular election algorithm.
As illustrated in <figref idref="DRAWINGS">FIG. 3</figref>, the master node <b>302</b> may receive a number of heartbeat responses <b>306</b>. The heartbeat responses <b>306</b> are generated by the nodes <b>304</b> in response to a heartbeat request as described above. The nodes <b>304</b> may maintain information associated with a previously received heartbeat request or other message from the master node <b>302</b>. This enables the node <b>304</b> to determine if a particular message or heartbeat request received from the master node <b>302</b> or other source is a valid message. For example, after receiving a heartbeat request, a particular node may respond to the heartbeat request, if the lease identification number matches the last known lease identification number and the ballot number is higher than the last received heartbeat request. If the nodes <b>304</b> validate the heartbeat request (e.g., the lease identification number matches and the ballot number is higher) the nodes <b>304</b> may transmit a heartbeat response <b>306</b> to the master node <b>302</b>.
The lease protocol may establish some number of heartbeat response <b>306</b> required for the master node <b>302</b> to renew its lease of the master node role. As illustrated in <figref idref="DRAWINGS">FIG. 3</figref>, four nodes of the data replication group provide the master node <b>302</b> with a heartbeat response <b>306</b>. The nodes <b>304</b> of a data replication group <b>112</b> may be collected or assembled into groups, collectively referred to as quorums. In various embodiments, a quorum includes a majority of the nodes <b>304</b> of the data replication group <b>312</b>. In various embodiments of the consensus protocol, any message sent to a node must be sent to the quorum of nodes, and any message received from a node is ignored unless a copy is received from each node in the quorum. However, implementation of the lease protocol may modify the behavior of the consensus protocol to reduce the number of messages exchanged between the nodes <b>304</b> as described above. For example, the master node <b>302</b> may transmit a heartbeat request to all or a quorum of the nodes <b>304</b> of the data replication group <b>312</b>, but the nodes <b>304</b> may only transmit a heartbeat response <b>306</b> to the master node <b>302</b>.
<figref idref="DRAWINGS">FIG. 4</figref> illustrates an environment <b>400</b> in which a data replication group <b>412</b> may implement a consensus protocol between one or more nodes <b>404</b> and a master node <b>402</b>, where the consensus protocols include a lease protocol for the role of master node in accordance with at least one embodiment. In various embodiments, only one node of the data replication group <b>412</b> is the master node <b>402</b> for any particular lease interval. Each node <b>404</b>, including the master node <b>402</b>, may be software or other executable code maintained in the memory of a physical host or other server computer system and executed by the physical host or other server computer system in order to provide the functionality described herein. Furthermore, the nodes <b>404</b> and master node <b>402</b> may be executed by one or more distinct physical hosts or other server computer systems. For example, two nodes of the data replication group <b>412</b> may be executed by a first physical host and the remaining nodes, including the master node <b>402</b>, of the data replication group <b>412</b> may be executed by a second physical host. The physical hosts may include a variety of computing resources such as the server computer systems described below in connection with <figref idref="DRAWINGS">FIG. 10</figref>.
The nodes <b>404</b> and master node <b>402</b> of the data replication group <b>412</b> may be connected through various network connections. The network connection may be provided by various network devices, physical hosts, and other computer systems. For example, the physical hosts executing the nodes may include at least a virtualization layer and a network interface to enable the nodes to send and receive network traffic. Furthermore, the nodes <b>404</b> and master node <b>402</b> may be distributed across physical hosts and networks such that failure of one or more networks or physical hosts does not cause all of the nodes <b>404</b> of the data replication group <b>412</b> to fail.
Although six nodes and one master node <b>402</b> are illustrated in <figref idref="DRAWINGS">FIG. 4</figref>, any number of nodes <b>404</b> and master nodes <b>402</b> may be included in the data replication group <b>412</b> and distributed across a plurality of distributed computer systems in accordance with the present disclosure. However, in some embodiments, only a single master node is included in the data replication group <b>412</b>. This restriction may be required by the consensus protocol implemented by the data replication group <b>412</b> or may be a restriction enforced in order to increase efficiency and/or optimize execution of the data replication group <b>412</b>. The master node <b>402</b> may be selected and/or determined from the set of nodes <b>404</b> in the data replication group <b>412</b> based at least in part on a node fitness score, random election, or other mechanisms for node election. For example, the data replication group <b>412</b> may be initialized with seven nodes <b>404</b> and the master node <b>402</b> may be selected from the set of seven nodes based at least in part on a particular election algorithm.
As illustrated in <figref idref="DRAWINGS">FIG. 4</figref>, a particular node of the data replication group may transmit a prepare election <b>406</b> request to a plurality of nodes <b>404</b> of the data replication group <b>412</b>. As described above, the lease protocol may have various intervals during which certain action may be performed by the nodes <b>404</b> and/or master node <b>402</b>. In the example illustrated in <figref idref="DRAWINGS">FIG. 4</figref>, the expiration of a safety interval has passed without the particular node receiving a heartbeat request or without receiving a valid heartbeat request. As a result, the particular node may determine to begin election/selection procedures. In various embodiments, nodes <b>404</b> of the data replication group <b>412</b> after expiration of the safety interval transmit message to the other nodes of the data replication group <b>412</b> to prepare for election/selection procedures. For example, as described in greater detail below in connection with <figref idref="DRAWINGS">FIG. 7</figref>, a particular node may transmit a message to one or more other nodes of the data replication group to determine if the nodes are in an expired lease state and, therefore, election/selection of a new master node can safely be commenced with a reduced risk of having two or more master nodes.
Returning to <figref idref="DRAWINGS">FIG. 4</figref>, the particular node may transmit prepare election <b>406</b> requests to all or a quorum of the nodes <b>404</b> of the data replication group. The prepare election <b>406</b> requests may include a new lease identification number and a new ballot number. If a certain number of responses are received in response to the prepare election <b>406</b> request, the particular node may be assigned the role of master node and may be considered the new master node. In various embodiments, the election requests <b>406</b> include information identifying the particular node as the new master node, lease configuration information including values for the various intervals (e.g., safety, wait, and lease renewal as described above), location information for the particular node, fitness information for the particular node, or any other information suitable for use in the election/selection of the new master node. In addition, the prepare election <b>406</b> request may be conditional and/or the nodes <b>404</b> may determine if various conditions are satisfied before returning an acceptance of the election request. For example, the nodes <b>404</b> may determine that the lease identification number included in the prepare election <b>406</b> request is the expected lease identification number to replace the current lease identification number. The checks and/or conditional nature of the election request prevents multiple nodes <b>404</b> from replacing the current master node <b>402</b> and from replacing a newly elected master node.
<figref idref="DRAWINGS">FIG. 5</figref> illustrates an environment <b>500</b> in which a data replication group <b>512</b> may implement a consensus protocol between one or more nodes <b>504</b> and a candidate master node <b>502</b>, where the consensus protocol includes a lease protocol for the role of master node in accordance with at least one embodiment. In various embodiments, only one node of the data replication group <b>512</b> is the candidate master node <b>502</b> for any particular lease interval. Each node <b>504</b>, including the candidate master node <b>502</b>, may be software or other executable code maintained in the memory of a physical host or other server computer system and executed by the physical host or other server computer system in order to provide the functionality described herein. Furthermore, the nodes <b>504</b> and candidate master node <b>502</b> may be executed by one or more distinct physical hosts or other server computer systems. For example, two nodes of the data replication group <b>512</b> may be executed by a first physical host and the remaining nodes, including the candidate master node <b>502</b>, of the data replication group <b>512</b> may be executed by a second physical host. The physical hosts may include a variety of computing resources such as the server computer systems described below in connection with <figref idref="DRAWINGS">FIG. 10</figref>.
The nodes <b>504</b> and candidate master node <b>502</b> of the data replication group <b>512</b> may be connected through various network connections. The network connection may be provided by various network devices, physical hosts, and other computer systems. For example, the physical hosts executing the nodes may include at least a virtualization layer and a network interface to enable the nodes to send and receive network traffic. Furthermore, the nodes <b>504</b> and candidate master node <b>502</b> may be distributed across physical hosts and networks such that failure of one or more networks or physical hosts does not cause all of the nodes <b>504</b> of the data replication group <b>512</b> to fail.
Although six nodes and one candidate master node <b>502</b> are illustrated in <figref idref="DRAWINGS">FIG. 5</figref>, any number of nodes <b>504</b> and candidate master nodes <b>502</b> may be included in the data replication group <b>512</b> and distributed across a plurality of distributed computer systems in accordance with the present disclosure. However, in some embodiments, only a single master node is included in the data replication group <b>512</b>. This restriction may be required by the consensus protocol implemented by the data replication group <b>512</b> or may be a restriction enforced in order to increase efficiency and/or optimize execution of the data replication group <b>512</b>. The candidate master node <b>502</b> may be selected and/or determined from the set of nodes <b>504</b> in the data replication group <b>512</b> based at least in part on a node fitness score, random election, or other mechanisms for node election. For example, the data replication group <b>512</b> may be initialized with seven nodes <b>504</b> and the candidate master node <b>502</b> may be selected from the set of seven nodes based at least in part on a particular election algorithm.
As illustrated in <figref idref="DRAWINGS">FIG. 5</figref>, the candidate master node <b>502</b> may be elected based at least in part on receiving a number of master lease expired responses <b>506</b>. The number of master lease expired responses <b>506</b> to begin election/selection of the candidate master node <b>502</b> to the master node role may be determined by the consensus protocol and/or the lease protocol. For example, a quorum of the nodes <b>504</b> may be required to provide master lease expired responses <b>506</b> for election process, described in greater detail below in connection with <figref idref="DRAWINGS">FIG. 6</figref>, to begin and the new master node <b>504</b> to be assigned the master node role. As described above, the nodes upon determining the expiration of the current lease may after an interval of time (e.g., the safety interval) transmit a message to prepare for election/selection of the candidate master node <b>502</b>. The message to prepare for election/selection may indicate a new lease identification number, the node responsible for transmitting the message, or other information suitable for electing/selection a new master node. Upon receipt of the message, the nodes <b>504</b> may transmit a response if the nodes <b>504</b> have determined the current lease has expired and the new lease identification number matches an expected lease identification number. The new lease identification number may match the expected lease identification number if a number of other nodes (e.g., a quorum) of the data replication group <b>512</b> have received the same lease identification number in the message to prepare for election/selection.
In various embodiments, if the nodes <b>504</b> have not determined the current lease has expired or the new lease identification number does not match the expected lease identification number, the nodes <b>504</b> will discard the message. If the nodes <b>504</b> determine the above conditions are satisfied, the nodes may transmit master lease expired response <b>506</b>. The master lease expired response <b>506</b> may indicate that the nodes have determined that the current lease of the role of master node has expired. In addition, after transmitting master lease expired response <b>506</b>, the nodes may cause the new lease identification number to be the current lease identification number and may reset the time interval associated with the lease protocol. As illustrated in <figref idref="DRAWINGS">FIG. 5</figref>, each node of the data replication group may determine various aspects of the lease protocol independently of one or more other nodes <b>504</b> of the data replication group. For example, as illustrated in <figref idref="DRAWINGS">FIG. 5</figref>, only four nodes of the data replication group <b>512</b> may respond to the prepare election request with an master lease expired response <b>506</b>. There may be various reasons for this including network outage, a restart of the node or physical host implementing the node, an update to the node, a deployment to the node, network traffic or congestion, or any other reason for delaying or failing to receive a message.
<figref idref="DRAWINGS">FIG. 6</figref> illustrates an environment <b>600</b> in which a data replication group <b>612</b> may implement a consensus protocol between one or more nodes <b>604</b> and elect a master node <b>602</b> based at least in part on the consensus protocol in accordance with at least one embodiment. In various embodiments, only one node of the data replication group <b>612</b> may be elected the master node <b>602</b> for any particular lease interval. Each node <b>604</b>, including the master node <b>602</b>, may be software or other executable code maintained in the memory of a physical host or other server computer system and executed by the physical host or other server computer system in order to provide the functionality described herein. Furthermore, the nodes <b>604</b> and master node <b>602</b> may be executed by one or more distinct physical hosts or other server computer systems. For example, two nodes of the data replication group <b>612</b> may be executed by a first physical host and the remaining nodes, including the master node <b>602</b>, of the data replication group <b>612</b> may be executed by a second physical host. The physical hosts may include a variety of computing resources such as the server computer systems described below in connection with <figref idref="DRAWINGS">FIG. 10</figref>.
The nodes <b>604</b> and master node <b>602</b> of the data replication group <b>612</b> may be connected (illustrated as a solid line or dashed line between the nodes in <figref idref="DRAWINGS">FIG. 6</figref>) through various network connections. The network connection may be provided by various network devices, physical hosts, and other computer systems. For example, the physical hosts executing the nodes may include at least a virtualization layer and a network interface to enable the nodes to send and receive network traffic. Furthermore, the nodes <b>604</b> and master node <b>602</b> may be distributed across physical hosts and networks such that failure of one or more networks or physical hosts does not cause all of the nodes <b>604</b> of the data replication group <b>612</b> to fail.
As illustrated by <figref idref="DRAWINGS">FIG. 6</figref>, during leader election <b>608</b>, the data replication group may utilize the consensus protocol to ensure strong consistency when electing the master node <b>602</b>. For example, during the leader election <b>608</b> the candidate master node may transmit election requests <b>610</b> to the nodes <b>604</b>, the nodes <b>604</b> may then re-transmit the requests <b>610</b> to other nodes in accordance with the consensus protocol. The nodes <b>604</b> may transmit a response <b>606</b> to the election requests <b>610</b> to the candidate master node. If the candidate master node receives responses <b>606</b> from a quorum of node <b>604</b> the candidate master node may be elected master node <b>602</b> and may transmit a response indicating the candidate master node has been elected master node <b>602</b>. Any number of election algorithms may be used in accordance with the present disclosure such that the election algorithm ensures consensus and strong consistency among the nodes. For example, Paxos leader election may be used to elect a single master node <b>602</b> for the data replication group <b>612</b>.
<figref idref="DRAWINGS">FIG. 7</figref> illustrates an environment <b>700</b> in which a data replication group <b>712</b> may implement a consensus protocol between one or more nodes <b>704</b> and elect a master node <b>702</b> based at least in part on the consensus protocol in accordance with at least one embodiment. In various embodiments, only one node of the data replication group <b>712</b> may be elected the master node <b>702</b> for any particular lease interval. Each node <b>704</b>, including the master node <b>702</b>, may be software or other executable code maintained in the memory of a physical host or other server computer system and executed by the physical host or other server computer system in order to provide the functionality described herein. Furthermore, the nodes <b>704</b> and master node <b>702</b> may be executed by one or more distinct physical hosts or other server computer systems. For example, two nodes of the data replication group <b>712</b> may be executed by a first physical host and the remaining nodes, including the master node <b>702</b>, of the data replication group <b>712</b> may be executed by a second physical host. The physical hosts may include a variety of computing resources such as the server computer systems described below in connection with <figref idref="DRAWINGS">FIG. 10</figref>.
As illustrated in <figref idref="DRAWINGS">FIG. 7</figref>, a particular node <b>704</b> may transmit a heartbeat request <b>706</b> to a learner <b>702</b>. The learner may be any node of the data replication group that has incomplete state information. For example, the learner <b>702</b> may be a node returning from restart, as described in greater detail below in connection with <figref idref="DRAWINGS">FIG. 9</figref>. The heartbeat request <b>706</b> may correspond to a heartbeat message or heartbeat process, for the purposes of the present disclosure, and may include various processes for renewing a lease of the master node role, checking the health, status, and validity of the nodes of the data replication group <b>712</b>, and progressing the consensus protocol implemented by the nodes of the data replication group <b>712</b>. The process of transmitting heartbeat request <b>706</b> enables the master node to maintain the current lease of the master node role, if a quorum of nodes returns a response to various heartbeat requests. In various embodiments, the heartbeat message <b>706</b> includes a lease identification number and a ballot number. The master node <b>702</b> may maintain the lease identification number of its current lease of the master node role and location information for the nodes <b>704</b> of the data replication group.
In the example illustrated in <figref idref="DRAWINGS">FIG. 7</figref>, the learner <b>702</b> may not contain any information indicating the current lease identification number or the current ballot number. In addition, the learner <b>702</b> may initiate a catch-up algorithm as described below in connection with <figref idref="DRAWINGS">FIG. 12</figref>. The learner <b>702</b> may wait to receive a heartbeat request <b>706</b> from the master node as described above. If the learner <b>702</b> receives a heartbeat request <b>706</b> the learner <b>702</b> may accept the heartbeat request <b>706</b> and transmit a response to the heartbeat request <b>706</b> and set the current state a state indicating that the role of master node is currently leased. Alternatively, if the learner <b>702</b> does not receive a heartbeat request <b>706</b> within a wait interval, the learner may set the current state to a state indicating that the lease of the role of master node has expiring. If no heartbeat request <b>706</b> is received before the termination of a safety interval, the learner <b>706</b> may transmit requests to the other nodes to determine if the other nodes are in the same state (e.g., master node expired or expiring).
<figref idref="DRAWINGS">FIG. 8</figref> illustrates an environment <b>800</b> in which a computing resource service provider may operate a replication group service <b>802</b> configured to manage one or more data replication groups <b>812</b> in a pool <b>810</b> of data replication groups <b>812</b>. Provisioning a data replication group <b>812</b> such that it may implement a consensus protocol and begin to receive traffic may increase latency or violate the terms of a service-level agreement (SLA). An SLA may be part of a service contract or other agreement between a computing resource service provider and a customer where a particular service is formally defined.
Particular aspects of the service (e.g., scope, quality, responsibilities, latency, and availability) may be agreed on between the computing resource service provider and the customer. The pool <b>810</b> of data replication groups <b>812</b> may enable the computer resource service provider to achieve a predefined level of performance as indicated in a particular SLA. The pool <b>810</b> of data replication groups <b>812</b> may enable replication group service <b>802</b> to asynchronously respond to a request for data replication groups <b>812</b> and provision new data replication groups <b>812</b>. In addition, the data replication groups <b>812</b> may be optimized such that a particular node of the data replication group <b>812</b> is assigned the role of master node to achieve a predefined level of performance as indicated in a particular SLA.
In addition, there may be applications and/or services that require reduced latency when provisioning a particular data replication group <b>812</b> to receive traffic on behalf of the application or service. For example, a customer application may require the creation of a data replication group <b>812</b> for storage of customer data in a shorter time interval relative to an amount of time required to provision a data replication group <b>812</b>. In order to achieve lower latency as may be required, a pool <b>810</b> of data replication groups <b>812</b> may be created such that fully functional data replication groups <b>812</b> are available when required without the need of provisioning a new data replication group <b>812</b>. The nodes of the data replication groups <b>812</b> and the data replication group as a whole may be consider healthy and ready to receive traffic based at least in part on the success of various heartbeat messages as described above. Furthermore, the replication group service <b>802</b> may include an interface <b>828</b>, management system <b>806</b>, and a placement system <b>816</b>. In addition, the replication group service <b>802</b> may maintain replication group data <b>808</b> and host configuration data <b>818</b>.
Although all of the data replication groups <b>812</b> illustrated in <figref idref="DRAWINGS">FIG. 8</figref> are members of the pool <b>810</b>, other configurations of data replication groups <b>812</b> and pools <b>810</b> are within the scope of the present disclosure. For example, the replication group service <b>802</b> may maintain one or more data replication groups <b>812</b> outside of or aside from the pool <b>810</b> of data replication groups <b>812</b>. In another example, the replication group service may maintain a plurality of pools <b>810</b>. The pools <b>810</b> may be distributed across regions, geographic boundaries, physical boundaries, fault zones, power zones, or other logical groupings of computing resources in a distributed computing environment. As described above, a preference for a particular master node for each data replication group <b>812</b> in the pool <b>810</b> may be indicated by the placement system <b>816</b>. In various embodiments, when determining a new master node the node of the data replication group may request information from the placement system <b>816</b>, indicating one or more nodes of the data replication group's fitness and/or preference to be assigned the role of new master node.
The replication group service <b>802</b> may further include replication group data <b>808</b>. Replication group data <b>808</b> may consist of data corresponding to the data replication groups <b>812</b>, nodes of the data replication groups, customers or services mapped to the data replication groups <b>812</b>, and any such other data as required by the management system <b>806</b> and/or replication group service <b>802</b>. The replication group data <b>808</b> may be maintained in a database of other data stores such that the data is accessible and/or queryable by other components of the replication group service <b>802</b>, customer, or other services. In one example, replication group data <b>808</b> may maintain data to aid in discovery of nodes by one or more other nodes of the data replication groups <b>812</b>. This data may include a mapping of data replication groups <b>812</b> to nodes. Furthermore, the data may include information about particular nodes and/or roles of the particular nodes. For example, an input/output (I/O) request may be received at the interface <b>828</b> of the replication group service <b>802</b>. The I/O request may indicate a particular data replication group <b>812</b>, the replication group service <b>802</b> or component thereof, and may query the replication group data <b>808</b> in order to determine a leader or other node of the data replication group <b>812</b> designated to receive the I/O request.
In various embodiments, the placement system <b>816</b> may determine replication group data <b>808</b> such as aggregate fitness information for the data replication groups <b>812</b> based at least in part on leadership and/or fitness information for various nodes in the data replication groups <b>812</b>. In addition, the aggregate fitness information for the data replication groups <b>812</b> is based at least in part on the information used to determine the leadership and/or fitness information for the various nodes in the data replication groups <b>812</b> and the success of various heartbeat messages exchanged between the various nodes of the data replication groups <b>812</b>. The aggregate fitness information may be determined based at least in part on a function of the leadership and/or fitness information for various nodes in the data replication groups <b>812</b>. For example, a weighted average may be used to determine the aggregate fitness information based at least in part on the leadership and/or fitness information and additional information associated with the nodes of the data replication group <b>812</b>, such as the computing resources implementing the nodes or a location of the nodes. The aggregate fitness information for the data replication groups <b>812</b> may provide an indication of the overall health and/or performance of the pool <b>810</b> of data replication groups <b>812</b> or individual data replication groups <b>812</b>. In addition, if the aggregate fitness information for the data replication groups <b>812</b> or a particular data replication group is below some threshold, the replication group service <b>802</b> may initiate procedures to improve the aggregate fitness information for the data replication groups <b>812</b>. For example, the replication group service <b>802</b> may redistribute the nodes of the data replication group. In various embodiments, the aggregate fitness information and/or the leadership and/or fitness information is used to implement active placement of nodes of the data replication group <b>812</b> such that the replication group service <b>802</b> is continuously or at various points in time optimizing the placement of nodes of the data replication groups <b>812</b>.
The data in the replication group data <b>808</b> may be updated at various intervals of time. For example, the management system <b>806</b> may query the nodes and/or data replication groups <b>812</b> in order to obtain information useable to update the replication group data <b>808</b>. The replication group data <b>808</b> may also include information corresponding to the number of data replication groups <b>812</b> in the pool <b>810</b>, a maximum number of data replication groups <b>812</b> to be included in the pool <b>810</b>, and a frequency or number of requests for data replication groups <b>812</b> received by the replication group service <b>802</b>. The replication group service <b>802</b> or component thereof may utilize this information to determine a rate at which data replication groups <b>812</b> are to be added to the pool <b>810</b>. The process for adding data replication groups <b>812</b> to the pool <b>810</b> may include identifying a set of physical hosts suitable for hosting a new data replication group <b>812</b>, initializing nodes on the set of physical hosts to be included in the new data replication group <b>812</b>, initializing a consensus protocol among the nodes, providing leadership and/or fitness information to the nodes, validating the health of the data replication group <b>812</b> (e.g., determining the status of heartbeat messages), and updating the replication group data store to indicate that the new data replication group <b>812</b> is ready to receive traffic and is a member of the pool <b>810</b>. A data replication group <b>812</b> may be considered healthy if a majority of the nodes of the data replication group <b>812</b> are operating as expected (e.g., have successfully validated the health of the node).
The replication group service <b>802</b> may further include host configuration data <b>818</b>. The host configuration data <b>818</b> may consist of information indicating the location of various computing resources in a distributed computing environment, network topology, power topology, and any such other data as required by the placement system <b>816</b> and/or replication group service <b>802</b> to determine leadership and/or fitness information for various nodes of the data replication groups <b>812</b>. The replication group data <b>808</b> may be maintained in a database of other data stores such that the data is accessible and/or queryable by other components of the replication group service <b>802</b>, customer, or other services. In one example, the host configuration data <b>818</b> is maintained to enable the placement system <b>816</b> to determine suitable placement locations and determine leadership and/or fitness information for various nodes.
The data replication group <b>812</b> may be selected based at least in part on a variety of factors, such as the health of the data replication group <b>812</b>, the time at which the data replication group <b>812</b> was created, a position of the data replication group <b>812</b> in a queue, attributes of the data replication group <b>812</b> (e.g., number of nodes, physical hosts implementing the nodes, location, latency, processing power, failure rate, fitness of a master node, etc.), a consensus protocol executed by the data replication group <b>812</b>, and other factors that are suitable for selecting a particular data replication group <b>812</b> to fulfill a request. The selected data replication group <b>812</b> may then be associated with the new resource, customer, or other service responsible for submitting the request. At this point, the data replication group <b>812</b> may be ready to receive requests and store data.
An asynchronous process and/or thread may then be triggered by the replication group service <b>802</b> or component thereof such as the management system <b>806</b> in order to replace the data replication group <b>812</b> removed from the pools <b>810</b>. This process and/or thread may be executed at a point in time of removal of the data replication groups <b>812</b> from the pool <b>810</b> or may be triggered based at least in part on other factors. For example, the process and/or thread to add new data replication groups <b>812</b> to the pool <b>810</b> may be executed based at least in part on the expiration of an interval of time. In another example, the process and/or thread to add new data replication groups <b>812</b> to the pool <b>810</b> may be executed based at least in part on a request rate for data replication groups <b>812</b> received by the replication group service <b>802</b> or component thereof, such as the interface <b>828</b>. When adding a new data replication group <b>812</b> to the pool, the placement system <b>816</b> may determine leadership and/or fitness information for the new nodes of the new data replication group <b>812</b>. This may incorporate leadership and/or fitness information from previous data replication groups. For example, the placement system <b>816</b> may track active master nodes (e.g., master nodes of a data replication group that are assigned to and used by a customer or computing resource) and generate leadership and/or fitness information to avoid placing a certain number of active master nodes on the same host computer system.
<figref idref="DRAWINGS">FIG. 9</figref> illustrates a state diagram in which nodes and a master node of a data replication group implementing a lease protocol as described above may be in or transition between in accordance with an embodiment. The state diagram illustrated in <figref idref="DRAWINGS">FIG. 9</figref> is used to describe the behavior of various nodes (e.g., nodes of various roles) of the data replication group. The behavior of the nodes, master nodes, and the data replication group as a whole is represented as a series of events that may occur in various states as illustrated in <figref idref="DRAWINGS">FIG. 9</figref>. The nodes, master node, and data replication group may be executed by physical hosts or other computing resources as described above. Furthermore, information and/or metadata associated with each state may be maintained by the nodes, master nodes, data replication group, or other computer systems such as the data replication group service or management system as described above. For example, the master node of the data replication group may maintain state information indicating that the master node is the current master node of the data replication group and the current lease identification number.
The state diagram illustrated in <figref idref="DRAWINGS">FIG. 9</figref> contains several states and actions to transition between states. The states include “No Master” <b>902</b>, “AM Master Leased” <b>906</b>, “AM Master Expiring” <b>910</b>, “Master Leased” <b>904</b>, “Master Expiring” <b>908</b>, and “Unknown” <b>912</b>. In addition, AM Master Leased <b>906</b> and Master Leased <b>904</b> are terminal states while the remaining states are transitional states (terminal states are illustrated in <figref idref="DRAWINGS">FIG. 9</figref> by solid lines and the transitional states are illustrated by dashed lines). A terminal state includes any state in which the nodes and master node may remain for an indeterminate amount of time. For example, as long as the current master node maintains the current lease (e.g., successfully completing a heartbeat message to a quorum of the nodes) the nodes and master node may remain in the Master Leased <b>904</b> and AM Master Leased <b>906</b>. Transitional states may include any state in which the nodes and master node are required perform some action to transition out of. For example, the nodes in the Master Expiring <b>908</b> state must either receive a heartbeat message and transition to the Master Leased <b>904</b> state or receive response to an election request and transition to the AM master Leased <b>906</b> state as a result of being elected/selected to the master node role.
Returning to <figref idref="DRAWINGS">FIG. 9</figref>, the state diagram illustrated contains a No Master <b>902</b> state. Furthermore, the state diagram may represent all the possible states for any particular node of any particular data replication group. The No Master <b>902</b> state may represent a situation where a particular data replication group has been initialized with a certain number of nodes and the nodes begin implementing the consensus protocol and lease protocol. In these situations, the master node role may be assigned by another computer system such as the data replication group service or may be elected/selected as the master node. In yet other embodiments, the data replication group already contains a master node and is implementing a consensus protocol. In those embodiments, the nodes of the data replication group may begin in various different states. However, in the case where a particular node begins in the No Master <b>902</b> state, if the particular node is elected master <b>916</b>, the particular node then transitions into AM Master Leased <b>906</b>. The AM Master Leased <b>906</b> state indicates that the particular node has successfully leased the role of master node and may remain the master node so long has the lease is renewed during the lease renewal interval or the wait interval as described above. If the heartbeat is successful <b>924</b>, the particular node will renew its lease and remain in the AM Master Leased <b>906</b> state.
If the particular node is not elected master, this means that another node was elected master and the particular node transitions along the other master elected <b>918</b> transition (illustrated in <figref idref="DRAWINGS">FIG. 9</figref> as a directed line) to the Master Leased <b>904</b> state. This indicates that another node of the data replication group has been elected/selected as the master node. As discussed above, the other node may remain as the master node and the particular node may remain in the Master Leased <b>904</b> state so long as the lease is renewed during the lease renewal interval or the wait interval. However, if no heartbeat request is received <b>920</b> during or before the expiration of the wait interval, the particular node will transition to the Master Expiring <b>908</b> state. This Master Expiring <b>908</b> state indicates that no successful heartbeat message has been received either prior to expiration of the lease renewal interval or the wait interval. Furthermore, the Master Expiring <b>908</b> state may also indicate that no new heartbeat messages will be generated by the master node and that after the expiration of the safety interval, election/selection of a new master node may begin. However, if a successful heartbeat message is received <b>922</b> prior to the expiration of the safety interval, the particular node may transition back into the Master Leased <b>904</b> state because the master node has successfully renewed the current lease of the master node role.
Alternatively, if the lease is not renewed election/selection of a new master node will commence as described above. The election/selection may result in a node besides the particular node being elected master node and, as a result, a new heartbeat is received <b>922</b> from the particular node elected master node. However, if the particular node is elected/selected master <b>916</b> node, the particular node may transition to AM Master Leased <b>906</b>. From the AM Master Leased <b>906</b> state, the particular node may resign <b>930</b> the role of master node. For example, the particular node may receive a new software deployment that requires a restart or may have failed a health check and require termination and, therefore, resign <b>930</b> the master node role to avoid delay and other issues caused when the master node becomes unresponsive. Furthermore, if the heartbeat messages failed <b>926</b> during the lease renewal interval, the particular node may transition to the AM Master Expiring <b>910</b> state. The AM Master Expiring <b>910</b> state may indicate that the current lease has expired and the particular node (e.g., the current master node) may no longer generate heartbeat requests or otherwise attempt to renew the lease. However, the lease may still be renewed during the wait interval in response to heartbeat request transmitted prior to the expiration of the lease renewal interval.
Similar to the No Master <b>902</b> state, there is an Unknown <b>912</b> state. Any time after a restart <b>914</b> the node may enter the Unknown state. This may be because the state information is maintained in memory and not persisted. From the Unknown <b>912</b> state, if a heartbeat is received <b>922</b> the particular node may transition into the Master Leased state <b>904</b>. This may occur, for example, when a new node is added to the data replication group or an existing node of the data replication group returns from a restart <b>914</b>. Alternatively, if no heartbeat is received <b>920</b>, then the particular node may transition into the Master Expiring <b>908</b> state. This may be because all of the nodes or at least the particular node and the master node are returning from a restart <b>914</b>.
<figref idref="DRAWINGS">FIG. 10</figref> illustrates an aspect of an environment <b>1000</b> in which an embodiment may be practiced. Specifically, <figref idref="DRAWINGS">FIG. 10</figref> depicts the exchange of heartbeat messages <b>1004</b> between nodes of a data replication group implemented by one or more physical servers. The environment <b>1000</b> includes a set of servers or other components of the sets of racks <b>1012</b>A-<b>1012</b>B used to provide computing resources to execute the various nodes and data replication groups as described above. The nodes may be placed on the servers according to a rack diversity constraint, hard constraints, soft constraints, and other constraints, where the sets of racks <b>1012</b> may be localized by different networks <b>1026</b>A-<b>1026</b>B. The heartbeat messages <b>1004</b><sub>k-i </sub>may include various messages described above such as a heartbeat request, heartbeat responses, election preparation requests, election requests, election responses, or any other message generated by the lease protocol or the consensus protocol implemented by the data replication groups as described above.
The nodes of the data replication groups may be software or executable code executed by the servers in the sets of racks <b>1012</b>A-<b>1012</b>B or other computing resources that exchange heartbeat messages <b>1004</b><sub>k-i </sub>generated by the servers in the sets of racks <b>1012</b>A-<b>1012</b>B implementing nodes of the data replication groups as described above in conjunction with <figref idref="DRAWINGS">FIGS. 1-5</figref>. The sets of racks <b>1012</b>A-<b>1012</b>B may be physical hardware that hosts one or more servers or, in some embodiments, is simply a logical grouping of the one or more servers. Examples of logical groupings other than by rack may include servers grouped together based on data center location, servers in different fault isolation groups (i.e., logical divisions of resources such that failure of one fault zone may not affect servers in the other zones; e.g., grouped by geographic regions, data centers, hard drive clusters, backup generators, etc.), servers grouped together based on performance characteristics (e.g., throughput, input/output operations per second, etc.), and so on). The servers in a rack may be members of a particular network. In some implementations, multiple racks of servers may be members of the same network. For example, as illustrated in <figref idref="DRAWINGS">FIG. 10</figref>, the servers of the set of racks <b>1012</b>A share the network <b>1026</b>A. Likewise, the servers of the set of racks <b>1012</b>B share the network <b>1026</b>B.
The networks <b>1026</b>A-<b>1026</b>B may be data communication pathways between one or more electronic devices. The networks <b>1026</b>A-<b>1026</b>B may be wired or wireless networks and may use any of a variety of communications protocols for organizing their network traffic. The networks <b>1026</b>A-<b>1026</b>B may allow the sharing of files, data, and other types of information between the one or more electronic devices accessible through the data communication pathways. Each of the networks <b>1026</b>A-<b>1026</b>B may be associated with a router, such as an aggregation router that aggregates the servers of the respective set of racks into the common network, separate from the router associated with the other network. Each of the networks <b>1026</b>A-<b>1026</b>B may be on a different subnet than the other network. For example, as illustrated in <figref idref="DRAWINGS">FIG. 10</figref>, the servers of the set of racks <b>1012</b>A may be commonly connected to a router <b>10210</b>A. Similarly, the servers of the set of racks <b>1012</b>B may be commonly connected to a router <b>10210</b>B. The routers <b>1028</b>A-<b>1028</b>B may be networking devices that forward packets between computer networks, such as between the networks <b>1026</b>A-<b>1026</b>B.
<figref idref="DRAWINGS">FIG. 11</figref> is a block diagram illustrating an example of a process <b>1100</b> for provisioning a data replication group consisting of one or more nodes in accordance with at least one embodiment. The process <b>1100</b> may be performed by any suitable system such as nodes of a data replication group as described above in connection with <figref idref="DRAWINGS">FIGS. 1-5</figref>. The process <b>1100</b> includes receiving a heartbeat message <b>1102</b>. As described above, the heartbeat message may include any number of messages exchanged between nodes of the data replication group such as a heartbeat request, heartbeat response, election preparation request, election request, election response, or other message exchanged as part of a consensus protocol executed by the node the of the data replication group. After receiving the heartbeat message, the node then determines if the lease identification number included in the heartbeat message matches the expected/current lease identification number <b>1104</b>.
As described above, each lease of the master node role may be assigned a unique (relative to the data replication group) lease identification number that is used to track the current master node role lease. If the lease identification number does not match, the heartbeat message is discarded <b>1106</b> and the node resumes normal operation. The lease identification number may reduce the risk of multiple nodes acting as the master node. However, if the lease identification number does match, the node may check the ballot number included in the heartbeat message. If the ballot number is lower than the previous/expected ballot number, the heartbeat message is discarded <b>1106</b> and the node resumes normal operation. As described above, the ballot number may be a continuously increasing number used to differentiate and identify heartbeat messages. The ballot number may be lower in a situation where the heartbeat message was delayed in transit. However, if the ballot number is higher <b>1108</b>, the node then transmits a response to the heartbeat message <b>1110</b>. The response may indicate successful receipt of the heartbeat message. As described above, the lease protocol enables the master node to maintain the master node role and renew the lease thereof if a quorum of the nodes of the data replication group transmits a response to any particular heartbeat request. Furthermore, the lease protocol enables renewal of the master node role lease without the strict consistency requirement of the consensus protocol.
<figref idref="DRAWINGS">FIG. 12</figref> illustrates an environment <b>1200</b> in which a data replication group <b>1212</b> may implement a catchup algorithm of a consensus protocol between one or more nodes <b>1204</b> of a data replication group <b>1212</b> in accordance with at least one embodiment. For example, after returning from a restart as described above in connection with <figref idref="DRAWINGS">FIG. 9</figref>. In addition, at least one node <b>1204</b> of the data replication group <b>1212</b> may be a learner <b>1202</b>. The learner <b>1202</b> may be a node of the data replication group <b>1212</b> that has determined that the state of the node is stale or otherwise behind the state of other nodes <b>1204</b> of the group, and execution of a catchup algorithm is required to match the current state of the data replication group <b>1212</b>. Each node <b>1204</b>, including the learner <b>1202</b>, may be software or other executable code maintained in the memory of a physical host or other server computer system and executed by the physical host or other server computer system in order to provide the functionality described herein. Furthermore, the nodes <b>1204</b> and learner <b>1202</b> may be executed by one or more distinct physical hosts or other server computer systems. For example, two nodes <b>1204</b> of the data replication group <b>1212</b> may be executed by a first physical host and the remaining nodes <b>1204</b>, including the learner <b>1202</b>, of the data replication group <b>1212</b> and may be executed by a second physical host. The physical hosts are described in greater detail below.
The nodes <b>1204</b> and learner <b>1202</b> of the data replication group <b>1212</b> may be connected through various network connections. The network connection may be provided by various network devices, physical hosts, and other computer systems. For example, the physical hosts executing the nodes may include at least a virtualization layer and a network interface to enable the nodes to send and receive network traffic. Furthermore, the nodes <b>1204</b> and learner <b>1202</b> may be distributed across physical hosts and networks such that failure of one or more networks or physical hosts does not cause all of the nodes <b>1204</b> of the data replication group <b>1212</b> to fail. Although six nodes <b>1204</b> and one learner <b>1202</b> are illustrated in <figref idref="DRAWINGS">FIG. 12</figref>, any number of nodes <b>1204</b> and learners <b>1202</b> may be included in the data replication group <b>1212</b> and distributed across a plurality of distributed computer systems in accordance with the present disclosure. For example, five nodes <b>1204</b> of the data replication group illustrated in <figref idref="DRAWINGS">FIG. 12</figref> may be a learner executing a catchup algorithm. In addition, the data replication group may include a master node as described above (not shown in <figref idref="DRAWINGS">FIG. 12</figref> for simplicity).
The data replication group <b>1212</b> may further include software or other executable code configured to manage the operation of the data replication group <b>1212</b>, nodes <b>1204</b>, and/or learner <b>1202</b>. Managing the operation of the data replication group <b>1212</b> may include creating new nodes <b>1204</b>, replacing failed nodes <b>1204</b>, providing discovery of nodes, backing up data maintained by the nodes <b>1204</b>, determining roles of the consensus protocol to be performed by the nodes <b>1204</b>, executing a catchup algorithm, and such other operations as required to ensure the functioning of the data replication group <b>1212</b>. The data replication group <b>1212</b>, illustrated in <figref idref="DRAWINGS">FIG. 12</figref>, may be used in connection with various embodiments described herein. For example, the data replication group <b>1212</b> may be a member of a pool of data replication groups described above in connection with <figref idref="DRAWINGS">FIG. 8</figref>. In various embodiments, the learner <b>1202</b> may determine staleness based at least in part on receipt of a heartbeat operation from the master node or other node of the data replication group. For example, the data replication group may be configured such that the master node transmits a heartbeat message every two milliseconds to ensure communication between the nodes and renew the lease of the master node role. Therefore, if a node does not receive a heartbeat message at the expiration of an interval of time, the node may execute a catchup algorithm to determine if the node is stale.
The learner, as illustrated in <figref idref="DRAWINGS">FIG. 12</figref>, may execute an unsupervised catchup algorithm. For each learner <b>1202</b> of the data replication group <b>1212</b>, the learner may initialize a set of nodes <b>1204</b> to learn from. The set of nodes <b>1204</b> to learn from may include the original members of the data replication group <b>1212</b> or may include an updated membership of the data replication group based at least in part on information included in the log. If the learner is a new node and does not have membership information, the learner may determine the membership information and include the membership information in the set of nodes <b>1204</b> to learn from. The learner <b>1202</b> may then randomly or pseudo randomly select a particular node from the set of nodes <b>1204</b> to learn from. The learner may then transmit a learning request <b>1206</b> to the selected node.
The learner <b>1202</b> may then receive, in response to the learning request <b>1206</b> from the selected node, a log or other information from the node that may enable the learner <b>1202</b> to copy and/or replicate the state of the selected node. In various embodiments, the logs of the nodes <b>1204</b> may have been trimmed or otherwise deleted in order to reduce the amount of computing resources used by the nodes <b>1204</b>; in such cases, the learner <b>1202</b> may simply copy the state of the node (e.g., obtain a snapshot of the node and copy the snapshot over to the memory of the learner <b>1202</b>). After copying the state of the selected node the learner <b>1202</b> may continue the catchup algorithm. For example, the learner <b>1202</b> may select another node from the set of nodes <b>1204</b> to learn from. In various embodiments, the unsupervised catchup algorithm may include a round-robin element. Specifically, the learner <b>1202</b> may remove the selected node from the set of nodes <b>1204</b> which may be learned from. The learner <b>1202</b> may continue to transmit learning requests and check for staleness until the learner <b>1202</b> has determined that the state of the learner <b>1202</b> matches the state of the data replication group <b>1212</b>. Other catchup and/or learning algorithms may be used in accordance with the present disclosure, such as a random learner, designated learner, hierarchical learner, circular learner, full learner, or other suitable learning algorithm.
<figref idref="DRAWINGS">FIG. 13</figref> illustrates aspects of an example environment <b>1300</b> for implementing aspects in accordance with various embodiments. As will be appreciated, although a web-based environment is used for purposes of explanation, different environments may be used, as appropriate, to implement various embodiments. The environment includes an electronic client device <b>1302</b>, which can include any appropriate device operable to send and/or receive requests, messages, or information over an appropriate network <b>1304</b> and, in some embodiments, convey information back to a user of the device. Examples of such client devices include personal computers, cell phones, handheld messaging devices, laptop computers, tablet computers, set-top boxes, personal data assistants, embedded computer systems, electronic book readers, and the like. The network can include any appropriate network, including an intranet, the Internet, a cellular network, a local area network, a satellite network or any other such network and/or combination thereof. Components used for such a system can depend at least in part upon the type of network and/or environment selected. Many protocols and components for communicating via such a network are well known and will not be discussed herein in detail. Communication over the network can be enabled by wired or wireless connections and combinations thereof. In this example, the network includes the Internet and/or other publicly-addressable communications network, as the environment includes a web server <b>1306</b> for receiving requests and serving content in response thereto, although for other networks an alternative device serving a similar purpose could be used as would be apparent to one of ordinary skill in the art.
The illustrative environment includes at least one application server <b>1308</b> and a data store <b>1310</b>. It should be understood that there can be several application servers, layers or other elements, processes or components, which may be chained or otherwise configured, which can interact to perform tasks such as obtaining data from an appropriate data store. Servers, as used herein, may be implemented in various ways, such as hardware devices or virtual computer systems. In some contexts, servers may refer to a programming module being executed on a computer system. As used herein, unless otherwise stated or clear from context, the term “data store” refers to any device or combination of devices capable of storing, accessing and retrieving data, which may include any combination and number of data servers, databases, data storage devices and data storage media, in any standard, distributed, virtual or clustered environment. The application server can include any appropriate hardware, software and firmware for integrating with the data store as needed to execute aspects of one or more applications for the client device, handling some or all of the data access and business logic for an application. The application server may provide access control services in cooperation with the data store and is able to generate content including, but not limited to, text, graphics, audio, video and/or other content usable to be provided to the user, which may be served to the user by the web server in the form of HyperText Markup Language (“HTML”), Extensible Markup Language (“XML”), JavaScript, Cascading Style Sheets (“CSS”), JavaScript Object Notation (JSON), and/or another appropriate client-side structured language. Content transferred to a client device may be processed by the client device to provide the content in one or more forms including, but not limited to, forms that are perceptible to the user audibly, visually and/or through other senses. The handling of all requests and responses, as well as the delivery of content between the client device <b>1302</b> and the application server <b>1308</b>, can be handled by the web server using PHP: Hypertext Preprocessor (“PHP”), Python, Ruby, Perl, Java, HTML, XML, JSON, and/or another appropriate server-side structured language in this example. Further, operations described herein as being performed by a single device may, unless otherwise clear from context, be performed collectively by multiple devices, which may form a distributed and/or virtual system.
The data store <b>1310</b> can include several separate data tables, databases, data documents, dynamic data storage schemes and/or other data storage mechanisms and media for storing data relating to a particular aspect of the present disclosure. For example, the data store illustrated may include mechanisms for storing production data <b>1312</b> and user information <b>1316</b>, which can be used to serve content for the production side. The data store also is shown to include a mechanism for storing log data <b>1314</b>, which can be used for reporting, analysis or other such purposes. It should be understood that there can be many other aspects that may need to be stored in the data store, such as page image information and access rights information, which can be stored in any of the above listed mechanisms as appropriate or in additional mechanisms in the data store <b>1310</b>. The data store <b>1310</b> is operable, through logic associated therewith, to receive instructions from the application server <b>1308</b> and obtain, update or otherwise process data in response thereto. The application server <b>1308</b> may provide static, dynamic, or a combination of static and dynamic data in response to the received instructions. Dynamic data, such as data used in web logs (blogs), shopping applications, news services and other such applications may be generated by server-side structured languages as described herein or may be provided by a content management system (“CMS”) operating on, or under the control of, the application server. In one example, a user, through a device operated by the user, might submit a search request for a certain type of item. In this case, the data store might access the user information to verify the identity of the user and can access the catalog detail information to obtain information about items of that type. The information then can be returned to the user, such as in a results listing on a web page that the user is able to view via a browser on the user device <b>1302</b>. Information for a particular item of interest can be viewed in a dedicated page or window of the browser. It should be noted, however, that embodiments of the present disclosure are not necessarily limited to the context of web pages, but may be more generally applicable to processing requests in general, where the requests are not necessarily requests for content.
Each server typically will include an operating system that provides executable program instructions for the general administration and operation of that server and typically will include a computer-readable storage medium (e.g., a hard disk, random access memory, read only memory, etc.) storing instructions that, when executed (i.e., as a result of being executed) by a processor of the server, allow the server to perform its intended functions.
The environment, in one embodiment, is a distributed and/or virtual computing environment utilizing several computer systems and components that are interconnected via communication links, using one or more computer networks or direct connections. However, it will be appreciated by those of ordinary skill in the art that such a system could operate equally well in a system having fewer or a greater number of components than are illustrated in <figref idref="DRAWINGS">FIG. 13</figref>. Thus, the depiction of the system <b>1300</b> in <figref idref="DRAWINGS">FIG. 13</figref> should be taken as being illustrative in nature and not limiting to the scope of the disclosure.
The various embodiments further can be implemented in a wide variety of operating environments, which in some cases can include one or more user computers, computing devices or processing devices which can be used to operate any of a number of applications. User or client devices can include any of a number of computers, such as desktop, laptop or tablet computers running a standard operating system, as well as cellular, wireless and handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. Such a system also can include a number of workstations running any of a variety of commercially-available operating systems and other known applications for purposes such as development and database management. These devices also can include other electronic devices, such as dummy terminals, thin-clients, gaming systems and other devices capable of communicating via a network. These devices also can include virtual devices such as virtual machines, hypervisors and other virtual devices capable of communicating via a network.
Various embodiments of the present disclosure utilize at least one network that would be familiar to those skilled in the art for supporting communications using any of a variety of commercially-available protocols, such as Transmission Control Protocol/Internet Protocol (“TCP/IP”), User Datagram Protocol (“UDP”), protocols operating in various layers of the Open System Interconnection (“OSI”) model, File Transfer Protocol (“FTP”), Universal Plug and Play (“UpnP”), Network File System (“NFS”), Common Internet File System (“CIFS”) and AppleTalk. The network can be, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, a satellite network, and any combination thereof. In some embodiments, connection-oriented protocols may be used to communicate between network endpoints. Connection-oriented protocols (sometimes called connection-based protocols) are capable of transmitting data in an ordered stream. Connection-oriented protocols can be reliable or unreliable. For example, the TCP protocol is a reliable connection-oriented protocol. Asynchronous Transfer Mode (“ATM”) and Frame Relay are unreliable connection-oriented protocols. Connection-oriented protocols are in contrast to packet-oriented protocols such as UDP that transmit packets without a guaranteed ordering.
In embodiments utilizing a web server, the web server can run any of a variety of server or mid-tier applications, including Hypertext Transfer Protocol (“HTTP”) servers, FTP servers, Common Gateway Interface (“CGP”) servers, data servers, Java servers, Apache servers, and business application servers. The server(s) also may be capable of executing programs or scripts in response to requests from user devices, such as by executing one or more web applications that may be implemented as one or more scripts or programs written in any programming language, such as Java®, C, C# or C++, or any scripting language, such as Ruby, PHP, Perl, Python or TCL, as well as combinations thereof. The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase and IBM® as well as open-source servers such as MySQL, Postgres, SQLite, MongoDB, and any other server capable of storing, retrieving, and accessing structured or unstructured data. Database servers may include table-based servers, document-based servers, unstructured servers, relational servers, non-relational servers or combinations of these and/or other database servers.
The environment can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (“SAN”) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers or other network devices may be stored locally and/or remotely, as appropriate. Where a system includes computerized devices, each such device can include hardware elements that may be electrically coupled via a bus, the elements including, for example, at least one central processing unit (“CPU” or “processor”), at least one input device (e.g., a mouse, keyboard, controller, touch screen or keypad) and at least one output device (e.g., a display device, printer or speaker). Such a system may also include one or more storage devices, such as disk drives, optical storage devices and solid-state storage devices such as random access memory (“RAM”) or read-only memory (“ROM”), as well as removable media devices, memory cards, flash cards, etc.
Such devices also can include a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired), an infrared communication device, etc.), and working memory as described above. The computer-readable storage media reader can be connected with, or configured to receive, a computer-readable storage medium, representing remote, local, fixed, and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information. The system and various devices also typically will include a number of software applications, modules, services or other elements located within at least one working memory device, including an operating system and application programs, such as a client application or web browser. In addition, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets) or both. Further, connection to other computing devices such as network input/output devices may be employed.
Storage media and computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as, but not limited to, volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules or other data, including RAM, ROM, Electrically Erasable Programmable Read-Only Memory (“EEPROM”), flash memory or other memory technology, Compact Disc Read-Only Memory (“CD-ROM”), digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices or any other medium which can be used to store the desired information and which can be accessed by the system device. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.
Other variations are within the spirit of the present disclosure. Thus, while the disclosed techniques are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions and equivalents falling within the spirit and scope of the invention, as defined in the appended claims.
The use of the terms “a” and “an” and “the” and similar referents in the context of describing the disclosed embodiments (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms “comprising,” “having,” “including” and “containing” are to be construed as open-ended terms (i.e., meaning “including, but not limited to,”) unless otherwise noted. The term “connected,” when unmodified and referring to physical connections, is to be construed as partly or wholly contained within, attached to or joined together, even if there is something intervening. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein and each separate value is incorporated into the specification as if it were individually recited herein. The use of the term “set” (e.g., “a set of items”) or “subset” unless otherwise noted or contradicted by context, is to be construed as a nonempty collection comprising one or more members. Further, unless otherwise noted or contradicted by context, the term “subset” of a corresponding set does not necessarily denote a proper subset of the corresponding set, but the subset and the corresponding set may be equal.
Conjunctive language, such as phrases of the form “at least one of A, B, and C,” or “at least one of A, B and C,” unless specifically stated otherwise or otherwise clearly contradicted by context, is otherwise understood with the context as used in general to present that an item, term, etc., may be either A or B or C, or any nonempty subset of the set of A and B and C. For instance, in the illustrative example of a set having three members, the conjunctive phrases “at least one of A, B, and C” and “at least one of A, B and C” refer to any of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such conjunctive language is not generally intended to imply that certain embodiments require at least one of A, at least one of B and at least one of C each to be present.
Operations of processes described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. Processes described herein (or variations and/or combinations thereof) may be performed under the control of one or more computer systems configured with executable instructions and may be implemented as code (e.g., executable instructions, one or more computer programs or one or more applications) executing collectively on one or more processors, by hardware or combinations thereof. The code may be stored on a computer-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors. The computer-readable storage medium may be non-transitory. In some embodiments, the code is stored on set of one or more non-transitory computer-readable storage media having stored thereon executable instructions that, when executed (i.e., as a result of being executed) by one or more processors of a computer system, cause the computer system to perform operations described herein. The set of non-transitory computer-readable storage media may comprise multiple non-transitory computer-readable storage media and one or more of individual non-transitory storage media of the multiple non-transitory computer-readable storage media may lack all of the code while the multiple non-transitory computer-readable storage media collectively store all of the code.
Accordingly, in some examples, computer systems are configured to implement one or more services that singly or collectively perform operations of processes described herein. Such computer systems may, for instance, be configured with applicable hardware and/or software that enable the performance of the operations. Further, computer systems that implement various embodiments of the present disclosure may, in some examples, be single devices and, in other examples, be distributed computer systems comprising multiple devices that operate differently such that the distributed computer system performs the operations described herein and such that a single device may not perform all operations.
The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illuminate embodiments of the invention and does not pose a limitation on the scope of the invention unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the invention.
Embodiments of this disclosure are described herein, including the best mode known to the inventors for carrying out the invention. Variations of those embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors expect skilled artisans to employ such variations as appropriate and the inventors intend for embodiments of the present disclosure to be practiced otherwise than as specifically described herein. Accordingly, the scope of the present disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the scope of the present disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.
All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.
Contents3
14 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10171629B2 | Cites | United States of America | Search report |
| US2004263152A1 | Cites | United States of America | Applicant |
| US2005005200A1 | Cites | United States of America | Applicant |
| US2006020634A1 | Cites | United States of America | Applicant |
| US2006218204A1 | Cites | United States of America | Applicant |
| US2007156842A1 | Cites | United States of America | Applicant |
| US2007299955A1 | Cites | United States of America | Applicant |
| US2009049240A1 | Cites | United States of America | Applicant |
| US2011307886A1 | Cites | United States of America | Applicant |
| US2012011398A1 | Cites | United States of America | Search report |
| US2012117229A1 | Cites | United States of America | Applicant |
| US2012197868A1 | Cites | United States of America | Applicant |
| US2013110774A1 | Cites | United States of America | Applicant |
| US2013290249A1 | Cites | United States of America | Applicant |
| US2014032506A1 | Cites | United States of America | Applicant |
| US2014136896A1 | Cites | United States of America | Applicant |
| US2014172944A1 | Cites | United States of America | Applicant |
| US2014337393A1 | Cites | United States of America | Applicant |
| US2015169417A1 | Cites | United States of America | Applicant |
| US2015186229A1 | Cites | United States of America | Applicant |
| US2015372389A1 | Cites | United States of America | Applicant |
| US2016147859A1 | Cites | United States of America | Applicant |
| US2017004317A1 | Cites | United States of America | Applicant |
| US2017270176A1 | Cites | United States of America | Search report |
| US2017366451A1 | Cites | United States of America | Search report |
| US2017366619A1 | Cites | United States of America | Applicant |
| US2017371567A1 | Cites | United States of America | Applicant |
| US5909540A | Cites | United States of America | Applicant |
| US7039773B2 | Cites | United States of America | Applicant |
| US7711820B2 | Cites | United States of America | Search report |
| US7937482B1 | Cites | United States of America | Search report |
| US8301600B1 | Cites | United States of America | Applicant |
| US8572031B2 | Cites | United States of America | Search report |
| US8732517B1 | Cites | United States of America | Applicant |
| US8843441B1 | Cites | United States of America | Applicant |
| US8856593B2 | Cites | United States of America | Search report |
| US8868514B2 | Cites | United States of America | Applicant |
| US8965849B1 | Cites | United States of America | Applicant |
| US9047246B1 | Cites | United States of America | Search report |
| US9047331B2 | Cites | United States of America | Applicant |
| US9223843B1 | Cites | United States of America | Applicant |
| US9230000B1 | Cites | United States of America | Applicant |
| US9317576B2 | Cites | United States of America | Search report |
| US9489434B1 | Cites | United States of America | Applicant |
| US9552242B1 | Cites | United States of America | Applicant |
| US9569513B1 | Cites | United States of America | Search report |
| US9639589B1 | Cites | United States of America | Applicant |
| US9805108B2 | Cites | United States of America | Search report |
| US20040263152A1 | Cites | United States of America | Applicant |
| US20050005200A1 | Cites | United States of America | Applicant |
| US20060020634A1 | Cites | United States of America | Applicant |
| US20060218204A1 | Cites | United States of America | Applicant |
| US20070156842A1 | Cites | United States of America | Applicant |
| US20070299955A1 | Cites | United States of America | Applicant |
| US20090049240A1 | Cites | United States of America | Applicant |
| US20110307886A1 | Cites | United States of America | Applicant |
| US20120011398A1 | Cites | United States of America | Search report |
| US20120117229A1 | Cites | United States of America | Applicant |
| US20120197868A1 | Cites | United States of America | Applicant |
| US20130110774A1 | Cites | United States of America | Applicant |
| US20130290249A1 | Cites | United States of America | Applicant |
| US20140032506A1 | Cites | United States of America | Applicant |
| US20140136896A1 | Cites | United States of America | Applicant |
| US20140172944A1 | Cites | United States of America | Applicant |
| US20140337393A1 | Cites | United States of America | Applicant |
| US20150169417A1 | Cites | United States of America | Applicant |
| US20150186229A1 | Cites | United States of America | Applicant |
| US20150372389A1 | Cites | United States of America | Applicant |
| US20160147859A1 | Cites | United States of America | Applicant |
| US20170004317A1 | Cites | United States of America | Applicant |
| US20170270176A1 | Cites | United States of America | Search report |
| US20170366451A1 | Cites | United States of America | Search report |
| US20170366619A1 | Cites | United States of America | Applicant |
| US20170371567A1 | Cites | United States of America | Applicant |
2 priority claims, no other members on record
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 201615253677 | United States of America | A | |
| US201615253677 | – | – | – |
92 transactions on the USPTO file
Allowed after 1 non-final rejection and 1 RCE.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Email NotificationEML_NTR | EML_NTR | |
| Printer Rush- No mailingTCPB | TCPB | |
| Mail Response to 312 Amendment (PTO-271)MN271 | MN271 | |
| Response to Amendment under Rule 312N271 | N271 | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Response to Reasons for AllowanceREAS | REAS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Mail-Record Petition Decision of Granted to Withdraw from Issue - with assigned Patent NO.MP015 | MP015 | |
| Record Petition Decision of Granted to Withdraw from Issue - with assigned Patent NO.P015 | P015 | |
| Withdrawal Patent Case from IssueWFIS | WFIS | |
| Petition EnteredPET. | PET. | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Email NotificationEML_NTR | EML_NTR | |
| Printer Rush- No mailingTCPB | TCPB | |
| Mail Response to 312 Amendment (PTO-271)MN271 | MN271 | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Response to Amendment under Rule 312N271 | N271 | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail PUB Notice of non-compliant IDSMM327-B | MM327-B | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| PUB Notice of non-compliant IDSM327-B | M327-B | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Email NotificationEML_NTR | EML_NTR | |
| Mailing Corrected Notice of AllowabilityMCNOA | MCNOA | |
| Corrected Notice of AllowabilityCNOA | CNOA | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Interview Summary - Examiner Initiated - TelephonicEXET | EXET | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Email NotificationEML_NTR | EML_NTR | |
| Application Is Now CompleteCOMP | COMP | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Sent to Classification ContractorPGPC | PGPC | |
| FITF set to YES - revise initial settingFTFS | FTFS | |
| Cleared by OIPE CSRL194 | L194 | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| PGPubs nonPub RequestNPRQ | NPRQ | |
| PTO/SB/69-Authorize EPO Access to Search ResultsSREXR141 | SREXR141 | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
1 legal event, as the office reported them to INPADOC
Events
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP |
Numbers
- Publication
- 10387450
- Publication, DOCDB
- 10387450
- Publication, EPODOC
- US10387450
- Application
- 15253677
- Application, DOCDB
- 201615253677
- Application, EPODOC
- US201615253677
Titles
- English
- Leadership lease protocol for data replication groups
Patent term adjustment
- A delay
- +306 daysthe office missed an examination deadline
- B delay
- +121 dayspendency past three years
- Applicant delay
- −288 days
- Net adjustment
- 139 days
Classification
- CPC, 1
- G06F16/27
- IPC, 2
- G06F17 30
- G06F16 27
- USPC, 1
- 709209000