Patent ID: 7979652

Claim:
A system, comprising: a data replication system comprising a plurality of data replication nodes, wherein the data replication system is configured to designate a ratio of a number of nodes configured for synchronous replicate writes to a number of nodes configured for asynchronous replicate writes, wherein said ratio is determined according to a policy comprising one or more thresholds; select the number of nodes configured for synchronous replicate writes, according to said ratio; select the number of nodes configured for asynchronous replicate writes, according to said ratio; each data replication node comprising a durable storage, wherein, in response to receiving a write request from a client, the data replication system is configured to perform a synchronous replicate data write of the data for the write request to each of a set of the number of nodes configured for synchronous replicate writes of the plurality of data replication nodes and to perform an asynchronous replicate data write of the data for the write request to each of the plurality of data replication nodes not in the set, wherein the data replication system is configurable to change a number of nodes in said set for which synchronous replicate data writes are performed in response to write requests from clients, and wherein the set includes fewer than all the plurality of data replication nodes; wherein the data replication system is configured to send a write completion acknowledgement to the client once each synchronous replicate data write has been completed in the durable storage in each respective node of the set regardless of whether each asynchronous replicate data write has yet been completed in the durable storage in each respective node not in the set; wherein the data replication system is further configured to obtain a performance metric or a durability metric, wherein said performance metric is determined according to the response time of said data replication system, wherein said response time comprises the difference between the time the data replication system receives a client request and the time the data replication system acknowledges completion of the write request; compare said performance metric or said durability metric to said one or more thresholds; and change said ratio when one of said one or more thresholds is reached by said performance metric or said durability metric.