1. A distributed storage system for storing blobs, comprising: a plurality of local instances, wherein each respective local instance includes a plurality of server computers, having memory and one or more processors storing one or more programs for execution by the one or more processors, and wherein at least a subset of the local instances are at physically distinct geographic locations; and a plurality of global instances distinct from the local instances, wherein each respective global instance includes a plurality of server computers, having memory and one or more processors storing one or more programs for execution by the one or more processors; wherein each blob stored in the distributed storage system has corresponding metadata, and wherein the metadata includes information identifying a set of one or more local instances or global instances where the respective blob is stored; wherein each respective local instance: stores data for a respective set of blobs in a plurality of data stores having a plurality of distinct data store types, wherein the respective set of blobs is non-empty and is a subset of all blobs stored in the distributed storage system; and stores the metadata for the respective set of blobs in a metadata store distinct from the data stores; wherein each respective global instance stores the metadata for all blobs stored at all local instances; and wherein one global instance has a location assignment daemon, and wherein for each blob the location assignment daemon: determines locations of respective local instances currently storing replicas of the blob; determines a number of target replica locations for the blob according to a respective placement policy assigned to the blob; and upon determining the respective local instances currently storing replicas of the blob are fewer than the target number of replica locations, issuing a replication command to a first local instance to create a new replica of the blob at a second instance in accordance with the respective placement policy.