Patent ID: 8010648
Filing Date: 2011-08-30
Classification: G06F

Abstract:
1. One or more computer storage media storing computer executable instructions for performing a method of placing a plurality of replicas on a plurality of nodes in a network of nodes, the method comprising: selecting a first node for placement of a first replica based on a first location-based preference; placing the first replica on the first node; updating location-based preferences for placement of the plurality of replicas to reflect that the first location-based preference has been satisfied by placement of the first replica, wherein the location-based preferences comprise an ordered list with write preferences ordered before read preferences; updating a filter based on an upgrade domain and fault domain of the selected node at which the first replica was placed, wherein each upgrade domain contains two or more nodes to receive upgrades; and iteratively repeating: determining if a location-based preference or a load-based ordering is to be used for selecting a new node for placing a new replica; if a load-based ordering is to be used, selecting the new node according to a load-based ordering; if a location-based preference is to be used, selecting the new node according to a remaining location-based preference that has not yet been satisfied; applying the filter to the new node to determine whether an upgrade domain and a fault domain of the new node matches an upgrade domain and fault domain of any node at which another replica of the plurality of replicas has been placed; if the filter does not return a match, repeating selecting a new node based on a location-based preference or a load-based ordering and applying the filter to the new node until the filter returns a match; when the filter returns a match, placing the new replica on the new node; updating the location-based preferences if a location-based preference was satisfied by placement of the new replica; and updating the filter based on an upgrade domain and fault domain of the new node at which the new replica was placed, until there are no more replicas to be placed.