Distribuzione globale dei dati con Azure Cosmos DB - informazioni sul funzionamentoGlobal data distribution with Azure Cosmos DB - under the hood

Azure Cosmos DB è un servizio di base in Azure, pertanto viene distribuito in tutte le aree di Azure in tutto il mondo, inclusi i cloud pubblici, sovrani, del Dipartimento della Difesa (DoD) e del governo.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. All'interno di un data center, distribuiamo e gestiamo Azure Cosmos DB su moltissimi tipi di computer, ognuno con risorse di archiviazione locali dedicate.Within a data center, we deploy and manage the Azure Cosmos DB on massive stamps of machines, each with dedicated local storage. All'interno di un data center, Azure Cosmos DB viene distribuito tra vari cluster, ognuno dei quali esegue potenzialmente più generazioni di hardware.Within a data center, Azure Cosmos DB is deployed across many clusters, each potentially running multiple generations of hardware. I computer all'interno di un cluster sono in genere distribuiti tra 10-20 domini di errore per la disponibilità elevata all'interno di un'area.Machines within a cluster are typically spread across 10-20 fault domains for high availability within a region. L'immagine seguente mostra la topologia del sistema di distribuzione globale di Cosmos DB:The following image shows the Cosmos DB global distribution system topology:

Topologia del sistema

La distribuzione globale in Azure Cosmos DB è chiavi in base alle chiavi in base alle chiavi in base aquanto inversione di livello:Global distribution in Azure Cosmos DB is In qualsiasi momento, con pochi clic o a livello di codice con una singola chiamata API, è possibile aggiungere o rimuovere le aree geografiche associate al database Cosmos.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. Un database Cosmos, a sua volta, è costituito da un insieme di contenitori Cosmos.A Cosmos database, in turn, consists of a set of Cosmos containers. In Cosmos DB, i contenitori fungono da unità logiche di distribuzione e scalabilità.In Cosmos DB, containers serve as the logical units of distribution and scalability. Le raccolte, le tabelle e i grafici che vengono creati sono (internamente) solo contenitori Cosmos.The collections, tables, and graphs you create are (internally) just Cosmos containers. I contenitori sono completamente indipendenti da schema e forniscono un ambito per una query.Containers are completely schema-agnostic and provide a scope for a query. I dati in un contenitore Cosmos vengono indicizzati automaticamente al momento dell'inserimento.Data in a Cosmos container is automatically indexed upon ingestion. L'indicizzazione automatica consente agli utenti di eseguire query sui dati senza i noglidi della gestione dello schema o dell'indice, in particolare in un'installazione distribuita a livello globale.Automatic indexing enables users to query the data without the hassles of schema or index management, especially in a globally distributed setup.

  • In una determinata area, i dati all'interno di un contenitore vengono distribuiti utilizzando una chiave di partizione, che è disponibile e gestita in modo trasparente dalle partizioni fisiche sottostanti (distribuzione locale).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).

  • Ogni partizione fisica viene replicata anche tra aree geografiche (distribuzione globale).Each physical partition is also replicated across geographical regions (global distribution).

Quando un'app che usa Cosmos DB scala in modo elastico la velocità effettiva in un contenitore Cosmos o utilizza più spazio di archiviazione, Cosmos DB gestisce in modo trasparente le operazioni di gestione delle partizioni (split, clone, delete) in tutte le aree.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. Indipendente da scalabilità, distribuzione o errori, Cosmos DB continua a fornire una singola immagine del sistema dei dati all'interno dei contenitori, che vengono distribuiti globalmente in un grande numero di aree.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.

Come illustrato nell'immagine seguente, i dati all'interno di un contenitore vengono distribuiti lungo due dimensioni: all'interno di un'area e tra aree, in tutto il mondo:As shown in the following image, the data within a container is distributed along two dimensions - within a region and across regions, worldwide:As shown in the following image, the data within a container is distributed along two dimensions - within a region and across regions, worldwide:

partizioni fisiche

Una partizione fisica viene implementata da un gruppo di repliche, denominato set di repliche.A physical partition is implemented by a group of replicas, called a replica-set. Ogni computer ospita centinaia di repliche che corrispondono a varie partizioni fisiche all'interno di un set fisso di processi, come illustrato nell'immagine precedente.Each machine hosts hundreds of replicas that correspond to various physical partitions within a fixed set of processes as shown in the image above. Le repliche corrispondenti alle partizioni fisiche vengono posizionate in modo dinamico e con carico bilanciato nei computer all'interno di un cluster e nei data center all'interno di un'area.Replicas corresponding to the physical partitions are dynamically placed and load balanced across the machines within a cluster and data centers within a region.

Una replica appartiene in modo univoco a un tenant di Azure Cosmos DB.A replica uniquely belongs to an Azure Cosmos DB tenant. Ogni replica ospita un'istanza del motore di database di Cosmos DB, che gestisce le risorse, nonché gli indici associati.Each replica hosts an instance of Cosmos DB’s database engine, which manages the resources as well as the associated indexes. Il motore di database Cosmos opera su un sistema di tipi basato su atom-record-sequence (ARS).The Cosmos database engine operates on an atom-record-sequence (ARS) based type system. Il motore è agnostico al concetto di schema, sfocando il limite tra la struttura e i valori di istanza dei record.The engine is agnostic to the concept of a schema, blurring the boundary between the structure and instance values of records. Cosmos DB consente di ottenere la completa indipendenza dallo schema attraverso un'efficiente indicizzazione automatica di tutti gli elementi dopo all'inserimento, consentendo agli utenti di eseguire una query dei dati distribuiti a livello globale senza dover gestire schemi o indici.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.

Il motore di database Cosmos è costituito da componenti, tra cui l'implementazione di diverse primitive di coordinamento, runtime del linguaggio, il processore di query e i sottosistemi di archiviazione e indicizzazione responsabili dell'archiviazione transazionale e dell'indicizzazione dei dati, Rispettivamente.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. Per garantire durabilità e disponibilità elevata, il motore di database conserva i dati e l'indice nelle unità SSD e ne esegue la replica, rispettivamente tra le istanze del motore di database all'interno dei set di repliche.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. I tenant più grandi corrispondono a una maggiore scala di velocità effettiva e archiviazione e dispongono di repliche più grandi o più o di entrambe.Larger tenants correspond to higher scale of throughput and storage and have either bigger or more replicas or both. Ogni componente del sistema è completamente asincrono: nessun thread si blocca mai e ognuno esegue operazioni di breve durata senza incorrere in eventuali opzioni di thread non necessarie.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. Limitazione di frequenza e congestione sono sottoposte a plumbing nell'intero stack dal controllo di ammissione a tutti i percorsi I/O.Rate-limiting and back-pressure are plumbed across the entire stack from the admission control to all I/O paths. Il motore di database Cosmos è progettato per sfruttare la concorrenza granulare e per offrire una velocità effettiva elevata mentre si opera in quantità frugali di risorse di sistema.Cosmos database engine is designed to exploit fine-grained concurrency and to deliver high throughput while operating within frugal amounts of system resources.

La distribuzione globale di Cosmos DB si basa su due astrazioni chiave: set di repliche e set di partizioni.Cosmos DB’s global distribution relies on two key abstractions – replica-sets and partition-sets. Un set di repliche è un "mattoncino" modulare per il coordinamento e un set di partizioni è una sovrapposizione dinamica di una o più partizioni fisiche distribuite geograficamente.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. Per comprendere il funzionamento della distribuzione globale, è necessario comprendere queste due chiavi di astrazioni.To understand how global distribution works, we need to understand these two key abstractions.

Set di replicheReplica-sets

Una partizione fisica viene materializzata come un gruppo di repliche con bilanciamento del carico autogestito e dinamico su più domini di errore, denominato set di repliche.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. Questo set implementa collettivamente il protocollo replicato dello stato del computer per rendere i dati all'interno della partizione fisica altamente disponibili, durevoli e coerenti.This set collectively implements the replicated state machine protocol to make the data within the physical partition highly available, durable, and consistent. L'appartenenza al set di repliche N è dinamica, che continua a fluttuare tra NMin e NMax in base agli errori, alle operazioni amministrative e al tempo di rigenerazione/ripristino delle repliche non riuscite.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. In base alle modifiche dell'appartenenza, anche il protocollo della replica riconfigura anche le dimensioni del quorum di lettura e scrittura.Based on the membership changes, the replication protocol also reconfigures the size of read and write quorums. Per distribuire uniformemente la velocità effettiva assegnata a una determinata partizione fisica, vengono impiegate due idee:To uniformly distribute the throughput that is assigned to a given physical partition, we employ two ideas:To uniformly distribute the throughput that is assigned to a given physical partition, we employ two ideas:

  • In primo luogo, il costo di elaborazione delle richieste di scrittura sul leader è superiore al costo di applicazione degli aggiornamenti sul follower.First, the cost of processing the write requests on the leader is higher than the cost of applying the updates on the follower. Di conseguenza, il leader ha in bilancio più risorse di sistema rispetto ai follower.Correspondingly, the leader is budgeted more system resources than the followers.

  • In secondo luogo, per quanto possibile, il quorum di lettura per un livello di coerenza specifico è costituito esclusivamente dalle repliche dei follower.Secondly, as far as possible, the read quorum for a given consistency level is composed exclusively of the follower replicas. A meno che non necessario, sarà possibile evitare di contattare il leader per la gestione delle operazioni di lettura.We avoid contacting the leader for serving reads unless required. Ci avvaliamo di una serie di idee della ricerca condotta sul rapporto di carico e capacità nei sistemi basati sul quorum per i cinque modelli di coerenza supportati da Cosmos DB.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.

Set di partizioniPartition-sets

Un gruppo di partizioni fisiche, una per ognuna delle aree del database Cosmos configurate, è composto per gestire lo stesso set di chiavi replicate in tutte le aree configurate.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. Questa primitiva di coordinamento superiore è denominata set di partizioni, ovvero una sovrapposizione dinamica distribuita geograficamente di partizioni fisiche che gestiscono un determinato set di chiavi.This higher coordination primitive is called a partition-set - a geographically distributed dynamic overlay of physical partitions managing a given set of keys. Mentre l'ambito di una determinata partizione fisica (un set di repliche) è compreso nell'ambito di un cluster, un set di partizioni può estendersi su cluster, data center e aree geografiche, come illustrato nell'immagine seguente: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: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:

Set di partizioni

È possibile considerare un set di partizioni come un "super set di repliche" geograficamente disperso, composto da più set di repliche che dispongono dello stesso numero di chiavi.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. Analogamente a un set di repliche, anche l'appartenenza di un set di partizioni è dinamica: fluttua in base alle operazioni implicite di gestione delle partizioni fisiche per aggiungere/rimuovere nuove partizioni da/da un set di partizioni specificato (ad esempio, quando si esegue la scalabilità orizzontale in un contenitore, si aggiunge/rimuove un'area nel database Cosmos o quando si verificano errori).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). In virtù di avere ciascuna delle partizioni (di un set di partizioni) gestire l'appartenenza del set di partizioni all'interno del proprio set di repliche, l'appartenenza è completamente decentralizzata e a disponibilità elevata.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. Durante la riconfigurazione di un set di partizioni, viene specificata anche la topologia della sovrapposizione tra le partizioni fisiche.During the reconfiguration of a partition-set, the topology of the overlay between physical partitions is also established. La topologia viene selezionata dinamicamente in base al livello di coerenza, alla distanza geografica e alla larghezza di banda di rete disponibile tra le partizioni fisiche di origine e di destinazione.The topology is dynamically selected based on the consistency level, geographical distance, and available network bandwidth between the source and the target physical partitions.

Il servizio consente di configurare i database Cosmos con una singola area di scrittura o con più aree di scrittura e, a seconda della selezione, i set di partizioni sono configurati per accettare le scritture esattamente in una o tutte le aree.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. Il sistema usa un protocollo di consenso annidato e a due livelli: un livello opera all'interno delle repliche di un set di repliche di una partizione fisica accettando le scritture; l'altro opera a livello di un set di partizioni per fornire garanzie di ordinamento complete per tutte scritture sulle quali è stato eseguito il commit all'interno del set di partizioni.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. Questo consenso, annidato e a più livelli, è fondamentale per l'implementazione dei rigorosi contratti di servizio per la disponibilità elevata, nonché per l'implementazione di modelli di coerenza offerti ai client da Cosmos DB.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.

Risoluzione dei conflittiConflict resolution

La progettazione per la propagazione degli aggiornamenti, la risoluzione dei conflitti e il rilevamento della causalità sono ispirate al lavoro preliminare sugli algoritmi epidemici e il sistema Bayou.Our design for the update propagation, conflict resolution, and causality tracking is inspired from the prior work on epidemic algorithms and the Bayou system. Mentre i kernel delle idee rimasti forniscono un pratico riferimento per la comunicazione relativa alla progettazione di sistema di Cosmos DB, sono stati anche sottoposti a una significativa trasformazione una volta applicati al sistema di Cosmos DB.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. Ciò era necessario, perché i sistemi precedenti non erano stati progettati né con la governance delle risorse né con la scala a cui Cosmos DB deve operare, né per fornire le capacità (ad esempio, coerenza di sbandata delimitata) e la rigorosa e contratti di servizio completi che Cosmos DB offre ai propri clienti.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.

È importante ricordare che un set di partizioni viene distribuito tra più aree e segue il protocollo di replica Cosmos DB (multimaster) per replicare i dati tra le partizioni fisiche che comprendono uno specifico set di partizioni.Recall that a partition-set is distributed across multiple regions and follows Cosmos DBs (multi-master) replication protocol to replicate the data among the physical partitions comprising a given partition-set. Ogni partizione fisica (di un set di partizioni) in genere accetta le scritture e gestisce le letture dei client locali di una determinata area.Each physical partition (of a partition-set) accepts writes and serves reads typically to the clients that are local to that region. Le scritture accettate da una partizione fisica all'interno di un'area vengono memorizzate in modo duraturo e rese altamente disponibili all'interno della partizione fisica prima di essere confermate al 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. Si tratta di operazioni di scrittura provvisorie e vengono propagate alle altre partizioni fisiche all'interno del set di partizioni usando un canale antientropia.These are tentative writes and are propagated to other physical partitions within the partition-set using an anti-entropy channel. I client possono richiedere operazioni di scrittura provvisori o sulle quali è stato eseguito il commit, passando un'intestazione di richiesta.Clients can request either tentative or committed writes by passing a request header. La propagazione antientropia (inclusa la frequenza della propagazione) è dinamica e basata sulla topologia del set di partizioni, la prossimità dell'area delle partizioni fisiche e il livello di coerenza configurato.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. All'interno di un set di partizioni, Cosmos DB segue uno schema di commit primario con una partizione arbiter selezionata dinamicamente.Within a partition-set, Cosmos DB follows a primary commit scheme with a dynamically selected arbiter partition. La selezione arbiter è dinamica ed è parte integrante della riconfigurazione del set di partizioni basata sulla topologia della sovrimpressione.The arbiter selection is dynamic and is an integral part of the reconfiguration of the partition-set based on the topology of the overlay. Le operazioni di scrittura (inclusi multi-row/in batch gli aggiornamenti) in cui è stato eseguito il commit sono garantite per essere ordinate.The committed writes (including multi-row/batched updates) are guaranteed to be ordered.

Vengono usati orologi con vettori codificati (contenenti l'ID dell'area e la logica dell'orologio corrispondente a ogni livello di consenso rispettivamente, al set di repliche e al set di partizioni) per il rilevamento della causalità e della versione vettori per identificare e risolvere conflitti di aggiornamento.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. La topologia e l'algoritmo di selezione peer sono progettati per garantire risorse di archiviazione predefinite e minime e un sovraccarico di rete minimo dei vettori della versione.The topology and the peer selection algorithm are designed to ensure fixed and minimal storage and minimal network overhead of version vectors. L'algoritmo garantisce la rigida proprietà di convergenza.The algorithm guarantees the strict convergence property.

Per i database Cosmos configurati con più aree di scrittura, il sistema offre agli sviluppatori una serie di criteri di risoluzione dei conflitti automatica e flessibile, che include: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), che, per impostazione predefinita, utilizza una proprietà timestamp definita dal sistema (basata sul protocollo di clock di sincronizzazione dell'ora).Last-Write-Wins (LWW), which, by default, uses a system-defined timestamp property (which is based on the time-synchronization clock protocol). Cosmos DB consente anche di specificare qualsiasi altra proprietà numerica personalizzata da usare per la risoluzione dei conflitti.Cosmos DB also allows you to specify any other custom numerical property to be used for conflict resolution.
  • Criteri di risoluzione dei conflitti definiti dall'applicazione (personalizzati) (espressi tramite procedure di unione), progettati per la riconciliazione semantica dei conflitti da parte dell'applicazione.Application-defined (Custom) conflict resolution policy (expressed via merge procedures), which is designed for application-defined semantics reconciliation of conflicts. Queste procedure vengono richiamate quando viene rilevato un conflitto tra scrittura e scrittura a cura di una transazione di database, sul lato server.These procedures get invoked upon detection of the write-write conflicts under the auspices of a database transaction on the server side. Il sistema fornisce esattamente una garanzia per l'esecuzione di una procedura di unione come parte del protocollo di impegno.The system provides exactly once guarantee for the execution of a merge procedure as a part of the commitment protocol. Sono disponibili diversi esempi di risoluzione dei conflitti con cui giocare.There are several conflict resolution samples available for you to play with.

Modelli di coerenzaConsistency Models

Sia che si configuri il database Cosmos con una o più aree di scrittura, è possibile scegliere tra i cinque modelli di coerenza ben definiti.Whether you configure your Cosmos database with a single or multiple write regions, you can choose from the five well-defined consistency models. Con più aree di scrittura, di seguito sono riportati alcuni aspetti importanti dei livelli di coerenza:With multiple write regions, the following are a few notable aspects of the consistency levels:With multiple write regions, the following are a few notable aspects of the consistency levels:

La coerenza di stantio delimitata garantisce che tutte le letture saranno all'interno di prefissi K o T secondi dall'ultima scrittura in una qualsiasi delle regioni.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. Inoltre, le letture con coerenza di stantio delimitata sono garantite per essere monotono e con garanzie di prefisso coerenti.Furthermore, reads with bounded staleness consistency are guaranteed to be monotonic and with consistent prefix guarantees. Il protocollo antientropia è soggetto a limitazioni di frequenza e assicura che i prefissi non vengono accumulati e che non venga applicata la congestione nelle operazioni di scrittura.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. La coerenza della sessione garantisce la lettura monotonica, la scrittura monotonica, la lettura delle scritture, la lettura che segue la lettura e garanzie di prefisso coerenti, in tutto il mondo.Session consistency guarantees monotonic read, monotonic write, read your own writes, write follows read, and consistent prefix guarantees, worldwide. Per i database configurati con coerenza elevata, i vantaggi (bassa latenza di scrittura, disponibilità elevata di scrittura) di più aree di scrittura non sono applicabili, a causa della replica sincrona tra aree.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.

La semantica dei cinque modelli di coerenza in Cosmos DB è descritta quie matematicamente descritta utilizzando le specifiche TLA di alto livello qui.The semantics of the five consistency models in Cosmos DB are described here, and mathematically described using a high-level TLA+ specifications here.

Passaggi successiviNext steps

Scoprire come configurare la distribuzione globale utilizzando i seguenti articoli:Next learn how to configure global distribution by using the following articles: