Distributie van globale gegevens met Azure Cosmos DB-onder de motorkapGlobal data distribution with Azure Cosmos DB - under the hood

Azure Cosmos DB is een Foundational service in azure, zodat deze wereld wijd wordt geïmplementeerd in alle Azure-regio's, inclusief de open bare, soevereine, ministerie van defensie (DoD) en overheids Clouds.Azure Cosmos DB is a foundational service in Azure, so it's deployed across all Azure regions worldwide including the public, sovereign, Department of Defense (DoD) and government clouds. Binnen een Data Center implementeren en beheren we de Azure Cosmos DB op enorme stem pels computers, elk met speciale lokale opslag.Within a data center, we deploy and manage the Azure Cosmos DB on massive stamps of machines, each with dedicated local storage. Binnen een Data Center wordt Azure Cosmos DB geïmplementeerd in verschillende clusters, waardoor er mogelijk meerdere hardware-generaties worden uitgevoerd.Within a data center, Azure Cosmos DB is deployed across many clusters, each potentially running multiple generations of hardware. Computers in een cluster zijn doorgaans verdeeld over 10-20-fout domeinen voor hoge Beschik baarheid binnen een regio.Machines within a cluster are typically spread across 10-20 fault domains for high availability within a region. In de volgende afbeelding ziet u de Cosmos DB globale distributie systeem topologie:The following image shows the Cosmos DB global distribution system topology:

Systeem topologie

Wereld wijde distributie in azure Cosmos DB is kant -en-klare: U kunt op elk gewenst moment, met enkele klikken of programmatisch met één API-aanroep, de geografische regio's toevoegen of verwijderen die zijn gekoppeld aan uw Cosmos-data base.Global distribution in Azure Cosmos DB is turnkey: At any time, with a few clicks or programmatically with a single API call, you can add or remove the geographical regions associated with your Cosmos database. Een Cosmos-data base bestaat op zijn beurt uit een set Cosmos-containers.A Cosmos database, in turn, consists of a set of Cosmos containers. In Cosmos DB fungeren containers als logische eenheden van distributie en schaal baarheid.In Cosmos DB, containers serve as the logical units of distribution and scalability. De verzamelingen, tabellen en grafieken die u maakt, zijn (intern) slechts Cosmos containers.The collections, tables, and graphs you create are (internally) just Cosmos containers. Containers zijn volledig schema-neutraal en bieden een bereik voor een query.Containers are completely schema-agnostic and provide a scope for a query. Gegevens in een Cosmos-container worden automatisch geïndexeerd bij opname.Data in a Cosmos container is automatically indexed upon ingestion. Met automatisch indexeren kunnen gebruikers de gegevens opvragen zonder dat er problemen zijn met schema-en index beheer, met name in een wereld wijd gedistribueerde configuratie.Automatic indexing enables users to query the data without the hassles of schema or index management, especially in a globally distributed setup.

  • In een bepaalde regio worden gegevens in een container gedistribueerd met behulp van een partitie sleutel, die u opgeeft en die transparant wordt beheerd door de onderliggende fysieke partities (lokale distributie).In a given region, data within a container is distributed by using a partition-key, which you provide and is transparently managed by the underlying physical partitions (local distribution).

  • Elke fysieke partitie wordt ook gerepliceerd tussen geografische regio's (globale distributie).Each physical partition is also replicated across geographical regions (global distribution).

Wanneer een app die Cosmos DB, elastisch de door Voer op een Cosmos-container schaalt of meer opslag gebruikt, Cosmos DB transparante bewerkingen voor partitie beheer (splitsen, klonen, verwijderen) in alle regio's transparant afhandelen.When an app using Cosmos DB elastically scales throughput on a Cosmos container or consumes more storage, Cosmos DB transparently handles partition management operations (split, clone, delete) across all the regions. Afhankelijk van de schaal, distributie of fouten, blijft Cosmos DB één systeem kopie van de gegevens in de containers opgeven, die wereld wijd worden gedistribueerd over een wille keurig aantal regio's.Independent of the scale, distribution, or failures, Cosmos DB continues to provide a single system image of the data within the containers, which are globally distributed across any number of regions.

Zoals in de volgende afbeelding wordt weer gegeven, worden de gegevens binnen een container verdeeld over twee dimensies: binnen een regio en in verschillende regio's, over het hele land.As shown in the following image, the data within a container is distributed along two dimensions - within a region and across regions, worldwide:

Systeem topologie

Een fysieke partitie wordt geïmplementeerd met een groep replica's, een zogenaamde replicaset.A physical partition is implemented by a group of replicas, called a replica-set. Elke machine fungeert als host voor honderden replica's die overeenkomen met verschillende fysieke partities binnen een vaste set processen, zoals wordt weer gegeven in de bovenstaande afbeelding.Each machine hosts hundreds of replicas that correspond to various physical partitions within a fixed set of processes as shown in the image above. Replica's die overeenkomen met de fysieke partities worden dynamisch geplaatst en gelijkmatig verdeeld over de computers binnen een cluster en data centers binnen een regio.Replicas corresponding to the physical partitions are dynamically placed and load balanced across the machines within a cluster and data centers within a region.

Een replica maakt uniek deel uit van een Azure Cosmos DB-Tenant.A replica uniquely belongs to an Azure Cosmos DB tenant. Elke replica fungeert als host voor een exemplaar van de Data base-enginevan Cosmos DB, waarmee de resources en de bijbehorende indexen worden beheerd.Each replica hosts an instance of Cosmos DB’s database engine, which manages the resources as well as the associated indexes. De Cosmos-data base-engine wordt uitgevoerd op een ARS-systeem (Atom-record-Sequence).The Cosmos database engine operates on an atom-record-sequence (ARS) based type system. De engine is neutraal met het concept van een schema, waardoor de grens tussen de waarden van de structuur en het exemplaar van records wordt vervaagd.The engine is agnostic to the concept of a schema, blurring the boundary between the structure and instance values of records. Cosmos DB behaalt volledige schema AGNOSTICISM door automatisch alles te indexeren bij opname op een efficiënte manier, zodat gebruikers hun wereld wijd gedistribueerde gegevens kunnen doorzoeken zonder schema-of index beheer.Cosmos DB achieves full schema agnosticism by automatically indexing everything upon ingestion in an efficient manner, which allows users to query their globally distributed data without having to deal with schema or index management.

De Cosmos-data base-engine bestaat uit onderdelen, zoals de implementatie van verschillende coördinatie primitieven, taal runtimes, de query processor en de opslag-en indexerings subsystemen die verantwoordelijk zijn voor transactionele opslag en het indexeren van gegevens.The Cosmos database engine consists of components including implementation of several coordination primitives, language runtimes, the query processor, and the storage and indexing subsystems responsible for transactional storage and indexing of data, respectively. Om duurzaamheid en hoge Beschik baarheid te kunnen bieden, behoudt de data base-engine de gegevens en index op Ssd's en repliceert deze naar de data base engine-instanties binnen de respectievelijk replicaset (en).To provide durability and high availability, the database engine persists its data and index on SSDs and replicates it among the database engine instances within the replica-set(s) respectively. Grotere tenants komen overeen met een hogere schaal van door Voer en opslag en hebben een grotere of meer replica's of beide.Larger tenants correspond to higher scale of throughput and storage and have either bigger or more replicas or both. Elk onderdeel van het systeem is volledig asynchroon: er zijn geen threads die ooit worden geblokkeerd, en elke thread heeft korte tijdige werkzaamheden zonder enige overbodige thread switches.Every component of the system is fully asynchronous – no thread ever blocks, and each thread does short-lived work without incurring any unnecessary thread switches. De limiet voor de frequentie en de back-updruk wordt in de hele stack van de toegangs beheer koppeling naar alle I/O-paden.Rate-limiting and back-pressure are plumbed across the entire stack from the admission control to all I/O paths. De Cosmos-data base-engine is ontworpen om gebruik te maken van nauw keurige gelijktijdigheid en om hoge door voer te bieden terwijl u binnen frugale hoeveel heden systeem bronnen werkt.Cosmos database engine is designed to exploit fine-grained concurrency and to deliver high throughput while operating within frugal amounts of system resources.

De wereld wijde distributie van Cosmos DB is afhankelijk van twee belang rijke abstracties: replica sets en partitie sets.Cosmos DB’s global distribution relies on two key abstractions – replica-sets and partition-sets. Een replicaset is een modulair galerie bouwer-blok voor coördinatie en een partitieset is een dynamische overlay van een of meer geografisch gedistribueerde fysieke partities.A replica-set is a modular Lego block for coordination, and a partition-set is a dynamic overlay of one or more geographically distributed physical partitions. Om te begrijpen hoe globale distributie werkt, moeten we deze twee belang rijke abstracties begrijpen.To understand how global distribution works, we need to understand these two key abstractions.

Replica setsReplica-sets

Een fysieke partitie wordt gematerialeerd als een met zichzelf beheerde en dynamisch taak verdeling van de gespreide groep replica's over meerdere fout domeinen, een zogenaamde replicaset.A physical partition is materialized as a self-managed and dynamically load-balanced group of replicas spread across multiple fault domains, called a replica-set. Deze verzameling implementeert gezamenlijk het computer Protocol van de gerepliceerde status om de gegevens in de fysieke partitie Maxi maal beschikbaar, duurzaam en consistent te maken.This set collectively implements the replicated state machine protocol to make the data within the physical partition highly available, durable, and consistent. Het lidmaatschap van de replicaset N is dynamisch; het zorgt voor schommeling tussen Nmin. en NMAX. op basis van de fouten, administratieve bewerkingen en de tijd voor mislukte replica's om opnieuw te genereren/te herstellen.The replica-set membership N is dynamic – it keeps fluctuating between NMin and NMax based on the failures, administrative operations, and the time for failed replicas to regenerate/recover. Op basis van de wijzigingen in het lidmaatschap configureert het replicatie protocol ook de grootte van de lees-en schrijf quorums.Based on the membership changes, the replication protocol also reconfigures the size of read and write quorums. Om de door Voer die is toegewezen aan een bepaalde fysieke partitie uniform te distribueren, hebben we twee ideeën ondergaan:To uniformly distribute the throughput that is assigned to a given physical partition, we employ two ideas:

  • Ten eerste zijn de kosten voor het verwerken van de schrijf aanvragen op de leider hoger dan de kosten voor het Toep assen van de updates op de volger.First, the cost of processing the write requests on the leader is higher than the cost of applying the updates on the follower. De leider heeft dan een budget van meer systeem bronnen dan de volgers.Correspondingly, the leader is budgeted more system resources than the followers.

  • Ten tweede, voor zover mogelijk, is het Lees quorum voor een bepaald consistentie niveau uitsluitend samengesteld uit de opvolg replica's.Secondly, as far as possible, the read quorum for a given consistency level is composed exclusively of the follower replicas. Voor komt u dat u contact opneemt met de leider voor lees bewerkingen, tenzij dit vereist is.We avoid contacting the leader for serving reads unless required. We hebben een aantal ideeën ondergaan van het onderzoek dat is uitgevoerd op de relatie van belasting en capaciteit in de op quorum gebaseerde systemen voor de vijf consistentie modellen die Cosmos DB ondersteunt.We employ a number of ideas from the research done on the relationship of load and capacity in the quorum-based systems for the five consistency models that Cosmos DB supports.

Partitie setsPartition-sets

Een groep fysieke partities, één van elk geconfigureerd met de Cosmos-database regio's, bestaat uit het beheren van dezelfde set sleutels die worden gerepliceerd in alle geconfigureerde regio's.A group of physical partitions, one from each of the configured with the Cosmos database regions, is composed to manage the same set of keys replicated across all the configured regions. Deze hogere coördinatie primitieve wordt een partitieset genoemd: een geografisch gedistribueerde dynamische overlay van fysieke partities die een bepaalde set sleutels beheert.This higher coordination primitive is called a partition-set - a geographically distributed dynamic overlay of physical partitions managing a given set of keys. Terwijl een bepaalde fysieke partitie (een replicaset) binnen een cluster ligt, kan een partitieset clusters, data centers en geografische regio's omvatten, zoals wordt weer gegeven in de onderstaande afbeelding:While a given physical partition (a replica-set) is scoped within a cluster, a partition-set can span clusters, data centers, and geographical regions as shown in the image below:

Systeem topologie

U kunt een partitie instellen als een geografisch verspreide ' superreplicaset ', die bestaat uit meerdere replica sets die eigenaar zijn van dezelfde set sleutels.You can think of a partition-set as a geographically dispersed “super replica-set”, which is composed of multiple replica-sets owning the same set of keys. Net als bij een replicaset is het lidmaatschap van een partitieset ook dynamisch. Dit kan worden geschommeld op basis van de impliciete bewerkingen voor fysieke partitie beheer om nieuwe partities toe te voegen aan of te verwijderen uit een bepaalde partitieset (bijvoorbeeld wanneer u de door Voer voor een container uitschaalt, een regio aan uw Cosmos-Data Base toevoegt of eruit verwijdert).Similar to a replica-set, a partition-set’s membership is also dynamic – it fluctuates based on implicit physical partition management operations to add/remove new partitions to/from a given partition-set (for instance, when you scale out throughput on a container, add/remove a region to your Cosmos database, or when failures occur). Omdat elk van de partities (van een partitieset) het lidmaatschap van de partitieset binnen een eigen replicaset beheert, wordt het lidmaatschap volledig gedecentraliseerd en Maxi maal beschikbaar.By virtue of having each of the partitions (of a partition-set) manage the partition-set membership within its own replica-set, the membership is fully decentralized and highly available. Tijdens de herconfiguratie van een partitieset wordt ook de topologie van de overlay tussen fysieke partities tot stand gebracht.During the reconfiguration of a partition-set, the topology of the overlay between physical partitions is also established. De topologie wordt dynamisch geselecteerd op basis van het consistentie niveau, de geografische afstand en de beschik bare netwerk bandbreedte tussen de bron-en doel-fysieke partities.The topology is dynamically selected based on the consistency level, geographical distance, and available network bandwidth between the source and the target physical partitions.

Met de service kunt u uw Cosmos-data bases configureren met één schrijf regio of meerdere schrijf regio's, en afhankelijk van de keuze, worden partitie sets geconfigureerd om schrijf bewerkingen in precies één of alle regio's te accepteren.The service allows you to configure your Cosmos databases with either a single write region or multiple write regions, and depending on the choice, partition-sets are configured to accept writes in exactly one or all regions. Het systeem maakt gebruik van een geneste consensus-protocol op twee niveaus: één niveau werkt binnen de replica's van een fysieke partitie die de schrijf bewerkingen accepteert, en de andere werkt op het niveau van een partitie, zodat alle vastgelegde schrijf acties binnen de partitieset volledig worden gegarandeerd.The system employs a two-level, nested consensus protocol – one level operates within the replicas of a replica-set of a physical partition accepting the writes, and the other operates at the level of a partition-set to provide complete ordering guarantees for all the committed writes within the partition-set. Deze meerlaagse, geneste consensus is van cruciaal belang voor de implementatie van onze strikte Sla's voor hoge Beschik baarheid, evenals de implementatie van de consistentie modellen, die Cosmos DB aan haar klanten aanbieden.This multi-layered, nested consensus is critical for the implementation of our stringent SLAs for high availability, as well as the implementation of the consistency models, which Cosmos DB offers to its customers.

ConflictoplossingConflict resolution

Het ontwerp voor de update doorgifte, conflict oplossing en het bijhouden van causality is geïnspireerd op het vorige werk op de epidemie-algoritmen en het Bayou -systeem.Our design for the update propagation, conflict resolution, and causality tracking is inspired from the prior work on epidemic algorithms and the Bayou system. Hoewel de kernels van de ideeën geruime zijn en een handig referentie kader bieden voor het communiceren van het systeem ontwerp van de Cosmos DB, hebben ze ook aanzienlijke trans formatie ondergaan toen we ze op het Cosmos DB systeem hebben toegepast.While the kernels of the ideas have survived and provide a convenient frame of reference for communicating the Cosmos DB’s system design, they have also undergone significant transformation as we applied them to the Cosmos DB system. Dit was nodig omdat de vorige systemen niet zijn ontworpen met de resource governance, noch met de schaal waarop Cosmos DB moet worden uitgevoerd, noch om de mogelijkheden te bieden (bijvoorbeeld gebonden verouderde consistentie) en de strikte en uitgebreide Sla's die Cosmos DB aan zijn klanten.This was needed, because the previous systems were designed neither with the resource governance nor with the scale at which Cosmos DB needs to operate, nor to provide the capabilities (for example, bounded staleness consistency) and the stringent and comprehensive SLAs that Cosmos DB delivers to its customers.

Terughalen dat een partitieset wordt gedistribueerd over meerdere regio's en volgt het replicatie protocol Cosmos Db's (Multi-Region Writes) om de gegevens te repliceren tussen de fysieke partities waaruit een bepaalde partitieset bestaat.Recall that a partition-set is distributed across multiple regions and follows Cosmos DBs (multi-region writes) replication protocol to replicate the data among the physical partitions comprising a given partition-set. Elke fysieke partitie (van een partitieset) accepteert schrijf bewerkingen en verzendt normaal gesp roken Lees bewerkingen naar de clients die lokaal zijn voor die regio.Each physical partition (of a partition-set) accepts writes and serves reads typically to the clients that are local to that region. Schrijf bewerkingen die worden geaccepteerd door een fysieke partitie binnen een regio worden blijvend vastgelegd en Maxi maal beschikbaar gemaakt in de fysieke partitie voordat ze worden bevestigd aan de client.Writes accepted by a physical partition within a region are durably committed and made highly available within the physical partition before they are acknowledged to the client. Dit zijn voorlopige schrijf bewerkingen en worden door gegeven aan andere fysieke partities in de partitieset met een anti-entropie kanaal.These are tentative writes and are propagated to other physical partitions within the partition-set using an anti-entropy channel. Clients kunnen voorlopige of doorgevoerde schrijf bewerkingen aanvragen door een aanvraag header door te geven.Clients can request either tentative or committed writes by passing a request header. De anti-entropie doorgifte (met inbegrip van de frequentie van doorgifte) is dynamisch, op basis van de topologie van de partitieset, de regionale nabijheid van de fysieke partities en het geconfigureerde consistentie niveau.The anti-entropy propagation (including the frequency of propagation) is dynamic, based on the topology of the partition-set, regional proximity of the physical partitions, and the consistency level configured. Binnen een partitieset volgt Cosmos DB een primair doorvoer schema met een dynamisch geselecteerde arbiter-partitie.Within a partition-set, Cosmos DB follows a primary commit scheme with a dynamically selected arbiter partition. De selectie van arbiter is dynamisch en vormt een integraal onderdeel van de herconfiguratie van de partitieset op basis van de topologie van de overlay.The arbiter selection is dynamic and is an integral part of the reconfiguration of the partition-set based on the topology of the overlay. De vastgelegde schrijf bewerkingen (inclusief meerdere rijen/batch-updates) zijn gegarandeerd.The committed writes (including multi-row/batched updates) are guaranteed to be ordered.

We hebben gebruikgemaakt van gecodeerde vector klokken (die de regio-ID en logische klokken bevatten die overeenkomen met elk niveau van consensus in de replicaset en de partitieset) voor causality tracking en versie vectoren om update conflicten te detecteren en op te lossen.We employ encoded vector clocks (containing region ID and logical clocks corresponding to each level of consensus at the replica-set and partition-set, respectively) for causality tracking and version vectors to detect and resolve update conflicts. De topologie en het selectie algoritme voor peers zijn ontworpen om te zorgen voor vaste en minimale opslag en minimale netwerk overhead van versie vectoren.The topology and the peer selection algorithm are designed to ensure fixed and minimal storage and minimal network overhead of version vectors. Met het algoritme wordt de strikte convergentie-eigenschap gegarandeerd.The algorithm guarantees the strict convergence property.

Voor de Cosmos-data bases die zijn geconfigureerd met meerdere schrijf regio's, biedt het systeem een aantal flexibele beleids regels voor het automatisch oplossen van conflicten voor de ontwikkel aars waaruit kan worden gekozen, waaronder:For the Cosmos databases configured with multiple write regions, the system offers a number of flexible automatic conflict resolution policies for the developers to choose from, including:

  • Last-write-WINS (LWW), die standaard gebruikmaakt van een door het systeem gedefinieerde tijds tempel eigenschap (die is gebaseerd op het klok protocol voor tijd synchronisatie).Last-Write-Wins (LWW), which, by default, uses a system-defined timestamp property (which is based on the time-synchronization clock protocol). Cosmos DB kunt u ook een aangepaste numerieke eigenschap opgeven die moet worden gebruikt voor het oplossen van conflicten.Cosmos DB also allows you to specify any other custom numerical property to be used for conflict resolution.
  • Door de toepassing gedefinieerde (aangepast) beleid voor conflict oplossing (uitgedrukt in samenvoeg procedures), dat is ontworpen voor het afstemmen van een door de toepassing gedefinieerde semantiek van conflicten.Application-defined (Custom) conflict resolution policy (expressed via merge procedures), which is designed for application-defined semantics reconciliation of conflicts. Deze procedures worden opgeroepen wanneer de Write-write-conflicten worden gedetecteerd onder de verantwoordelijkheid van een database transactie aan de server zijde.These procedures get invoked upon detection of the write-write conflicts under the auspices of a database transaction on the server side. Het systeem biedt precies eenmaal garantie voor het uitvoeren van een samenvoeg procedure als onderdeel van het toezeggings protocol.The system provides exactly once guarantee for the execution of a merge procedure as a part of the commitment protocol. Er zijn verschillende voor beelden van conflict oplossing beschikbaar waarmee u kunt spelen met.There are several conflict resolution samples available for you to play with.

Consistentie modellenConsistency Models

Of u uw Cosmos-data base met één of meerdere schrijf regio's configureert, u kunt kiezen uit de vijf goed gedefinieerde consistentie modellen.Whether you configure your Cosmos database with a single or multiple write regions, you can choose from the five well-defined consistency models. Bij meerdere schrijf regio's zijn het volgende enkele van de belangrijkste aspecten van de consistentie niveaus:With multiple write regions, the following are a few notable aspects of the consistency levels:

Met de consistentie van de gebonden veroudering wordt gegarandeerd dat alle Lees bewerkingen binnen K -voor voegsels vallen of T seconden van de laatste schrijf bewerking in een van de regio's.The bounded staleness consistency guarantees that all reads will be within K prefixes or T seconds from the latest write in any of the regions. Bovendien zijn Lees bewerkingen met gebonden verouderde consistentie gegarandeerd een monotone en met consistente voorvoegsel garanties.Furthermore, reads with bounded staleness consistency are guaranteed to be monotonic and with consistent prefix guarantees. Het anti-entropie protocol werkt op een frequentie-beperkte manier en zorgt ervoor dat de voor voegsels niet worden geaccumuleerd en dat de druk op de schrijf bewerkingen niet moet worden toegepast.The anti-entropy protocol operates in a rate-limited manner and ensures that the prefixes do not accumulate and the backpressure on the writes does not have to be applied. Met sessie consistentie wordt de monotone Lees-, monotone schrijf-, lees-en schrijf bewerkingen gegarandeerd.Session consistency guarantees monotonic read, monotonic write, read your own writes, write follows read, and consistent prefix guarantees, worldwide. Voor de data bases die zijn geconfigureerd met sterke consistentie, zijn de voor delen (lage schrijf latentie, hoge schrijf Beschik baarheid) van meerdere schrijf regio's niet van toepassing, vanwege synchrone replicatie tussen regio's.For the databases configured with strong consistency, the benefits (low write latency, high write availability) of multiple write regions does not apply, because of synchronous replication across regions.

De semantiek van de vijf consistentie modellen in Cosmos DB worden hierbeschreven en mathematisch beschreven met behulp van een TLA -specificatie ophoog niveau.The semantics of the five consistency models in Cosmos DB are described here, and mathematically described using a high-level TLA+ specifications here.

Volgende stappenNext steps

Meer informatie over het configureren van globale distributie met behulp van de volgende artikelen:Next learn how to configure global distribution by using the following articles: